Thanks for this help, Vadim!
The contract of the Source (ModifiableSource) object states,
that it must be refreshed between two calls to getInputStream().
So I added a refresh() call to the xslt processor and fixed it.
Carsten
> -----Ursprungliche Nachricht-----
> Von: Vadim Gritsenko [mailto:[EMAIL PROTECTED]]
> Gesendet: Dienstag, 4. September 2001 18:20
> An: [EMAIL PROTECTED]
> Betreff: RE: cvs commit: xml-cocoon2/src/org/apache/cocoon/sitemap
> Manager.java
>
>
> Carsten,
>
> This problem happens because toSAX is called twice, from:
>
> java.lang.Exception: In toSAX
> at
> org.apache.cocoon.components.source.SitemapSource.toSAX(SitemapSou
> rce.java:288)
> at
> org.apache.cocoon.components.source.SitemapSource.getInputStream(S
> itemapSource.java:183)
> at
> org.apache.cocoon.components.source.SitemapSource.getInputSource(S
> itemapSource.java:275)
> at
> org.apache.cocoon.components.xslt.XSLTProcessorImpl.getTemplates(X
> SLTProcessorImpl.java:239)
> at
> org.apache.cocoon.components.xslt.XSLTProcessorImpl.getTransformer
> Handler(XSLTProcessorImpl.java:118)
> at
> org.apache.cocoon.components.xslt.XSLTProcessorImpl.getTransformer
> Handler(XSLTProcessorImpl.java:110)
> at
> org.apache.cocoon.transformation.TraxTransformer.setConsumer(TraxT
> ransformer.java:238)
> at
> org.apache.cocoon.components.pipeline.CachingEventPipeline.connect
> Pipeline(CachingEventPipeline.java:356)
> at
> org.apache.cocoon.components.pipeline.CachingEventPipeline.process
> (CachingEventPipeline.java:210)
> at
> org.apache.cocoon.components.pipeline.CachingStreamPipeline.proces
> s(CachingStreamPipeline.java:364)
> at
> org.apache.cocoon.www.sub.sitemap_xmap.wildcardMatchN4F(sitemap_xm
> ap.java:732)
> at
> org.apache.cocoon.www.sub.sitemap_xmap.process(sitemap_xmap.java:381)
> at
> org.apache.cocoon.www.sub.sitemap_xmap.process(sitemap_xmap.java:323)
> at org.apache.cocoon.sitemap.Handler.process(Handler.java:163)
> at org.apache.cocoon.sitemap.Manager.invoke(Manager.java:115)
> at
> org.apache.cocoon.www.sitemap_xmap.wildcardMatchN226(sitemap_xmap.
> java:2908)
> at
> org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:2283)
> at
> org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:2191)
> at org.apache.cocoon.sitemap.Handler.process(Handler.java:163)
> at org.apache.cocoon.sitemap.Manager.invoke(Manager.java:115)
> at org.apache.cocoon.Cocoon.process(Cocoon.java:466)
>
> And from:
>
> java.lang.Exception: In toSAX
> at
> org.apache.cocoon.components.source.SitemapSource.toSAX(SitemapSou
> rce.java:288)
> at
> org.apache.cocoon.components.source.SitemapSource.getInputStream(S
> itemapSource.java:183)
> at
> org.apache.cocoon.components.source.SitemapSource.getInputSource(S
> itemapSource.java:275)
> at
> org.apache.cocoon.components.xslt.XSLTProcessorImpl.getTransformer
> Handler(XSLTProcessorImpl.java:120)
> at
> org.apache.cocoon.components.xslt.XSLTProcessorImpl.getTransformer
> Handler(XSLTProcessorImpl.java:110)
> at
> org.apache.cocoon.transformation.TraxTransformer.setConsumer(TraxT
> ransformer.java:238)
> at
> org.apache.cocoon.components.pipeline.CachingEventPipeline.connect
> Pipeline(CachingEventPipeline.java:356)
> at
> org.apache.cocoon.components.pipeline.CachingEventPipeline.process
> (CachingEventPipeline.java:210)
> at
> org.apache.cocoon.components.pipeline.CachingStreamPipeline.proces
> s(CachingStreamPipeline.java:364)
> at
> org.apache.cocoon.www.sub.sitemap_xmap.wildcardMatchN4F(sitemap_xm
> ap.java:732)
> at
> org.apache.cocoon.www.sub.sitemap_xmap.process(sitemap_xmap.java:381)
> at
> org.apache.cocoon.www.sub.sitemap_xmap.process(sitemap_xmap.java:323)
> at org.apache.cocoon.sitemap.Handler.process(Handler.java:163)
> at org.apache.cocoon.sitemap.Manager.invoke(Manager.java:115)
> at
> org.apache.cocoon.www.sitemap_xmap.wildcardMatchN226(sitemap_xmap.
> java:2908)
> at
> org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:2283)
> at
> org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:2191)
> at org.apache.cocoon.sitemap.Handler.process(Handler.java:163)
> at org.apache.cocoon.sitemap.Manager.invoke(Manager.java:115)
> at org.apache.cocoon.Cocoon.process(Cocoon.java:466)
>
> Obviously, on second invocation eventPipeline == null ->
> NullPointerException is thrown in toSAX method.
>
> Proposed solution:
> After
> if (this.exception != null) {
> throw this.exception;
> }
> Add
> if (this.eventPipeline == null) {
> refresh();
> if (this.exception != null) {
> throw this.exception;
> }
> }
>
> What do you think?
>
> PS: Not best solution: performance will suffer because of double
> sitemap processing
>
> Vadim
>
> > -----Original Message-----
> > From: Vadim Gritsenko [mailto:[EMAIL PROTECTED]]
> > Sent: Tuesday, September 04, 2001 11:57 AM
> > To: [EMAIL PROTECTED]
> > Subject: RE: cvs commit:
> xml-cocoon2/src/org/apache/cocoon/sitemap Manager.java
> >
> >
> > That's weird :-\
> > Why HTTP works and "cocoon:" does not?
> > <map:transform src="http://localhost:8080/cocoon/sub/xsl-source"/>
> >
> >
> > Vadim
> >
> > > -----Original Message-----
> > > From: Carsten Ziegeler [mailto:[EMAIL PROTECTED]]
> > > Sent: Tuesday, September 04, 2001 11:43 AM
> > > To: [EMAIL PROTECTED]
> > > Subject: AW: cvs commit:
> xml-cocoon2/src/org/apache/cocoon/sitemap Manager.java
> > >
> > >
> > > This is actually a different problem. If you look at the sub sitemap,
> > > there is the following entry:
> > > >>>
> > > <map:match pattern="xsl-cocoon">
> > > <map:generate src="docs/hello-page.xml"/>
> > > <map:transform src="cocoon:/xsl-source"/>
> > > <map:serialize/>
> > > </map:match>
> > > <<<<
> > >
> > > Writing a test pipeline in the sub sitemap which reads (xml generator)
> > > "cocoon:/xsl-source" works perfectly. What is not working is that
> > > the current Xalan implementation complains about the input from
> > > that source.
> > >
> > > So cocoon: urls work but not as input for Xalan.
> > >
> > > Carsten
> > >
> > > > Vadim Gritsenko wrote:
> > > >
> > > > Nope, it does not...
> > > >
> > > > http://localhost:8080/cocoon/sub/xsl-cocoon
> > > >
> > > > java.lang.NullPointerException
> > > > at
> > > > org.apache.cocoon.components.source.SitemapSource.toSAX(SitemapSou
> > > > rce.java:296)
> > > > at
> > > > org.apache.cocoon.components.source.SitemapSource.getInputStream(S
> > > > itemapSource.java:183)
> > > > at
> > > > org.apache.cocoon.components.source.SitemapSource.getInputSource(S
> > > > itemapSource.java:273)
> > > > at
> > > > org.apache.cocoon.components.xslt.XSLTProcessorImpl.getTransformer
> > > > Handler(XSLTProcessorImpl.java:120)
> > > > at
> > > > org.apache.cocoon.components.xslt.XSLTProcessorImpl.getTransformer
> > > > Handler(XSLTProcessorImpl.java:110)
> > > > at
> > > > org.apache.cocoon.transformation.TraxTransformer.setConsumer(TraxT
> > > > ransformer.java:238)
> > > > at
> > > > org.apache.cocoon.components.pipeline.CachingEventPipeline.connect
> > > > Pipeline(CachingEventPipeline.java:356)
> > > > at
> > > > org.apache.cocoon.components.pipeline.CachingEventPipeline.process
> > > > (CachingEventPipeline.java:210)
> > > > at
> > > > org.apache.cocoon.components.pipeline.CachingStreamPipeline.proces
> > > > s(CachingStreamPipeline.java:364)
> > > > at
> > > > org.apache.cocoon.www.sub.sitemap_xmap.wildcardMatchN4F(sitemap_xm
> > > > ap.java:732)
> > > > at
> > > >
> org.apache.cocoon.www.sub.sitemap_xmap.process(sitemap_xmap.java:381)
> > > > at
> > > >
> org.apache.cocoon.www.sub.sitemap_xmap.process(sitemap_xmap.java:323)
> > > > at
> org.apache.cocoon.sitemap.Handler.process(Handler.java:163)
> > > > at
> org.apache.cocoon.sitemap.Manager.invoke(Manager.java:115)
> > > > at
> > > > org.apache.cocoon.www.sitemap_xmap.wildcardMatchN226(sitemap_xmap.
> > > > java:2902)
> > > > at
> > > > org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:2283)
> > > > at
> > > > org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:2191)
> > > > at
> org.apache.cocoon.sitemap.Handler.process(Handler.java:163)
> > > > at
> org.apache.cocoon.sitemap.Manager.invoke(Manager.java:115)
> > > > at org.apache.cocoon.Cocoon.process(Cocoon.java:466)
> > > > at
> > > >
> org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:532)
> > > > at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > > > ............
> > > >
> > > > Vadim
> > > >
> > > > > -----Original Message-----
> > > > > From: Davanum Srinivas [mailto:[EMAIL PROTECTED]]
> > > > > Sent: Tuesday, September 04, 2001 10:59 AM
> > > > > To: [EMAIL PROTECTED]
> > > > > Subject: Re: cvs commit:
> > > > xml-cocoon2/src/org/apache/cocoon/sitemap Manager.java
> > > > >
> > > > >
> > > > > Confirmed. Thanks Carsten. It works!!!
> > > > >
> > > > > -- dims
> > > > >
> > > > > --- [EMAIL PROTECTED] wrote:
> > > > > > cziegeler 01/09/04 07:44:13
> > > > > >
> > > > > > Modified: src/org/apache/cocoon/components/source
> > > > SitemapSource.java
> > > > > > src/org/apache/cocoon/environment
> > > > AbstractEnvironment.java
> > > > > > src/org/apache/cocoon/environment/wrapper
> > > > > > EnvironmentWrapper.java
> > > > > > src/org/apache/cocoon/sitemap Manager.java
> > > > > > Log:
> > > > > > Fixed proper handling of cocoon: urls
> > > > > >
> > > > > > Revision Changes Path
> > > > > > 1.18 +5 -7
> > > >
> xml-cocoon2/src/org/apache/cocoon/components/source/SitemapSource.java
> > > > > >
> > > > > > Index: SitemapSource.java
> > > > > >
> ===================================================================
> > > > > > RCS file:
> > > > /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/source/Site
> > > > mapSource.java,v
> > > > > > retrieving revision 1.17
> > > > > > retrieving revision 1.18
> > > > > > diff -u -r1.17 -r1.18
> > > > > > --- SitemapSource.java 2001/08/25 19:40:32 1.17
> > > > > > +++ SitemapSource.java 2001/09/04 14:44:12 1.18
> > > > > > @@ -3,7 +3,7 @@
> > > > > > *
> > > > ------------------------------------------------------------------
> > > > ------- *
> > > > > > * This software is published under the terms of the
> > > > Apache Software License *
> > > > > > * version 1.1, a copy of which has been included with
> > > > this distribution in *
> > > > > > - * the LICENSE file.
> > > > *
> > > > > > + * the LICENSE file. s
> > > > *
> > > > > >
> > > > ******************************************************************
> > > > ***********/
> > > > > >
> > > > > > package org.apache.cocoon.components.source;
> > > > > > @@ -47,7 +47,7 @@
> > > > > > * Description of a source which is defined by a pipeline.
> > > > > > *
> > > > > > * @author <a href="mailto:[EMAIL PROTECTED]">Carsten
> > > > Ziegeler</a>
> > > > > > - * @version CVS $Revision: 1.17 $ $Date: 2001/08/25
> 19:40:32 $
> > > > > > + * @version CVS $Revision: 1.18 $ $Date: 2001/09/04
> 14:44:12 $
> > > > > > */
> > > > > >
> > > > > > public final class SitemapSource
> > > > > > @@ -98,7 +98,7 @@
> > > > > > throws IOException, ProcessingException {
> > > > > >
> > > > > > this.manager = manager;
> > > > > > -
> > > > > > + this.setLogger(logger);
> > > > > > // remove the protocol
> > > > > > int protocolEnd = uri.indexOf(':');
> > > > > > if (protocolEnd != -1) {
> > > > > > @@ -143,7 +143,6 @@
> > > > > > uri = uri.substring(0, queryStringPos);
> > > > > > }
> > > > > > this.uri = uri;
> > > > > > - this.environment.setURI(this.prefix, this.uri);
> > > > > > this.refresh();
> > > > > > }
> > > > > >
> > > > > > @@ -234,11 +233,11 @@
> > > > > > ((XMLProducer)eventPipeline).setConsumer(this);
> > > > > >
> > > > > > this.environment.setURI(this.prefix, this.uri);
> > > > > > - this.processor.process(this.environment,
> > > > pipeline, eventPipeline);
> > > > > > + this.processor.process(this.environment,
> > > > pipeline, eventPipeline);
> > > > > > + this.environment.changeToLastContext();
> > > > > > String redirectURL =
> > > > this.environment.getRedirectURL();
> > > > > > if (redirectURL == null) {
> > > > > > if (this.eventPipeline instanceof
> > > > CacheableEventPipeline) {
> > > > > > -
> this.environment.setURI(this.prefix, this.uri);
> > > > > > CacheableEventPipeline cep =
> > > > > > (CacheableEventPipeline)this.eventPipeline;
> > > > > > PipelineCacheKey pck =
> > > > cep.generateKey(this.environment);
> > > > > > Map validity = null;
> > > > > > @@ -288,7 +287,6 @@
> > > > > > if (this.redirectSource != null) {
> > > > > > this.redirectSource.toSAX(consumer);
> > > > > > } else {
> > > > > > - this.environment.setURI(this.prefix,
> this.uri);
> > > > > >
> ((XMLProducer)eventPipeline).setConsumer(consumer);
> > > > > > eventPipeline.process(this.environment);
> > > > > > }
> > > > > >
> > > > > >
> > > > > >
> > > > > > 1.19 +1 -9
> > > >
> xml-cocoon2/src/org/apache/cocoon/environment/AbstractEnvironment.java
> > > > > >
> > > > > > Index: AbstractEnvironment.java
> > > > > >
> ===================================================================
> > > > > > RCS file:
> > > > /home/cvs/xml-cocoon2/src/org/apache/cocoon/environment/AbstractEn
> > > > vironment.java,v
> > > > > > retrieving revision 1.18
> > > > > > retrieving revision 1.19
> > > > > > diff -u -r1.18 -r1.19
> > > > > > --- AbstractEnvironment.java 2001/08/30 15:17:03 1.18
> > > > > > +++ AbstractEnvironment.java 2001/09/04 14:44:12 1.19
> > > > > > @@ -24,7 +24,7 @@
> > > > > > *
> > > > > > * @author <a
> href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
> > > > > > * @author <a href="mailto:[EMAIL PROTECTED]">Carsten
> > > > Ziegeler</a>
> > > > > > - * @version CVS $Revision: 1.18 $ $Date: 2001/08/30
> 15:17:03 $
> > > > > > + * @version CVS $Revision: 1.19 $ $Date: 2001/09/04
> 14:44:12 $
> > > > > > */
> > > > > > public abstract class AbstractEnvironment extends
> > > > AbstractLoggable implements Environment {
> > > > > >
> > > > > > @@ -118,14 +118,6 @@
> > > > > > */
> > > > > > public String getURI() {
> > > > > > return this.uris;
> > > > > > - }
> > > > > > -
> > > > > > - /**
> > > > > > - * Set the uri in progress. The prefix is stripped off
> > > > > > - */
> > > > > > - public void setURI(String uris) {
> > > > > > - getLogger().debug("Set the URIs (OLD=" + this.uris
> > > > + ", NEW=" + uris + ")");
> > > > > > - this.uris = uris;
> > > > > > }
> > > > > >
> > > > > > /**
> > > > > >
> > > > > >
> > > > > >
> > > > > > 1.9 +31 -2
> > > > > >
> > > > xml-cocoon2/src/org/apache/cocoon/environment/wrapper/EnvironmentW
> > > > rapper.java
> > > > > >
> > > > > > Index: EnvironmentWrapper.java
> > > > > >
> ===================================================================
> > > > > > RCS file:
> > > > > >
> > > > /home/cvs/xml-cocoon2/src/org/apache/cocoon/environment/wrapper/En
> > > > vironmentWrapper.java,v
> > > > > > retrieving revision 1.8
> > > > > > retrieving revision 1.9
> > > > > > diff -u -r1.8 -r1.9
> > > > > > --- EnvironmentWrapper.java 2001/08/30 15:17:03 1.8
> > > > > > +++ EnvironmentWrapper.java 2001/09/04 14:44:12 1.9
> > > > > > @@ -18,6 +18,7 @@
> > > > > > import java.io.IOException;
> > > > > > import java.io.OutputStream;
> > > > > > import java.net.MalformedURLException;
> > > > > > +import java.net.URL;
> > > > > > import java.util.HashMap;
> > > > > > import java.util.Iterator;
> > > > > > import java.util.Map;
> > > > > > @@ -29,7 +30,7 @@
> > > > > > * contains a <code>RequestWrapper</code> object.
> > > > > > *
> > > > > > * @author <a href="mailto:[EMAIL PROTECTED]">Carsten
> > > > Ziegeler</a>
> > > > > > - * @version $Id: EnvironmentWrapper.java,v 1.8 2001/08/30
> > > > 15:17:03 dims Exp $
> > > > > > + * @version $Id: EnvironmentWrapper.java,v 1.9 2001/09/04
> > > > 14:44:12 cziegeler Exp $
> > > > > > */
> > > > > > public final class EnvironmentWrapper
> > > > > > extends AbstractEnvironment
> > > > > > @@ -47,6 +48,13 @@
> > > > > > /** The request object */
> > > > > > private Request request;
> > > > > >
> > > > > > + /** The last context */
> > > > > > + private URL lastContext;
> > > > > > + /** The last prefix */
> > > > > > + private String lastPrefix;
> > > > > > + /** The last uri */
> > > > > > + private String lastURI;
> > > > > > +
> > > > > > /**
> > > > > > * Constructs an EnvironmentWrapper object from a Request
> > > > > > * and Response objects
> > > > > > @@ -154,11 +162,32 @@
> > > > > > * context and the prefix is set.
> > > > > > */
> > > > > > public void setURI(String prefix, String uris) {
> > > > > > + getLogger().debug("Setting uri (prefix=" + prefix
> > > > + ", uris=" + uris + ")");
> > > > > > if (prefix != null) {
> > > > > > setContext(getRootContext());
> > > > > > setURIPrefix(prefix);
> > > > > > }
> > > > > > - setURI(uris);
> > > > > > + this.uris = uris;
> > > > > > + this.lastURI = uris;
> > > > > > + this.lastContext = this.context;
> > > > > > + this.lastPrefix = this.prefix.toString();
> > > > > > + }
> > > > > > +
> > > > > > + public void changeContext(String prefix, String context)
> > > > > > + throws MalformedURLException {
> > > > > > + super.changeContext(prefix, context);
> > > > > > + this.lastContext = this.context;
> > > > > > + this.lastPrefix = this.prefix.toString();
> > > > > > + this.lastURI = this.uris;
> > > > > > + }
> > > > > > +
> > > > > > + /**
> > > > > > + * Change the current context to the last one set by
> > > > changeContext()
> > > > > > + */
> > > > > > + public void changeToLastContext() {
> > > > > > + this.setContext(this.lastContext);
> > > > > > + this.setURIPrefix(this.lastPrefix);
> > > > > > + this.uris = this.lastURI;
> > > > > > }
> > > > > > }
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > 1.14 +3 -3
> > > > xml-cocoon2/src/org/apache/cocoon/sitemap/Manager.java
> > > > > >
> > > > > >
> > > > > === message truncated ===
> > > > >
> > > > >
> > > > > =====
> > > > > Davanum Srinivas, JNI-FAQ Manager
> > > > > http://www.jGuru.com/faq/JNI
> > > > >
> > > > > __________________________________________________
> > > > > Do You Yahoo!?
> > > > > Get email alerts & NEW webcam video instant messaging with
> > > > Yahoo! Messenger
> > > > > http://im.yahoo.com
> > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, email: [EMAIL PROTECTED]
> > > > >
> > > >
> > > >
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, email: [EMAIL PROTECTED]
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, email: [EMAIL PROTECTED]
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, email: [EMAIL PROTECTED]
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, email: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]