cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jörg Heinicke (JIRA) <j...@apache.org>
Subject [jira] Commented: (COCOON-2077) XModuleSource getInputStream() throws NPE
Date Mon, 25 Jun 2007 19:37:26 GMT

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

Jörg Heinicke commented on COCOON-2077:
---------------------------------------

Ups. Fixed now. Thanks again.

> 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
>             Fix For: 2.1.11-dev (Current SVN), 2.2-dev (Current SVN)
>
>
> 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.


Mime
View raw message