Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 92294 invoked from network); 24 Oct 2007 02:44:02 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 24 Oct 2007 02:44:02 -0000 Received: (qmail 45584 invoked by uid 500); 24 Oct 2007 02:43:49 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 45514 invoked by uid 500); 24 Oct 2007 02:43:49 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 45503 invoked by uid 99); 24 Oct 2007 02:43:49 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 23 Oct 2007 19:43:49 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 24 Oct 2007 02:43:48 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id D46491A9842; Tue, 23 Oct 2007 19:43:28 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r587751 [3/5] - in /cocoon/trunk/core: cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/el/ cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/el/objectmodel/ c... Date: Wed, 24 Oct 2007 02:42:12 -0000 To: cvs@cocoon.apache.org From: vgritsenko@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071024024328.D46491A9842@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/source/util/SourceUtil.java URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/source/util/SourceUtil.java?rev=587751&r1=587750&r2=587751&view=diff ============================================================================== --- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/source/util/SourceUtil.java (original) +++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/source/util/SourceUtil.java Tue Oct 23 19:41:36 2007 @@ -1,639 +1,639 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.cocoon.components.source.util; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.apache.avalon.framework.parameters.Parameters; -import org.apache.avalon.framework.service.ServiceException; -import org.apache.avalon.framework.service.ServiceManager; -import org.apache.cocoon.ProcessingException; -import org.apache.cocoon.ResourceNotFoundException; -import org.apache.cocoon.components.source.URLRewriter; -import org.apache.cocoon.util.NetUtils; -import org.apache.cocoon.xml.IncludeXMLConsumer; -import org.apache.cocoon.xml.dom.DOMBuilder; -import org.apache.excalibur.source.Source; -import org.apache.excalibur.source.SourceException; -import org.apache.excalibur.source.SourceNotFoundException; -import org.apache.excalibur.source.SourceParameters; -import org.apache.excalibur.source.SourceResolver; -import org.apache.cocoon.core.xml.SAXParser; -import org.apache.excalibur.xml.sax.XMLizable; -import org.apache.excalibur.xmlizer.XMLizer; -import org.apache.regexp.RE; -import org.apache.regexp.RECompiler; -import org.apache.regexp.REProgram; -import org.apache.regexp.RESyntaxException; -import org.w3c.dom.Document; -import org.xml.sax.ContentHandler; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -/** - * This class contains some utility methods for the source resolving. - * - * @version $Id$ - */ -public abstract class SourceUtil { - - protected static REProgram uripattern; - - static { - try { - uripattern = new RECompiler().compile("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"); - } catch (RESyntaxException e) { - // Should not happen - throw new RuntimeException("Error parsing regular expression.", e); - } - } - - /** - * Generates SAX events from the given source with possible URL rewriting. - * - *

NOTE: If the implementation can produce lexical events, - * care should be taken that handler can actually - * directly implement the LexicalHandler interface!

- * - * @param source the data - * @throws ProcessingException if no suitable converter is found - */ - static public void toSAX(ServiceManager manager, - Source source, - ContentHandler handler, - Parameters typeParameters, - boolean filterDocumentEvent) - throws SAXException, IOException, ProcessingException { - // Test for url rewriting - if (typeParameters != null - && typeParameters.getParameter(URLRewriter.PARAMETER_MODE, null) != null) { - handler = new URLRewriter(typeParameters, handler); - } - - String mimeTypeHint = null; - if (typeParameters != null) { - mimeTypeHint = typeParameters.getParameter("mime-type", mimeTypeHint); - } - if (filterDocumentEvent) { - IncludeXMLConsumer filter = new IncludeXMLConsumer(handler); - toSAX(manager, source, mimeTypeHint, filter); - } else { - toSAX(manager, source, mimeTypeHint, handler); - } - } - - /** - * Generates SAX events from the XMLizable and handle SAXException. - * - * @param source the data - */ - public static void toSAX(XMLizable source, ContentHandler handler) throws SAXException, IOException, ProcessingException { - try { - source.toSAX(handler); - } catch (SAXException e) { - // Unwrap ProcessingException, IOException, and extreme cases of SAXExceptions. - // Handle SourceException. - // See also handleSAXException - final Exception cause = e.getException(); - if (cause != null) { - if (cause instanceof SourceException) { - throw handle((SourceException) cause); - } - if (cause instanceof ProcessingException) { - throw (ProcessingException) cause; - } - if (cause instanceof IOException) { - throw (IOException) cause; - } - if (cause instanceof SAXException) { - throw (SAXException) cause; - } - } - - // Throw original SAX exception - throw e; - } - } - - /** - * Generates SAX events from the given source. - * - *

NOTE: If the implementation can produce lexical events, - * care should be taken that handler can actually - * directly implement the LexicalHandler interface!

- * - * @param source the data - * @throws ProcessingException if no suitable converter is found - */ - static public void toSAX(ServiceManager manager, - Source source, - ContentHandler handler) - throws SAXException, IOException, ProcessingException { - toSAX(manager, source, null, handler); - } - - /** - * Generates SAX events from the given source by using XMLizer. - * - *

NOTE: If the implementation can produce lexical events, - * care should be taken that handler can actually - * directly implement the LexicalHandler interface!

- * - * @param source the data - * @throws ProcessingException if no suitable converter is found - */ - public static void toSAX(ServiceManager manager, - Source source, - String mimeTypeHint, - ContentHandler handler) - throws SAXException, IOException, ProcessingException { - if (source instanceof XMLizable) { - toSAX((XMLizable) source, handler); - } else { - String mimeType = source.getMimeType(); - if (null == mimeType) { - mimeType = mimeTypeHint; - } - - XMLizer xmlizer = null; - try { - xmlizer = (XMLizer) manager.lookup(XMLizer.ROLE); - xmlizer.toSAX(source.getInputStream(), - mimeType, - source.getURI(), - handler); - } catch (SourceException e) { - throw SourceUtil.handle(e); - } catch (ServiceException e) { - throw new ProcessingException("Exception during streaming source.", e); - } finally { - manager.release(xmlizer); - } - } - } - - /** - * Generates SAX events from the given source by using XMLizer. - * - *

NOTE: If the implementation can produce lexical events, - * care should be taken that handler can actually - * directly implement the LexicalHandler interface!

- * - * @param source the data - * @throws ProcessingException if no suitable converter is found - */ - public static void toSAX(XMLizer xmlizer, - Source source, - String mimeTypeHint, - ContentHandler handler) - throws SAXException, IOException, ProcessingException { - if (source instanceof XMLizable) { - toSAX((XMLizable) source, handler); - } else { - String mimeType = source.getMimeType(); - if (null == mimeType) { - mimeType = mimeTypeHint; - } - try { - xmlizer.toSAX(source.getInputStream(), - mimeType, - source.getURI(), - handler); - } catch (SourceException e) { - throw SourceUtil.handle(e); - } - } - } - - /** - * Generates character SAX events from the given source. - * - * @param source The data - * @param encoding The character encoding of the data - */ - public static void toCharacters(Source source, String encoding, ContentHandler handler) throws SAXException, IOException, ProcessingException { - try { - Reader r = encoding == null? - new InputStreamReader(source.getInputStream()): - new InputStreamReader(source.getInputStream(), encoding); - - int len; - char[] chr = new char[4096]; - try { - while ((len = r.read(chr)) > 0) { - handler.characters(chr, 0, len); - } - } finally { - r.close(); - } - } catch (SAXException e) { - handleSAXException(source.getURI(), e); - } - } - - /** - * Generates SAX events from the given source by parsing it. - * - *

NOTE: If the implementation can produce lexical events, - * care should be taken that handler can actually - * directly implement the LexicalHandler interface!

- * - * @param source the data - * @throws ProcessingException if no suitable converter is found - * @deprecated use {@link #parse(SAXParser, Source, ContentHandler)} instead - */ - public static void parse(ServiceManager manager, Source source, ContentHandler handler) throws SAXException, IOException, ProcessingException { - if (source instanceof XMLizable) { - toSAX((XMLizable) source, handler); - } else { - org.apache.excalibur.xml.sax.SAXParser parser = null; - try { - parser = (org.apache.excalibur.xml.sax.SAXParser) manager.lookup(org.apache.excalibur.xml.sax.SAXParser.ROLE); - parser.parse(getInputSource(source), handler); - } catch (SourceException e) { - throw SourceUtil.handle(e); - } catch (ServiceException e) { - throw new ProcessingException("Exception during parsing source.", e); - } finally { - manager.release(parser); - } - } - } - - /** - * Generates SAX events from the given source by parsing it. - * - *

NOTE: If the implementation can produce lexical events, - * care should be taken that handler can actually - * directly implement the LexicalHandler interface!

- * - * @param source the data - * @throws ProcessingException if error during processing source data occurs - */ - public static void parse(SAXParser parser, Source source, ContentHandler handler) throws SAXException, IOException, ProcessingException { - if (source instanceof XMLizable) { - toSAX((XMLizable) source, handler); - } else { - try { - parser.parse(getInputSource(source), handler); - } catch (SourceException e) { - throw SourceUtil.handle(e); - } - } - } - - - /** - * Generates a DOM from the given source - * @param source The data - * - * @return Created DOM document. - * - * @throws IOException If a io exception occurs. - * @throws ProcessingException if no suitable converter is found - * @throws SAXException If a SAX exception occurs. - */ - public static Document toDOM(ServiceManager manager, Source source) throws SAXException, IOException, ProcessingException { - DOMBuilder builder = new DOMBuilder(); - - toSAX(manager, source, null, builder); - - Document document = builder.getDocument(); - if (document == null) { - throw new ProcessingException("Could not build DOM for '" + - source.getURI() + "'"); - } - - return document; - } - - /** - * Generates a DOM from the given source - * @param source The data - * - * @return Created DOM document. - * - * @throws IOException If a io exception occurs. - * @throws ProcessingException if no suitable converter is found - * @throws SAXException If a SAX exception occurs. - */ - public static Document toDOM(ServiceManager manager, String mimeTypeHint, Source source) throws SAXException, IOException, ProcessingException { - DOMBuilder builder = new DOMBuilder(); - - toSAX(manager, source, mimeTypeHint, builder); - - Document document = builder.getDocument(); - if (document == null) { - throw new ProcessingException("Could not build DOM for '" + - source.getURI() + "'"); - } - - return document; - } - - /** - * Make a ProcessingException from a SourceException. - * If the exception is a SourceNotFoundException then a - * ResourceNotFoundException is thrown. - * - * @param se Source exception - * @return Created processing exception. - */ - public static ProcessingException handle(SourceException se) { - if (se instanceof SourceNotFoundException) { - return new ResourceNotFoundException("Resource not found.", se); - } - return new ProcessingException("Exception during source resolving.", - se); - } - - /** - * Make a ProcessingException from a SourceException. - * If the exception is a SourceNotFoundException then a - * ResourceNotFoundException is thrown. - * - * @param message Additional exception message. - * @param se Source exception. - * @return Created processing exception. - */ - public static ProcessingException handle(String message, SourceException se) { - if (se instanceof SourceNotFoundException) { - return new ResourceNotFoundException(message, se); - } - return new ProcessingException(message, se); - } - - /** - * Handle SAXException catched in Generator's generate method. - * - * @param source Generator's source - * @param e SAXException happened in the generator's generate method. - */ - public static void handleSAXException(String source, SAXException e) throws ProcessingException, IOException, SAXException { - final Exception cause = e.getException(); - if (cause != null) { - // Unwrap ProcessingException, IOException, and extreme cases of SAXExceptions. - // Handle SourceException. - // See also toSax(XMLizable, ContentHandler) - if (cause instanceof SourceException) { - throw handle((SourceException) cause); - } - if (cause instanceof ProcessingException) { - throw (ProcessingException) cause; - } - if (cause instanceof IOException) { - throw (IOException) cause; - } - if (cause instanceof SAXException) { - throw (SAXException) cause; - } - throw new ProcessingException("Could not read resource " + - source, cause); - } - throw e; - } - - /** - * Get an InputSource object - * - * @param source Source. - * - * @return Input stream of the source. - * - * @throws IOException If a io exception occurs. - * @throws ProcessingException If an exception occurs during - * processing. - */ - public static InputSource getInputSource(Source source) throws IOException, ProcessingException { - try { - final InputSource newObject = new InputSource(source.getInputStream()); - - newObject.setSystemId(source.getURI()); - return newObject; - } catch (SourceException se) { - throw handle(se); - } - } - - /** - * Get a Source object - * - * @param uri URI of the source. - * @param typeParameters Type of Source query. Currently, only - * method parameter (value typically GET or - * POST) is recognized. May be null. - * @param resourceParameters Parameters of the source. May be null - * @param resolver Resolver for the source. - * - * @return The resolved source. - * - * @throws IOException If a io exception occurs. - * @throws SAXException If a SAX exception occurs. - * @throws SourceException If the source an exception throws. - */ - public static Source getSource(String uri, Parameters typeParameters, SourceParameters resourceParameters, SourceResolver resolver) throws IOException, SAXException, SourceException { - - // first step: encode parameters which are already appended to the url - int queryPos = uri.indexOf('?'); - if (queryPos != -1) { - String queryString = uri.substring(queryPos+1); - SourceParameters queries = new SourceParameters(queryString); - - if (queries.hasParameters()) { - StringBuffer buffer = new StringBuffer(uri.substring(0, queryPos)); - char separator = '?'; - - Iterator i = queries.getParameterNames(); - while (i.hasNext()) { - String current = (String) i.next(); - Iterator values = queries.getParameterValues(current); - while (values.hasNext()) { - buffer.append(separator) - .append(current) - .append('=') - .append(NetUtils.encode((String) values.next(), "utf-8")); - separator = '&'; - } - } - uri = buffer.toString(); - } - } - - String method = ((typeParameters!=null) - ? typeParameters.getParameter("method", "GET") - : "GET"); - if (method.equalsIgnoreCase("POST") && - (resourceParameters == null || - !resourceParameters.hasParameters())) { - method = "GET"; - } - - if (uri.startsWith("cocoon:") && resourceParameters != null && - resourceParameters.hasParameters()) { - int pos = uri.indexOf(";jsessionid="); - - StringBuffer buf; - if (pos == -1) { - buf = new StringBuffer(uri); - } else { - buf = new StringBuffer(uri.substring(0, pos)); - } - buf.append(((uri.indexOf('?') == -1) ? '?' : '&')); - buf.append(resourceParameters.getEncodedQueryString()); - uri = buf.toString(); - } - - Map resolverParameters = new HashMap(); - resolverParameters.put(SourceResolver.METHOD, method); - if (typeParameters != null) { - String encoding = typeParameters.getParameter("encoding", - System.getProperty("file.encoding", "ISO-8859-1")); - if (encoding != null && !"".equals(encoding)) { - resolverParameters.put(SourceResolver.URI_ENCODING, encoding); - } - } - resolverParameters.put(SourceResolver.URI_PARAMETERS, - resourceParameters); - - return resolver.resolveURI(uri, null, resolverParameters); - } - - /** - * Return the scheme of a URI. Just as there are many different methods - * of access to resources, there are a variety of schemes for identifying - * such resources. - * (see RFC 2396). - * - * @param uri Uniform resource identifier. - * - * @return Scheme of the URI. - */ - public static String getScheme(String uri) { - RE re = new RE(uripattern); - if (re.match(uri)) { - return re.getParen(2); - } else { - throw new IllegalArgumentException("'" + uri + - "' is not a correct URI"); - } - } - - /** - * Return the authority of a URI. This authority is - * typically defined by an Internet-based server or a scheme-specific - * registry of naming authorities - * (see RFC 2396). - * - * @param uri Uniform resource identifier. - * - * @return Scheme of the URI. - */ - public static String getAuthority(String uri) { - RE re = new RE(uripattern); - if (re.match(uri)) { - return re.getParen(4); - } else { - throw new IllegalArgumentException("'" + uri + - "' is not a correct URI"); - } - } - - /** - * Return the path of a URI. The path contains data, specific to the - * authority (or the scheme if there is no authority component), - * identifying the resource within the scope of that scheme and authority - * (see RFC 2396). - * - * @param uri Uniform resource identifier. - * - * @return Path of the URI. - */ - public static String getPath(String uri) { - RE re = new RE(uripattern); - if (re.match(uri)) { - return re.getParen(5); - } else { - throw new IllegalArgumentException("'" + uri + - "' is not a correct URI"); - } - } - - /** - * Return the path of a URI, if the URI can't contains a authority. - * This implementation differ to the RFC 2396. - * - * @param uri Uniform resource identifier. - * - * @return Path of the URI. - */ - public static String getPathWithoutAuthority(String uri) { - RE re = new RE(uripattern); - if (re.match(uri)) { - return re.getParen(4) + re.getParen(5); - } else { - throw new IllegalArgumentException("'" + uri + - "' is not a correct URI"); - } - } - - /** - * Return the query of a URI. The query is a string of information to - * be interpreted by the resource - * (see RFC 2396). - * - * @param uri Uniform resource identifier. - * - * @return Query of the URI. - */ - public static String getQuery(String uri) { - RE re = new RE(uripattern); - if (re.match(uri)) { - return re.getParen(7); - } else { - throw new IllegalArgumentException("'" + uri + - "' is not a correct URI"); - } - } - - /** - * Return the fragment of a URI. When a URI reference is used to perform - * a retrieval action on the identified resource, the optional fragment - * identifier, consists of additional reference information to be - * interpreted by the user agent after the retrieval action has been - * successfully completed - * (see RFC 2396). - * - * @param uri Uniform resource identifier. - * - * @return Fragment of the URI. - */ - public static String getFragment(String uri) { - RE re = new RE(uripattern); - if (re.match(uri)) { - return re.getParen(9); - } else { - throw new IllegalArgumentException("'" + uri + - "' is not a correct URI"); - } - } - -} +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cocoon.components.source.util; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.apache.avalon.framework.parameters.Parameters; +import org.apache.avalon.framework.service.ServiceException; +import org.apache.avalon.framework.service.ServiceManager; +import org.apache.cocoon.ProcessingException; +import org.apache.cocoon.ResourceNotFoundException; +import org.apache.cocoon.components.source.URLRewriter; +import org.apache.cocoon.util.NetUtils; +import org.apache.cocoon.xml.IncludeXMLConsumer; +import org.apache.cocoon.xml.dom.DOMBuilder; +import org.apache.excalibur.source.Source; +import org.apache.excalibur.source.SourceException; +import org.apache.excalibur.source.SourceNotFoundException; +import org.apache.excalibur.source.SourceParameters; +import org.apache.excalibur.source.SourceResolver; +import org.apache.cocoon.core.xml.SAXParser; +import org.apache.excalibur.xml.sax.XMLizable; +import org.apache.excalibur.xmlizer.XMLizer; +import org.apache.regexp.RE; +import org.apache.regexp.RECompiler; +import org.apache.regexp.REProgram; +import org.apache.regexp.RESyntaxException; +import org.w3c.dom.Document; +import org.xml.sax.ContentHandler; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +/** + * This class contains some utility methods for the source resolving. + * + * @version $Id$ + */ +public abstract class SourceUtil { + + protected static REProgram uripattern; + + static { + try { + uripattern = new RECompiler().compile("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"); + } catch (RESyntaxException e) { + // Should not happen + throw new RuntimeException("Error parsing regular expression.", e); + } + } + + /** + * Generates SAX events from the given source with possible URL rewriting. + * + *

NOTE: If the implementation can produce lexical events, + * care should be taken that handler can actually + * directly implement the LexicalHandler interface!

+ * + * @param source the data + * @throws ProcessingException if no suitable converter is found + */ + static public void toSAX(ServiceManager manager, + Source source, + ContentHandler handler, + Parameters typeParameters, + boolean filterDocumentEvent) + throws SAXException, IOException, ProcessingException { + // Test for url rewriting + if (typeParameters != null + && typeParameters.getParameter(URLRewriter.PARAMETER_MODE, null) != null) { + handler = new URLRewriter(typeParameters, handler); + } + + String mimeTypeHint = null; + if (typeParameters != null) { + mimeTypeHint = typeParameters.getParameter("mime-type", mimeTypeHint); + } + if (filterDocumentEvent) { + IncludeXMLConsumer filter = new IncludeXMLConsumer(handler); + toSAX(manager, source, mimeTypeHint, filter); + } else { + toSAX(manager, source, mimeTypeHint, handler); + } + } + + /** + * Generates SAX events from the XMLizable and handle SAXException. + * + * @param source the data + */ + public static void toSAX(XMLizable source, ContentHandler handler) throws SAXException, IOException, ProcessingException { + try { + source.toSAX(handler); + } catch (SAXException e) { + // Unwrap ProcessingException, IOException, and extreme cases of SAXExceptions. + // Handle SourceException. + // See also handleSAXException + final Exception cause = e.getException(); + if (cause != null) { + if (cause instanceof SourceException) { + throw handle((SourceException) cause); + } + if (cause instanceof ProcessingException) { + throw (ProcessingException) cause; + } + if (cause instanceof IOException) { + throw (IOException) cause; + } + if (cause instanceof SAXException) { + throw (SAXException) cause; + } + } + + // Throw original SAX exception + throw e; + } + } + + /** + * Generates SAX events from the given source. + * + *

NOTE: If the implementation can produce lexical events, + * care should be taken that handler can actually + * directly implement the LexicalHandler interface!

+ * + * @param source the data + * @throws ProcessingException if no suitable converter is found + */ + static public void toSAX(ServiceManager manager, + Source source, + ContentHandler handler) + throws SAXException, IOException, ProcessingException { + toSAX(manager, source, null, handler); + } + + /** + * Generates SAX events from the given source by using XMLizer. + * + *

NOTE: If the implementation can produce lexical events, + * care should be taken that handler can actually + * directly implement the LexicalHandler interface!

+ * + * @param source the data + * @throws ProcessingException if no suitable converter is found + */ + public static void toSAX(ServiceManager manager, + Source source, + String mimeTypeHint, + ContentHandler handler) + throws SAXException, IOException, ProcessingException { + if (source instanceof XMLizable) { + toSAX((XMLizable) source, handler); + } else { + String mimeType = source.getMimeType(); + if (null == mimeType) { + mimeType = mimeTypeHint; + } + + XMLizer xmlizer = null; + try { + xmlizer = (XMLizer) manager.lookup(XMLizer.ROLE); + xmlizer.toSAX(source.getInputStream(), + mimeType, + source.getURI(), + handler); + } catch (SourceException e) { + throw SourceUtil.handle(e); + } catch (ServiceException e) { + throw new ProcessingException("Exception during streaming source.", e); + } finally { + manager.release(xmlizer); + } + } + } + + /** + * Generates SAX events from the given source by using XMLizer. + * + *

NOTE: If the implementation can produce lexical events, + * care should be taken that handler can actually + * directly implement the LexicalHandler interface!

+ * + * @param source the data + * @throws ProcessingException if no suitable converter is found + */ + public static void toSAX(XMLizer xmlizer, + Source source, + String mimeTypeHint, + ContentHandler handler) + throws SAXException, IOException, ProcessingException { + if (source instanceof XMLizable) { + toSAX((XMLizable) source, handler); + } else { + String mimeType = source.getMimeType(); + if (null == mimeType) { + mimeType = mimeTypeHint; + } + try { + xmlizer.toSAX(source.getInputStream(), + mimeType, + source.getURI(), + handler); + } catch (SourceException e) { + throw SourceUtil.handle(e); + } + } + } + + /** + * Generates character SAX events from the given source. + * + * @param source The data + * @param encoding The character encoding of the data + */ + public static void toCharacters(Source source, String encoding, ContentHandler handler) throws SAXException, IOException, ProcessingException { + try { + Reader r = encoding == null? + new InputStreamReader(source.getInputStream()): + new InputStreamReader(source.getInputStream(), encoding); + + int len; + char[] chr = new char[4096]; + try { + while ((len = r.read(chr)) > 0) { + handler.characters(chr, 0, len); + } + } finally { + r.close(); + } + } catch (SAXException e) { + handleSAXException(source.getURI(), e); + } + } + + /** + * Generates SAX events from the given source by parsing it. + * + *

NOTE: If the implementation can produce lexical events, + * care should be taken that handler can actually + * directly implement the LexicalHandler interface!

+ * + * @param source the data + * @throws ProcessingException if no suitable converter is found + * @deprecated use {@link #parse(SAXParser, Source, ContentHandler)} instead + */ + public static void parse(ServiceManager manager, Source source, ContentHandler handler) throws SAXException, IOException, ProcessingException { + if (source instanceof XMLizable) { + toSAX((XMLizable) source, handler); + } else { + org.apache.excalibur.xml.sax.SAXParser parser = null; + try { + parser = (org.apache.excalibur.xml.sax.SAXParser) manager.lookup(org.apache.excalibur.xml.sax.SAXParser.ROLE); + parser.parse(getInputSource(source), handler); + } catch (SourceException e) { + throw SourceUtil.handle(e); + } catch (ServiceException e) { + throw new ProcessingException("Exception during parsing source.", e); + } finally { + manager.release(parser); + } + } + } + + /** + * Generates SAX events from the given source by parsing it. + * + *

NOTE: If the implementation can produce lexical events, + * care should be taken that handler can actually + * directly implement the LexicalHandler interface!

+ * + * @param source the data + * @throws ProcessingException if error during processing source data occurs + */ + public static void parse(SAXParser parser, Source source, ContentHandler handler) throws SAXException, IOException, ProcessingException { + if (source instanceof XMLizable) { + toSAX((XMLizable) source, handler); + } else { + try { + parser.parse(getInputSource(source), handler); + } catch (SourceException e) { + throw SourceUtil.handle(e); + } + } + } + + + /** + * Generates a DOM from the given source + * @param source The data + * + * @return Created DOM document. + * + * @throws IOException If a io exception occurs. + * @throws ProcessingException if no suitable converter is found + * @throws SAXException If a SAX exception occurs. + */ + public static Document toDOM(ServiceManager manager, Source source) throws SAXException, IOException, ProcessingException { + DOMBuilder builder = new DOMBuilder(); + + toSAX(manager, source, null, builder); + + Document document = builder.getDocument(); + if (document == null) { + throw new ProcessingException("Could not build DOM for '" + + source.getURI() + "'"); + } + + return document; + } + + /** + * Generates a DOM from the given source + * @param source The data + * + * @return Created DOM document. + * + * @throws IOException If a io exception occurs. + * @throws ProcessingException if no suitable converter is found + * @throws SAXException If a SAX exception occurs. + */ + public static Document toDOM(ServiceManager manager, String mimeTypeHint, Source source) throws SAXException, IOException, ProcessingException { + DOMBuilder builder = new DOMBuilder(); + + toSAX(manager, source, mimeTypeHint, builder); + + Document document = builder.getDocument(); + if (document == null) { + throw new ProcessingException("Could not build DOM for '" + + source.getURI() + "'"); + } + + return document; + } + + /** + * Make a ProcessingException from a SourceException. + * If the exception is a SourceNotFoundException then a + * ResourceNotFoundException is thrown. + * + * @param se Source exception + * @return Created processing exception. + */ + public static ProcessingException handle(SourceException se) { + if (se instanceof SourceNotFoundException) { + return new ResourceNotFoundException("Resource not found.", se); + } + return new ProcessingException("Exception during source resolving.", + se); + } + + /** + * Make a ProcessingException from a SourceException. + * If the exception is a SourceNotFoundException then a + * ResourceNotFoundException is thrown. + * + * @param message Additional exception message. + * @param se Source exception. + * @return Created processing exception. + */ + public static ProcessingException handle(String message, SourceException se) { + if (se instanceof SourceNotFoundException) { + return new ResourceNotFoundException(message, se); + } + return new ProcessingException(message, se); + } + + /** + * Handle SAXException catched in Generator's generate method. + * + * @param source Generator's source + * @param e SAXException happened in the generator's generate method. + */ + public static void handleSAXException(String source, SAXException e) throws ProcessingException, IOException, SAXException { + final Exception cause = e.getException(); + if (cause != null) { + // Unwrap ProcessingException, IOException, and extreme cases of SAXExceptions. + // Handle SourceException. + // See also toSax(XMLizable, ContentHandler) + if (cause instanceof SourceException) { + throw handle((SourceException) cause); + } + if (cause instanceof ProcessingException) { + throw (ProcessingException) cause; + } + if (cause instanceof IOException) { + throw (IOException) cause; + } + if (cause instanceof SAXException) { + throw (SAXException) cause; + } + throw new ProcessingException("Could not read resource " + + source, cause); + } + throw e; + } + + /** + * Get an InputSource object + * + * @param source Source. + * + * @return Input stream of the source. + * + * @throws IOException If a io exception occurs. + * @throws ProcessingException If an exception occurs during + * processing. + */ + public static InputSource getInputSource(Source source) throws IOException, ProcessingException { + try { + final InputSource newObject = new InputSource(source.getInputStream()); + + newObject.setSystemId(source.getURI()); + return newObject; + } catch (SourceException se) { + throw handle(se); + } + } + + /** + * Get a Source object + * + * @param uri URI of the source. + * @param typeParameters Type of Source query. Currently, only + * method parameter (value typically GET or + * POST) is recognized. May be null. + * @param resourceParameters Parameters of the source. May be null + * @param resolver Resolver for the source. + * + * @return The resolved source. + * + * @throws IOException If a io exception occurs. + * @throws SAXException If a SAX exception occurs. + * @throws SourceException If the source an exception throws. + */ + public static Source getSource(String uri, Parameters typeParameters, SourceParameters resourceParameters, SourceResolver resolver) throws IOException, SAXException, SourceException { + + // first step: encode parameters which are already appended to the url + int queryPos = uri.indexOf('?'); + if (queryPos != -1) { + String queryString = uri.substring(queryPos+1); + SourceParameters queries = new SourceParameters(queryString); + + if (queries.hasParameters()) { + StringBuffer buffer = new StringBuffer(uri.substring(0, queryPos)); + char separator = '?'; + + Iterator i = queries.getParameterNames(); + while (i.hasNext()) { + String current = (String) i.next(); + Iterator values = queries.getParameterValues(current); + while (values.hasNext()) { + buffer.append(separator) + .append(current) + .append('=') + .append(NetUtils.encode((String) values.next(), "utf-8")); + separator = '&'; + } + } + uri = buffer.toString(); + } + } + + String method = ((typeParameters!=null) + ? typeParameters.getParameter("method", "GET") + : "GET"); + if (method.equalsIgnoreCase("POST") && + (resourceParameters == null || + !resourceParameters.hasParameters())) { + method = "GET"; + } + + if (uri.startsWith("cocoon:") && resourceParameters != null && + resourceParameters.hasParameters()) { + int pos = uri.indexOf(";jsessionid="); + + StringBuffer buf; + if (pos == -1) { + buf = new StringBuffer(uri); + } else { + buf = new StringBuffer(uri.substring(0, pos)); + } + buf.append(((uri.indexOf('?') == -1) ? '?' : '&')); + buf.append(resourceParameters.getEncodedQueryString()); + uri = buf.toString(); + } + + Map resolverParameters = new HashMap(); + resolverParameters.put(SourceResolver.METHOD, method); + if (typeParameters != null) { + String encoding = typeParameters.getParameter("encoding", + System.getProperty("file.encoding", "ISO-8859-1")); + if (encoding != null && !"".equals(encoding)) { + resolverParameters.put(SourceResolver.URI_ENCODING, encoding); + } + } + resolverParameters.put(SourceResolver.URI_PARAMETERS, + resourceParameters); + + return resolver.resolveURI(uri, null, resolverParameters); + } + + /** + * Return the scheme of a URI. Just as there are many different methods + * of access to resources, there are a variety of schemes for identifying + * such resources. + * (see RFC 2396). + * + * @param uri Uniform resource identifier. + * + * @return Scheme of the URI. + */ + public static String getScheme(String uri) { + RE re = new RE(uripattern); + if (re.match(uri)) { + return re.getParen(2); + } else { + throw new IllegalArgumentException("'" + uri + + "' is not a correct URI"); + } + } + + /** + * Return the authority of a URI. This authority is + * typically defined by an Internet-based server or a scheme-specific + * registry of naming authorities + * (see RFC 2396). + * + * @param uri Uniform resource identifier. + * + * @return Scheme of the URI. + */ + public static String getAuthority(String uri) { + RE re = new RE(uripattern); + if (re.match(uri)) { + return re.getParen(4); + } else { + throw new IllegalArgumentException("'" + uri + + "' is not a correct URI"); + } + } + + /** + * Return the path of a URI. The path contains data, specific to the + * authority (or the scheme if there is no authority component), + * identifying the resource within the scope of that scheme and authority + * (see RFC 2396). + * + * @param uri Uniform resource identifier. + * + * @return Path of the URI. + */ + public static String getPath(String uri) { + RE re = new RE(uripattern); + if (re.match(uri)) { + return re.getParen(5); + } else { + throw new IllegalArgumentException("'" + uri + + "' is not a correct URI"); + } + } + + /** + * Return the path of a URI, if the URI can't contains a authority. + * This implementation differ to the RFC 2396. + * + * @param uri Uniform resource identifier. + * + * @return Path of the URI. + */ + public static String getPathWithoutAuthority(String uri) { + RE re = new RE(uripattern); + if (re.match(uri)) { + return re.getParen(4) + re.getParen(5); + } else { + throw new IllegalArgumentException("'" + uri + + "' is not a correct URI"); + } + } + + /** + * Return the query of a URI. The query is a string of information to + * be interpreted by the resource + * (see RFC 2396). + * + * @param uri Uniform resource identifier. + * + * @return Query of the URI. + */ + public static String getQuery(String uri) { + RE re = new RE(uripattern); + if (re.match(uri)) { + return re.getParen(7); + } else { + throw new IllegalArgumentException("'" + uri + + "' is not a correct URI"); + } + } + + /** + * Return the fragment of a URI. When a URI reference is used to perform + * a retrieval action on the identified resource, the optional fragment + * identifier, consists of additional reference information to be + * interpreted by the user agent after the retrieval action has been + * successfully completed + * (see RFC 2396). + * + * @param uri Uniform resource identifier. + * + * @return Fragment of the URI. + */ + public static String getFragment(String uri) { + RE re = new RE(uripattern); + if (re.match(uri)) { + return re.getParen(9); + } else { + throw new IllegalArgumentException("'" + uri + + "' is not a correct URI"); + } + } + +} Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/source/util/SourceUtil.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/source/util/SourceUtil.java ------------------------------------------------------------------------------ svn:keywords = Id Revision Author Date Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoFactoryBean.java URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoFactoryBean.java?rev=587751&r1=587750&r2=587751&view=diff ============================================================================== --- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoFactoryBean.java (original) +++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoFactoryBean.java Tue Oct 23 19:41:36 2007 @@ -1,94 +1,94 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.cocoon.core.container.spring.pipeline; - -import java.util.Map; - -import org.apache.cocoon.components.pipeline.impl.PipelineComponentInfo; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.HierarchicalBeanFactory; - -/** - * This spring factory bean adds the processor component info to the bean factory. - * - * @since 2.2 - * @version $Id: ProcessorComponentInfoFactoryBean.java 448473 2006-09-21 06:22:51Z crossley $ - */ -public class PipelineComponentInfoFactoryBean - implements FactoryBean, BeanFactoryAware { - - /** The bean factory. */ - protected BeanFactory beanFactory; - - protected Map data; - - protected PipelineComponentInfo info; - - /** - * @see org.springframework.beans.factory.BeanFactoryAware#setBeanFactory(org.springframework.beans.factory.BeanFactory) - */ - public void setBeanFactory(BeanFactory factory) throws BeansException { - this.beanFactory = factory; - } - - protected void init() - throws Exception { - PipelineComponentInfo parent = null; - if ( this.beanFactory instanceof HierarchicalBeanFactory ) { - BeanFactory parentFactory = ((HierarchicalBeanFactory)this.beanFactory).getParentBeanFactory(); - if ( parentFactory != null && parentFactory.containsBean(PipelineComponentInfo.ROLE) ) { - parent = (PipelineComponentInfo)parentFactory.getBean(PipelineComponentInfo.ROLE); - } - } - this.info = new PipelineComponentInfo(parent); - if ( this.data != null ) { - info.setData(data); - } - } - - /** - * @see org.springframework.beans.factory.FactoryBean#getObject() - */ - public Object getObject() throws Exception { - return this.info; - } - - /** - * @see org.springframework.beans.factory.FactoryBean#getObjectType() - */ - public Class getObjectType() { - return PipelineComponentInfo.class; - } - - /** - * @see org.springframework.beans.factory.FactoryBean#isSingleton() - */ - public boolean isSingleton() { - return true; - } - - public Map getData() { - return data; - } - - public void setData(Map data) { - this.data = data; - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cocoon.core.container.spring.pipeline; + +import java.util.Map; + +import org.apache.cocoon.components.pipeline.impl.PipelineComponentInfo; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.beans.factory.FactoryBean; +import org.springframework.beans.factory.HierarchicalBeanFactory; + +/** + * This spring factory bean adds the processor component info to the bean factory. + * + * @since 2.2 + * @version $Id$ + */ +public class PipelineComponentInfoFactoryBean + implements FactoryBean, BeanFactoryAware { + + /** The bean factory. */ + protected BeanFactory beanFactory; + + protected Map data; + + protected PipelineComponentInfo info; + + /** + * @see org.springframework.beans.factory.BeanFactoryAware#setBeanFactory(org.springframework.beans.factory.BeanFactory) + */ + public void setBeanFactory(BeanFactory factory) throws BeansException { + this.beanFactory = factory; + } + + protected void init() + throws Exception { + PipelineComponentInfo parent = null; + if ( this.beanFactory instanceof HierarchicalBeanFactory ) { + BeanFactory parentFactory = ((HierarchicalBeanFactory)this.beanFactory).getParentBeanFactory(); + if ( parentFactory != null && parentFactory.containsBean(PipelineComponentInfo.ROLE) ) { + parent = (PipelineComponentInfo)parentFactory.getBean(PipelineComponentInfo.ROLE); + } + } + this.info = new PipelineComponentInfo(parent); + if ( this.data != null ) { + info.setData(data); + } + } + + /** + * @see org.springframework.beans.factory.FactoryBean#getObject() + */ + public Object getObject() throws Exception { + return this.info; + } + + /** + * @see org.springframework.beans.factory.FactoryBean#getObjectType() + */ + public Class getObjectType() { + return PipelineComponentInfo.class; + } + + /** + * @see org.springframework.beans.factory.FactoryBean#isSingleton() + */ + public boolean isSingleton() { + return true; + } + + public Map getData() { + return data; + } + + public void setData(Map data) { + this.data = data; + } +} Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoFactoryBean.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoFactoryBean.java ------------------------------------------------------------------------------ svn:keywords = Id Revision Author Date Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializer.java URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializer.java?rev=587751&r1=587750&r2=587751&view=diff ============================================================================== --- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializer.java (original) +++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializer.java Tue Oct 23 19:41:36 2007 @@ -1,95 +1,95 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.cocoon.core.container.spring.pipeline; - -import java.util.Map; -import java.util.StringTokenizer; - -import org.apache.cocoon.components.pipeline.impl.PipelineComponentInfo; - - -/** - * @version $Id$ - * @since 2.2 - */ -public class PipelineComponentInfoInitializer { - private PipelineComponentInfo info; - private String componentName; - private String mimeType; - private String label; - private String hint; - private Map data; - - public void init() { - if (this.mimeType != null) - this.info.setMimeType(this.componentName, this.mimeType); - if (this.label != null) { - StringTokenizer st = new StringTokenizer(this.label, " ,", false); - String[] labels = new String[st.countTokens()]; - for (int tokenIdx = 0; tokenIdx < labels.length; tokenIdx++) { - labels[tokenIdx] = st.nextToken(); - } - this.info.setLabels(this.componentName, labels); - } - if (this.hint != null) - this.info.setPipelineHint(this.componentName, this.hint); - if (this.data != null) - this.info.addData(data); - } - - /** - * @param info - */ - public void setInfo(PipelineComponentInfo info) { - this.info = info; - } - - /** - * @param componentName - */ - public void setComponentName(String componentName) { - this.componentName = componentName; - } - /** - * @param hint - */ - public void setHint(String hint) { - this.hint = hint; - } - /** - * @param label - */ - public void setLabel(String label) { - this.label = label; - } - /** - * @param mimeType - */ - public void setMimeType(String mimeType) { - this.mimeType = mimeType; - } - - /** - * @param data the data to set - */ - public void setData(Map data) { - this.data = data; - } - -} +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cocoon.core.container.spring.pipeline; + +import java.util.Map; +import java.util.StringTokenizer; + +import org.apache.cocoon.components.pipeline.impl.PipelineComponentInfo; + + +/** + * @version $Id$ + * @since 2.2 + */ +public class PipelineComponentInfoInitializer { + private PipelineComponentInfo info; + private String componentName; + private String mimeType; + private String label; + private String hint; + private Map data; + + public void init() { + if (this.mimeType != null) + this.info.setMimeType(this.componentName, this.mimeType); + if (this.label != null) { + StringTokenizer st = new StringTokenizer(this.label, " ,", false); + String[] labels = new String[st.countTokens()]; + for (int tokenIdx = 0; tokenIdx < labels.length; tokenIdx++) { + labels[tokenIdx] = st.nextToken(); + } + this.info.setLabels(this.componentName, labels); + } + if (this.hint != null) + this.info.setPipelineHint(this.componentName, this.hint); + if (this.data != null) + this.info.addData(data); + } + + /** + * @param info + */ + public void setInfo(PipelineComponentInfo info) { + this.info = info; + } + + /** + * @param componentName + */ + public void setComponentName(String componentName) { + this.componentName = componentName; + } + /** + * @param hint + */ + public void setHint(String hint) { + this.hint = hint; + } + /** + * @param label + */ + public void setLabel(String label) { + this.label = label; + } + /** + * @param mimeType + */ + public void setMimeType(String mimeType) { + this.mimeType = mimeType; + } + + /** + * @param data the data to set + */ + public void setData(Map data) { + this.data = data; + } + +} Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializer.java ------------------------------------------------------------------------------ svn:keywords = Id Revision Author Date Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializerDecorator.java URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializerDecorator.java?rev=587751&r1=587750&r2=587751&view=diff ============================================================================== --- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializerDecorator.java (original) +++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializerDecorator.java Tue Oct 23 19:41:36 2007 @@ -1,98 +1,98 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.cocoon.core.container.spring.pipeline; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.cocoon.components.pipeline.impl.PipelineComponentInfo; -import org.springframework.beans.factory.config.BeanDefinitionHolder; -import org.springframework.beans.factory.support.AbstractBeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.xml.BeanDefinitionDecorator; -import org.springframework.beans.factory.xml.ParserContext; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -/** - * @version $Id$ - * @since 2.2 - */ -public class PipelineComponentInfoInitializerDecorator implements - BeanDefinitionDecorator { - - private static final String[] EMPTY_STRING_ARRAY = new String[0]; - - /* (non-Javadoc) - * @see org.springframework.beans.factory.xml.BeanDefinitionDecorator#decorate(org.w3c.dom.Node, org.springframework.beans.factory.config.BeanDefinitionHolder, org.springframework.beans.factory.xml.ParserContext) - */ - public BeanDefinitionHolder decorate(Node source, BeanDefinitionHolder holder, ParserContext ctx) { - registerPipelineComponentInfo(ctx); - String initializerBeanName = registerPipelineComponentInfoInitializer(source, holder, ctx); - createDependencyOnPipelineComponentInfoInitializer(holder, initializerBeanName); - return holder; - } - - private void registerPipelineComponentInfo(ParserContext ctx) { - if (!ctx.getRegistry().containsBeanDefinition(PipelineComponentInfo.ROLE)) { - BeanDefinitionBuilder defBuilder = BeanDefinitionBuilder.rootBeanDefinition(PipelineComponentInfoFactoryBean.class); - defBuilder.setSingleton(true); - defBuilder.setLazyInit(false); - defBuilder.setInitMethodName("init"); - ctx.getRegistry().registerBeanDefinition(PipelineComponentInfo.ROLE, defBuilder.getBeanDefinition()); - } - } - - private String registerPipelineComponentInfoInitializer(Node source, BeanDefinitionHolder holder, ParserContext ctx) { - String componentName = holder.getBeanName(); - String mimeType = ((Element)source).hasAttribute("mime-type") ? ((Element)source).getAttribute("mime-type") : null; - String label = ((Element)source).hasAttribute("label") ? ((Element)source).getAttribute("label") : null; - String hint = ((Element)source).hasAttribute("hint") ? ((Element)source).getAttribute("hint") : null; - - BeanDefinitionBuilder initializer = BeanDefinitionBuilder.rootBeanDefinition(PipelineComponentInfoInitializer.class); - initializer.addPropertyReference("info", PipelineComponentInfo.ROLE); - initializer.addPropertyValue("componentName", componentName); - if (mimeType != null) - initializer.addPropertyValue("mimeType", mimeType); - if (label != null) - initializer.addPropertyValue("label", label); - if (hint != null) - initializer.addPropertyValue("hint", hint); - initializer.setInitMethodName("init"); - - String beanName = componentName + "/info"; - ctx.getRegistry().registerBeanDefinition(beanName, initializer.getBeanDefinition()); - - return beanName; - } - - private void createDependencyOnPipelineComponentInfoInitializer(BeanDefinitionHolder holder, String initializerBeanName) { - AbstractBeanDefinition definition = ((AbstractBeanDefinition) holder.getBeanDefinition()); - String[] dependsOn = definition.getDependsOn(); - if (dependsOn == null) { - dependsOn = new String[]{initializerBeanName}; - } else { - List dependencies = new ArrayList(Arrays.asList(dependsOn)); - dependencies.add(initializerBeanName); - dependsOn = (String[]) dependencies.toArray(EMPTY_STRING_ARRAY); - } - definition.setDependsOn(dependsOn); - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cocoon.core.container.spring.pipeline; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.cocoon.components.pipeline.impl.PipelineComponentInfo; +import org.springframework.beans.factory.config.BeanDefinitionHolder; +import org.springframework.beans.factory.support.AbstractBeanDefinition; +import org.springframework.beans.factory.support.BeanDefinitionBuilder; +import org.springframework.beans.factory.xml.BeanDefinitionDecorator; +import org.springframework.beans.factory.xml.ParserContext; +import org.w3c.dom.Element; +import org.w3c.dom.Node; + +/** + * @version $Id$ + * @since 2.2 + */ +public class PipelineComponentInfoInitializerDecorator implements + BeanDefinitionDecorator { + + private static final String[] EMPTY_STRING_ARRAY = new String[0]; + + /* (non-Javadoc) + * @see org.springframework.beans.factory.xml.BeanDefinitionDecorator#decorate(org.w3c.dom.Node, org.springframework.beans.factory.config.BeanDefinitionHolder, org.springframework.beans.factory.xml.ParserContext) + */ + public BeanDefinitionHolder decorate(Node source, BeanDefinitionHolder holder, ParserContext ctx) { + registerPipelineComponentInfo(ctx); + String initializerBeanName = registerPipelineComponentInfoInitializer(source, holder, ctx); + createDependencyOnPipelineComponentInfoInitializer(holder, initializerBeanName); + return holder; + } + + private void registerPipelineComponentInfo(ParserContext ctx) { + if (!ctx.getRegistry().containsBeanDefinition(PipelineComponentInfo.ROLE)) { + BeanDefinitionBuilder defBuilder = BeanDefinitionBuilder.rootBeanDefinition(PipelineComponentInfoFactoryBean.class); + defBuilder.setSingleton(true); + defBuilder.setLazyInit(false); + defBuilder.setInitMethodName("init"); + ctx.getRegistry().registerBeanDefinition(PipelineComponentInfo.ROLE, defBuilder.getBeanDefinition()); + } + } + + private String registerPipelineComponentInfoInitializer(Node source, BeanDefinitionHolder holder, ParserContext ctx) { + String componentName = holder.getBeanName(); + String mimeType = ((Element)source).hasAttribute("mime-type") ? ((Element)source).getAttribute("mime-type") : null; + String label = ((Element)source).hasAttribute("label") ? ((Element)source).getAttribute("label") : null; + String hint = ((Element)source).hasAttribute("hint") ? ((Element)source).getAttribute("hint") : null; + + BeanDefinitionBuilder initializer = BeanDefinitionBuilder.rootBeanDefinition(PipelineComponentInfoInitializer.class); + initializer.addPropertyReference("info", PipelineComponentInfo.ROLE); + initializer.addPropertyValue("componentName", componentName); + if (mimeType != null) + initializer.addPropertyValue("mimeType", mimeType); + if (label != null) + initializer.addPropertyValue("label", label); + if (hint != null) + initializer.addPropertyValue("hint", hint); + initializer.setInitMethodName("init"); + + String beanName = componentName + "/info"; + ctx.getRegistry().registerBeanDefinition(beanName, initializer.getBeanDefinition()); + + return beanName; + } + + private void createDependencyOnPipelineComponentInfoInitializer(BeanDefinitionHolder holder, String initializerBeanName) { + AbstractBeanDefinition definition = ((AbstractBeanDefinition) holder.getBeanDefinition()); + String[] dependsOn = definition.getDependsOn(); + if (dependsOn == null) { + dependsOn = new String[]{initializerBeanName}; + } else { + List dependencies = new ArrayList(Arrays.asList(dependsOn)); + dependencies.add(initializerBeanName); + dependsOn = (String[]) dependencies.toArray(EMPTY_STRING_ARRAY); + } + definition.setDependsOn(dependsOn); + } +} Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializerDecorator.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineComponentInfoInitializerDecorator.java ------------------------------------------------------------------------------ svn:keywords = Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/core/container/spring/pipeline/PipelineNamespaceHandler.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/AbstractEnvironment.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/ForwardRedirector.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/http/ContextURLException.java ------------------------------------------------------------------------------ svn:keywords = Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/http/HttpContext.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/http/HttpCookie.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/http/HttpEnvironment.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/http/HttpRequest.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/http/HttpResponse.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/http/HttpSession.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/http/RequestEncodingException.java ------------------------------------------------------------------------------ svn:keywords = Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/AbstractContext.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/AbstractRequest.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/AbstractResponse.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/AbstractSession.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/BaseMap.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/ContextMap.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/RequestHeaderMap.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/RequestMap.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/RequestParameterMap.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/impl/SessionMap.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/generation/AbstractGenerator.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/generation/ServiceableGenerator.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/generation/ServletGenerator.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/reading/AbstractReader.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/reading/ServiceableReader.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/serialization/AbstractSerializer.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/serialization/AbstractTextSerializer.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/transformation/AbstractDOMTransformer.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/transformation/AbstractExtractionTransformer.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/transformation/AbstractSAXTransformer.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/transformation/AbstractTransformer.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/transformation/ServiceableTransformer.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/transformation/helpers/NOPRecorder.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/transformation/helpers/ParametersRecorder.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/transformation/helpers/TextRecorder.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/xml/AbstractSAXFragment.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/xml/AbstractXMLConsumer.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/xml/AbstractXMLPipe.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/xml/AbstractXMLProducer.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/xml/AttributesImpl.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/xml/ContentHandlerWrapper.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/xml/DefaultLexicalHandler.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/xml/EmbeddedXMLPipe.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date Propchange: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/xml/ImmutableAttributesImpl.java ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Tue Oct 23 19:41:36 2007 @@ -1 +1 @@ -Id +Id Revision Author Date