You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by "Jörg Heinicke (JIRA)" <ji...@apache.org> on 2007/06/24 01:36:25 UTC

[jira] Assigned: (COCOON-2077) XModuleSource getInputStream() throws NPE

     [ https://issues.apache.org/jira/browse/COCOON-2077?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jörg Heinicke reassigned COCOON-2077:
-------------------------------------

    Assignee: Jörg Heinicke

> XModuleSource getInputStream() throws NPE
> -----------------------------------------
>
>                 Key: COCOON-2077
>                 URL: https://issues.apache.org/jira/browse/COCOON-2077
>             Project: Cocoon
>          Issue Type: Bug
>          Components: * Cocoon Core
>    Affects Versions: 2.1.9, 2.1.10, 2.1.11-dev (Current SVN), 2.2-dev (Current SVN)
>            Reporter: Ellis Pritchard
>            Assignee: Jörg Heinicke
>            Priority: Minor
>
> I'm getting:
> java.lang.NullPointerException
> 	at org.apache.cocoon.serialization.AbstractTextSerializer.getTransformerHandler(AbstractTextSerializer.java:138)
> 	at org.apache.cocoon.serialization.XMLSerializer.setOutputStream(XMLSerializer.java:53)
> 	at org.apache.cocoon.components.source.impl.XModuleSource.getInputStream(XModuleSource.java:196)
> 	at com.researchresearch.cocoon.generation.RESTfulServiceGenerator.doPOSTBody(RESTfulServiceGenerator.java:323)
> 	at com.researchresearch.cocoon.generation.RESTfulServiceGenerator.generate(RESTfulServiceGenerator.java:276)
> 	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:579)
> 	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:780)
> 	at org.apache.cocoon.components.source.impl.SitemapSource.toSAX(SitemapSource.java:414)
> 	at org.apache.cocoon.components.source.SourceUtil.toSAX(SourceUtil.java:101)
> 	at org.apache.cocoon.components.source.SourceUtil.parse(SourceUtil.java:321)
> 	at org.apache.cocoon.sitemap.ContentAggregator.generate(ContentAggregator.java:125)
> 	...
> When trying to use an xmodule: as the source for a custom generator.
> [Cocoon BRANCH_2_1_X.]
> Now admittedly, I'm not using it in a pure sitemap way, which would end up using the XMLizable interface method, but I'm calling the (equally valid) Source method getInputStream() instead.
> The offending code in org.apache.cocoon.components.source.impl.XModuleSource seems to be:
>     /**
>      * Return an <code>InputStream</code> object to read from the source.
>      *
>      * @throws IOException if I/O error occured.
>      */
>     // Stolen from QDoxSource
>     public InputStream getInputStream() throws IOException, SourceException {
>         if ( this.logger.isDebugEnabled() ) {
>             this.logger.debug( "Getting InputStream for " + getURI() );
>         }
>         // Serialize the SAX events to the XMLSerializer:
>         XMLSerializer serializer = new XMLSerializer(); <!--- HERE: creates XMLSerializer, but doesn't configure() it !! -->
>         ByteArrayInputStream inputStream = null;
>         try {
>             ByteArrayOutputStream outputStream = new ByteArrayOutputStream( 2048 );
>             serializer.setOutputStream( outputStream );
>             toSAX( serializer );
>             inputStream = new ByteArrayInputStream( outputStream.toByteArray() );
>         } catch ( SAXException se ) {
>             logger.error( "SAX exception!", se );
>             throw new SourceException( "Serializing SAX to a ByteArray failed!", se );
>         }
>         return inputStream;
>     }
> The serializer is created, but not configure()d, and it is only the configuration that sets the TransformerFactory in AbstractTextSerializer.java, hence the NPE.
> The causal change seems to have been made to AbstractTextSerializer yonks ago:
> 	23784 	3/19/03 5:37PM sylvain  Allow the TransformerFactory class to be specified in the configuration
> Before that revision the TransformerFactory was set in the constructor of AbstractTextSerializer, thus it worked with the xmodule getInputStream() method before that change.
> No compensating change is in XModuleSource (433543), so this has been broken since 2003.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.