You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Yoann Archambault <ya...@fastmail.fm> on 2009/03/20 23:06:18 UTC
C3: Xalan runtime error when using include and xslt transformers
back to back in pipeline
Hi everyone!
I started coding for a new project and decided to go ahead with Cocoon 3
(i'm pretty much sticking to the trunk) and i like what i see. Alot
actually! Really looks like the next step forward for XML based webapp
frameworks.
I'm not really sure this is the right mailling list, but then again i
didnt see alot of questions for cocoon 3 in the user lists ;)
Down to business,
I have this error when i try to use a pipeline which has two
transformations back to back, an include and an xslt.
My various attempts at getting this to work told a couple of things
-The pipeline works when one of the transformer is there, not when both
are.
-I tried taking the IncludeTransfo output to a new xml file and when
feeding it to the XSLT transformer by FileGenerator, it works.
-I have tried with other XML and XSLT files (taken from the working
cocoon-sample) and it doesnt work either.
-When the Include transformer doesnt have any work to do (no i: element
to include in the source xml) the pipeline works with both transformer.
Anyway, the bottom line is i'm pretty sure its not the XML or XSLT files
that are faulty here.
Is is something else i did wrong? Any thoughts?
Some details:
REVEISION alpha-2, 754707
PIPELINE that fails. It is called by a controller and it's the last
pipeline before returning a response to the client.
<map:match pattern="data/done">
<map:generate src="xml/responses/BasicOperationResponse.xml" />
<map:transform type="include" />
<map:transform src="xslt/views/referenceNodeCRUD.xslt" />
<map:serialize type="xml" />
</map:match>
SOURCE XML
<?xml version="1.0" encoding="UTF-8"?>
<response xmlns:i="http://apache.org/cocoon/3.0/include">
<i:include src="servlet:/gen/UserInfos"/>
<i:include src="servlet:/gen/SimpleOperation"/>
<i:include src="servlet:/gen/BetwixtControllerModel"/>
</response>
ERROR STs
17:49:37,235 ERROR [org.apache.cocoon.servlet.XMLSitemapServlet] An
exception occurred while executing the sitemap.
org.apache.cocoon.sitemap.InvocationException:
org.apache.cocoon.pipeline.ProcessingException: Can't parse url
connection blockcontext:/Core/xml/responses/BasicOperationResponse.xml
at
org.apache.cocoon.sitemap.util.ExceptionHandler.getInvocationException(ExceptionHandler.java:39)
at
org.apache.cocoon.sitemap.node.PipelineNode.handleException(PipelineNode.java:91)
at
org.apache.cocoon.sitemap.node.PipelineNode.invoke(PipelineNode.java:61)
at
org.apache.cocoon.sitemap.node.AbstractSitemapNode.invoke(AbstractSitemapNode.java:97)
at
org.apache.cocoon.sitemap.node.PipelinesNode.invoke(PipelinesNode.java:40)
at
org.apache.cocoon.sitemap.node.AbstractSitemapNode.invoke(AbstractSitemapNode.java:97)
at
org.apache.cocoon.sitemap.node.Sitemap.invoke(Sitemap.java:33)
at
org.apache.cocoon.servlet.XMLSitemapServlet.invoke(XMLSitemapServlet.java:82)
at
org.apache.cocoon.servlet.XMLSitemapServlet.service(XMLSitemapServlet.java:113)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at
org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:77)
at
org.apache.cocoon.jnet.URLHandlerFactoryCollector.installURLHandlers(URLHandlerFactoryCollector.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caused by: org.apache.cocoon.pipeline.ProcessingException: Can't parse
url connection
blockcontext:/Core/xml/responses/BasicOperationResponse.xml
at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
at
org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
at
org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
at
org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caused by: java.lang.RuntimeException
at
org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3418)
at
org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
at
org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
at
org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
Thanks,
Yoann
Re: C3: Xalan runtime error when using include and xslt transformers
back to back in pipeline
Posted by Reinhard Pötz <re...@apache.org>.
Hi Yoann,
sorry, I overlooked your message.
After looking into the IncludeTransformer I'm not sure why you think
that the endDocument() method is called for every included xml chunk.
The transformer uses following code to include XML:
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
EmbeddedSAXPipe embeddedSAXPipe =
new EmbeddedSAXPipe(this.getSAXConsumer());
xmlReader.setContentHandler(embeddedSAXPipe);
xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler",
embeddedSAXPipe);
BufferedInputStream inputStream =
new BufferedInputStream(source.openStream());
xmlReader.parse(new InputSource(inputStream));
The embedded SAX pipe takes care that the startDocument() and
endDocument() methods are never called.
It would be great if you created a (failing) test case that demonstrates
your problem. Thanks!
Reinhard
Yoann Archambault wrote:
> Hi,
>
> Sorry i haven't gotten around to providing an example of my problem, but
> i believe i found the source.
> The include transformer creates endDocument sax events for every
> included xml chunk.
> Maybe it was the same thing that was messing with the xslt transformer,
> but it most certainly is messing with the SSF. In the case of an SSF
> serializer, on endDocument the serializer sends an incomplete document
> down to the SSF consumer generator.
>
> For example the following include file
>
> <?xml version='1.0' encoding='utf-8'?>
> <response xmlns:i="http://apache.org/cocoon/3.0/include">
> <i:include src="blockcontext:/Core/xml/testpart1.xml"/>
> <i:include src="blockcontext:/Core/xml/testpart2.xml"/>
> <i:include src="blockcontext:/Core/xml/testpart3.xml"/>
> </response>
>
> would recieve an endDocument at this point, obviously sending an
> incomplete document:
>
> <response xmlns:i="http://apache.org/cocoon/3.0/include">
> <testpart1>
> <foo>bar</foo>
> </testpart1>
>
>
> and the consumer pipeline (/serializer/params) crashes saying:
>
> [Fatal Error] :15:8: XML document structures must start and end within
> the same entity.
>
> Caused by: java.io.IOException: Can't connect to servlet URL
> servlet:/serializer/params.
> at
> org.apache.cocoon.servlet.ssf.ServletServiceSerializer.endDocument(ServletServiceSerializer.java:56)
> at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
> at
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
> at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
> at
> org.apache.cocoon.sax.component.IncludeTransformer.startElement(IncludeTransformer.java:72)
>
>
>
> Pretty straightforward... no need for a test this time around :p
> Yoann
>
> On Wed, 2009-03-25 at 14:13 +0100, Reinhard Pötz wrote:
>> Yoann,
>>
>> could you provide us with a integration test please because we haven't
>> been able to reproduce your problem. Just add your failing example to
>> the cocoon-samples module, create a patch and add it to the Cocoon 3 Jira.
>>
>> Thanks in advance!
>>
>> Reinhard
>>
>> Yoann Archambault wrote:
>>> Hi again!
>>> I'm afraid i spoke too soon... after i removed the xsl:output the error
>>> changed but its still there.
>>> This time around i dug a bit more and found that xalan's
>>> TransformerImpl.setContentHandler(handler) never gets called.
>>> setContentHandler also sets m_serializationHandler, which is used for
>>> synchronization during the xsl transformation in transformNode():1234
>>>
>>> I dont know which component has the responsability to call this
>>> setContentHandler. At first i thought about cocoon's
>>> XSLTTransformer.setSAXConsumer() but i might be off since i dont have
>>> the big picture in mind...
>>>
>>> At a glance i would say someone expected xalan to do something it can't
>>> do :)
>>>
>>> Here are some stacks:
>>>
>>> Found this when i dug into xalan's try-catches.
>>> This is where m_serializationHandler is used.
>>>
>>> java.lang.NullPointerException
>>> at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1234)
>>> at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3383)
>>> at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
>>> at org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
>>> at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
>>> at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
>>> at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
>>> at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
>>> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
>>> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>> at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
>>> at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:87)
>>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:113)
>>>
>>>
>>> Cocoon's side:
>>>
>>> Caused by: org.apache.cocoon.pipeline.ProcessingException: Can't parse
>>> url connection blockcontext:/Core/html/ReferenceNodeEdit.html
>>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
>>> at org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
>>> at org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
>>> at org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
>>> at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
>>> Caused by: java.lang.RuntimeException
>>> at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3418)
>>> at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
>>> at org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
>>> at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
>>> at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
>>> at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
>>> at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
>>> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
>>> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>> at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
>>> at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:87)
>>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:113)
>>> ... 82 more
>>>
>>>
>>>
>>> and here the is master pipeline in this context
>>>
>>> <map:match pattern="html/**.html">
>>> <map:match pattern="html/inc/**.html">
>>> <map:generate src="html/{map:1}.html" />
>>> <map:transform type="include" />
>>> <map:transform src="xslt/views/referenceNodeCRUD.xslt" />
>>> <map:serialize type="pretty-xhtml"/>
>>> </map:match>
>>> </map:match>
>>>
>>> As i understand, here is what happens sequentially (didnt plan on sharing this so bear with me)
>>>
>>> GET /html/inc/ReferenceNodeEdit.html
>>> setup serializer
>>> setup transformer node
>>> setup include node
>>> setup generator node
>>> generator reads file
>>> includer parses and calls:
>>> GET servlet:/data/ReferenceTreeNode/root
>>> controller gathers data and returns
>>> GET servlet:/data/done
>>> GET servlet:/gen/UserInfos
>>> INVOKE /gen/UserInfos
>>> GET /gen/SimpleOperation
>>> INVOKE /gen/SimpleOperation
>>> GET /gen/BetwixtControllerModel
>>> INVOKE /gen/BetwixtControllerModel
>>> INVOKE /data/done
>>> INVOKE /data/ReferenceTreeNode/root
>>> transformer starts running and here comes the NPE
>>> 500.xml returned
>>>
>>>
>>> Hope it helps.
>>> Ask if you need anything
>>> Yoann
>>>
>>> On Mon, 2009-03-23 at 14:44 +0100, Steven Dolg wrote:
>>>> Yoann Archambault schrieb:
>>>>> Glad to know i was wrong!
>>>>> It works fine without the xsl:output el.
>>>>>
>>>> Great!
>>>> Glad things are working for you now...
>>>>
>>>> Steven
>>>>> Thanks again!
>>>>> Yoann
>>>>>
>>>>> On Sun, 2009-03-22 at 12:36 -0400, Yoann Archambault wrote:
>>>>>
>>>>>> I do not believe i have an xsl:output elemenet in my stylesheet.
>>>>>> I`ll confirm that when i get home later.
>>>>>> Thanks
>>>>>> Yoann
>>>>>>
>>>>>> On Sun, 22 Mar 2009 14:49 +0100, "Steven Dolg" <st...@indoqa.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Okay, here's what I did.
>>>>>>>
>>>>>>> Sitemap
>>>>>>>
>>>>>>> <map:pipeline>
>>>>>>> <map:match pattern="data/done">
>>>>>>> <map:generate src="bug-fixing/BasicOperationResponse.xml" />
>>>>>>> <map:transform type="include" />
>>>>>>> <map:transform src="bug-fixing/referenceNodeCRUD.xslt" />
>>>>>>> <map:serialize type="xml" />
>>>>>>> </map:match>
>>>>>>> </map:pipeline>
>>>>>>>
>>>>>>> BasicOperationResponse.xml
>>>>>>>
>>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>> <response xmlns:i="http://apache.org/cocoon/3.0/include">
>>>>>>> <i:include src="servlet:/aggregation/sub-request"/>
>>>>>>> <i:include src="servlet:/aggregation/sub-request"/>
>>>>>>> <i:include src="servlet:/aggregation/sub-request"/>
>>>>>>> </response>
>>>>>>>
>>>>>>> (I adjusted the URLs of the includes to something that already existed
>>>>>>> in the sample-app; shouldn't make a difference though)
>>>>>>>
>>>>>>> referenceNodeCRUD.xslt
>>>>>>>
>>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>>>>>>> version="1.0">
>>>>>>> <xsl:output method="html"/>
>>>>>>>
>>>>>>> <xsl:template match="/">
>>>>>>> <div>
>>>>>>> <xsl:copy-of select="/response"/>
>>>>>>> </div>
>>>>>>> </xsl:template>
>>>>>>> </xsl:stylesheet>
>>>>>>>
>>>>>>> (just something very primitive)
>>>>>>>
>>>>>>> When I call this pipeline (http:/localhost:8890/data/done) I get just
>>>>>>> the same exception:
>>>>>>>
>>>>>>> <exception-report class="org.apache.cocoon.pipeline.ProcessingException"
>>>>>>> timestamp="Sun, 22 Mar 2009 14:33:39 +0100">
>>>>>>> <message>
>>>>>>> Can't parse url connection
>>>>>>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
>>>>>>> </message>
>>>>>>> <stacktrace>
>>>>>>> org.apache.cocoon.pipeline.ProcessingException: Can't parse url
>>>>>>> connection
>>>>>>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
>>>>>>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
>>>>>>> at
>>>>>>> org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
>>>>>>> at
>>>>>>> org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
>>>>>>> at
>>>>>>> org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
>>>>>>> at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
>>>>>>> ...
>>>>>>>
>>>>>>>
>>>>>>> However if I remove the "<xsl:output method="html"/>" from the XLST
>>>>>>> everything works fine.
>>>>>>>
>>>>>>> Hope this helps...
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Steven
>>>>>>>
>>>>>>>
>>>>>>> Sorry for all this text.
>>>>>>> I wanted to send the files as attachments but last time I did this there
>>>>>>> was a turmoil because some people were afraid their hard disks might
>>>>>>> fill up or something...
Re: C3: Xalan runtime error when using include and xslt
transformers back to back in pipeline
Posted by Yoann Archambault <ya...@fastmail.fm>.
Hi,
Sorry i haven't gotten around to providing an example of my problem, but
i believe i found the source.
The include transformer creates endDocument sax events for every
included xml chunk.
Maybe it was the same thing that was messing with the xslt transformer,
but it most certainly is messing with the SSF. In the case of an SSF
serializer, on endDocument the serializer sends an incomplete document
down to the SSF consumer generator.
For example the following include file
<?xml version='1.0' encoding='utf-8'?>
<response xmlns:i="http://apache.org/cocoon/3.0/include">
<i:include src="blockcontext:/Core/xml/testpart1.xml"/>
<i:include src="blockcontext:/Core/xml/testpart2.xml"/>
<i:include src="blockcontext:/Core/xml/testpart3.xml"/>
</response>
would recieve an endDocument at this point, obviously sending an
incomplete document:
<response xmlns:i="http://apache.org/cocoon/3.0/include">
<testpart1>
<foo>bar</foo>
</testpart1>
and the consumer pipeline (/serializer/params) crashes saying:
[Fatal Error] :15:8: XML document structures must start and end within
the same entity.
Caused by: java.io.IOException: Can't connect to servlet URL
servlet:/serializer/params.
at
org.apache.cocoon.servlet.ssf.ServletServiceSerializer.endDocument(ServletServiceSerializer.java:56)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at
org.apache.cocoon.sax.component.IncludeTransformer.startElement(IncludeTransformer.java:72)
Pretty straightforward... no need for a test this time around :p
Yoann
On Wed, 2009-03-25 at 14:13 +0100, Reinhard Pötz wrote:
> Yoann,
>
> could you provide us with a integration test please because we haven't
> been able to reproduce your problem. Just add your failing example to
> the cocoon-samples module, create a patch and add it to the Cocoon 3 Jira.
>
> Thanks in advance!
>
> Reinhard
>
> Yoann Archambault wrote:
> > Hi again!
> > I'm afraid i spoke too soon... after i removed the xsl:output the error
> > changed but its still there.
> > This time around i dug a bit more and found that xalan's
> > TransformerImpl.setContentHandler(handler) never gets called.
> > setContentHandler also sets m_serializationHandler, which is used for
> > synchronization during the xsl transformation in transformNode():1234
> >
> > I dont know which component has the responsability to call this
> > setContentHandler. At first i thought about cocoon's
> > XSLTTransformer.setSAXConsumer() but i might be off since i dont have
> > the big picture in mind...
> >
> > At a glance i would say someone expected xalan to do something it can't
> > do :)
> >
> > Here are some stacks:
> >
> > Found this when i dug into xalan's try-catches.
> > This is where m_serializationHandler is used.
> >
> > java.lang.NullPointerException
> > at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1234)
> > at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3383)
> > at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
> > at org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
> > at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
> > at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
> > at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
> > at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
> > at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
> > at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
> > at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
> > at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
> > at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:87)
> > at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:113)
> >
> >
> > Cocoon's side:
> >
> > Caused by: org.apache.cocoon.pipeline.ProcessingException: Can't parse
> > url connection blockcontext:/Core/html/ReferenceNodeEdit.html
> > at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
> > at org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
> > at org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
> > at org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
> > at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
> > Caused by: java.lang.RuntimeException
> > at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3418)
> > at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
> > at org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
> > at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
> > at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
> > at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
> > at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
> > at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
> > at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
> > at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
> > at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
> > at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:87)
> > at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:113)
> > ... 82 more
> >
> >
> >
> > and here the is master pipeline in this context
> >
> > <map:match pattern="html/**.html">
> > <map:match pattern="html/inc/**.html">
> > <map:generate src="html/{map:1}.html" />
> > <map:transform type="include" />
> > <map:transform src="xslt/views/referenceNodeCRUD.xslt" />
> > <map:serialize type="pretty-xhtml"/>
> > </map:match>
> > </map:match>
> >
> > As i understand, here is what happens sequentially (didnt plan on sharing this so bear with me)
> >
> > GET /html/inc/ReferenceNodeEdit.html
> > setup serializer
> > setup transformer node
> > setup include node
> > setup generator node
> > generator reads file
> > includer parses and calls:
> > GET servlet:/data/ReferenceTreeNode/root
> > controller gathers data and returns
> > GET servlet:/data/done
> > GET servlet:/gen/UserInfos
> > INVOKE /gen/UserInfos
> > GET /gen/SimpleOperation
> > INVOKE /gen/SimpleOperation
> > GET /gen/BetwixtControllerModel
> > INVOKE /gen/BetwixtControllerModel
> > INVOKE /data/done
> > INVOKE /data/ReferenceTreeNode/root
> > transformer starts running and here comes the NPE
> > 500.xml returned
> >
> >
> > Hope it helps.
> > Ask if you need anything
> > Yoann
> >
> > On Mon, 2009-03-23 at 14:44 +0100, Steven Dolg wrote:
> >> Yoann Archambault schrieb:
> >>> Glad to know i was wrong!
> >>> It works fine without the xsl:output el.
> >>>
> >> Great!
> >> Glad things are working for you now...
> >>
> >> Steven
> >>> Thanks again!
> >>> Yoann
> >>>
> >>> On Sun, 2009-03-22 at 12:36 -0400, Yoann Archambault wrote:
> >>>
> >>>> I do not believe i have an xsl:output elemenet in my stylesheet.
> >>>> I`ll confirm that when i get home later.
> >>>> Thanks
> >>>> Yoann
> >>>>
> >>>> On Sun, 22 Mar 2009 14:49 +0100, "Steven Dolg" <st...@indoqa.com>
> >>>> wrote:
> >>>>
> >>>>> Okay, here's what I did.
> >>>>>
> >>>>> Sitemap
> >>>>>
> >>>>> <map:pipeline>
> >>>>> <map:match pattern="data/done">
> >>>>> <map:generate src="bug-fixing/BasicOperationResponse.xml" />
> >>>>> <map:transform type="include" />
> >>>>> <map:transform src="bug-fixing/referenceNodeCRUD.xslt" />
> >>>>> <map:serialize type="xml" />
> >>>>> </map:match>
> >>>>> </map:pipeline>
> >>>>>
> >>>>> BasicOperationResponse.xml
> >>>>>
> >>>>> <?xml version="1.0" encoding="UTF-8"?>
> >>>>> <response xmlns:i="http://apache.org/cocoon/3.0/include">
> >>>>> <i:include src="servlet:/aggregation/sub-request"/>
> >>>>> <i:include src="servlet:/aggregation/sub-request"/>
> >>>>> <i:include src="servlet:/aggregation/sub-request"/>
> >>>>> </response>
> >>>>>
> >>>>> (I adjusted the URLs of the includes to something that already existed
> >>>>> in the sample-app; shouldn't make a difference though)
> >>>>>
> >>>>> referenceNodeCRUD.xslt
> >>>>>
> >>>>> <?xml version="1.0" encoding="UTF-8"?>
> >>>>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> >>>>> version="1.0">
> >>>>> <xsl:output method="html"/>
> >>>>>
> >>>>> <xsl:template match="/">
> >>>>> <div>
> >>>>> <xsl:copy-of select="/response"/>
> >>>>> </div>
> >>>>> </xsl:template>
> >>>>> </xsl:stylesheet>
> >>>>>
> >>>>> (just something very primitive)
> >>>>>
> >>>>> When I call this pipeline (http:/localhost:8890/data/done) I get just
> >>>>> the same exception:
> >>>>>
> >>>>> <exception-report class="org.apache.cocoon.pipeline.ProcessingException"
> >>>>> timestamp="Sun, 22 Mar 2009 14:33:39 +0100">
> >>>>> <message>
> >>>>> Can't parse url connection
> >>>>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
> >>>>> </message>
> >>>>> <stacktrace>
> >>>>> org.apache.cocoon.pipeline.ProcessingException: Can't parse url
> >>>>> connection
> >>>>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
> >>>>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
> >>>>> at
> >>>>> org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
> >>>>> at
> >>>>> org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
> >>>>> at
> >>>>> org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
> >>>>> at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
> >>>>> ...
> >>>>>
> >>>>>
> >>>>> However if I remove the "<xsl:output method="html"/>" from the XLST
> >>>>> everything works fine.
> >>>>>
> >>>>> Hope this helps...
> >>>>>
> >>>>> Cheers,
> >>>>> Steven
> >>>>>
> >>>>>
> >>>>> Sorry for all this text.
> >>>>> I wanted to send the files as attachments but last time I did this there
> >>>>> was a turmoil because some people were afraid their hard disks might
> >>>>> fill up or something...
> >>>>>
> >>>
> >
> >
>
>
Re: C3: Xalan runtime error when using include and xslt transformers
back to back in pipeline
Posted by Reinhard Pötz <re...@apache.org>.
Yoann,
could you provide us with a integration test please because we haven't
been able to reproduce your problem. Just add your failing example to
the cocoon-samples module, create a patch and add it to the Cocoon 3 Jira.
Thanks in advance!
Reinhard
Yoann Archambault wrote:
> Hi again!
> I'm afraid i spoke too soon... after i removed the xsl:output the error
> changed but its still there.
> This time around i dug a bit more and found that xalan's
> TransformerImpl.setContentHandler(handler) never gets called.
> setContentHandler also sets m_serializationHandler, which is used for
> synchronization during the xsl transformation in transformNode():1234
>
> I dont know which component has the responsability to call this
> setContentHandler. At first i thought about cocoon's
> XSLTTransformer.setSAXConsumer() but i might be off since i dont have
> the big picture in mind...
>
> At a glance i would say someone expected xalan to do something it can't
> do :)
>
> Here are some stacks:
>
> Found this when i dug into xalan's try-catches.
> This is where m_serializationHandler is used.
>
> java.lang.NullPointerException
> at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1234)
> at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3383)
> at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
> at org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
> at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
> at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
> at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
> at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
> at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
> at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:87)
> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:113)
>
>
> Cocoon's side:
>
> Caused by: org.apache.cocoon.pipeline.ProcessingException: Can't parse
> url connection blockcontext:/Core/html/ReferenceNodeEdit.html
> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
> at org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
> at org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
> at org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
> at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
> Caused by: java.lang.RuntimeException
> at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3418)
> at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
> at org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
> at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
> at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
> at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
> at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
> at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
> at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:87)
> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:113)
> ... 82 more
>
>
>
> and here the is master pipeline in this context
>
> <map:match pattern="html/**.html">
> <map:match pattern="html/inc/**.html">
> <map:generate src="html/{map:1}.html" />
> <map:transform type="include" />
> <map:transform src="xslt/views/referenceNodeCRUD.xslt" />
> <map:serialize type="pretty-xhtml"/>
> </map:match>
> </map:match>
>
> As i understand, here is what happens sequentially (didnt plan on sharing this so bear with me)
>
> GET /html/inc/ReferenceNodeEdit.html
> setup serializer
> setup transformer node
> setup include node
> setup generator node
> generator reads file
> includer parses and calls:
> GET servlet:/data/ReferenceTreeNode/root
> controller gathers data and returns
> GET servlet:/data/done
> GET servlet:/gen/UserInfos
> INVOKE /gen/UserInfos
> GET /gen/SimpleOperation
> INVOKE /gen/SimpleOperation
> GET /gen/BetwixtControllerModel
> INVOKE /gen/BetwixtControllerModel
> INVOKE /data/done
> INVOKE /data/ReferenceTreeNode/root
> transformer starts running and here comes the NPE
> 500.xml returned
>
>
> Hope it helps.
> Ask if you need anything
> Yoann
>
> On Mon, 2009-03-23 at 14:44 +0100, Steven Dolg wrote:
>> Yoann Archambault schrieb:
>>> Glad to know i was wrong!
>>> It works fine without the xsl:output el.
>>>
>> Great!
>> Glad things are working for you now...
>>
>> Steven
>>> Thanks again!
>>> Yoann
>>>
>>> On Sun, 2009-03-22 at 12:36 -0400, Yoann Archambault wrote:
>>>
>>>> I do not believe i have an xsl:output elemenet in my stylesheet.
>>>> I`ll confirm that when i get home later.
>>>> Thanks
>>>> Yoann
>>>>
>>>> On Sun, 22 Mar 2009 14:49 +0100, "Steven Dolg" <st...@indoqa.com>
>>>> wrote:
>>>>
>>>>> Okay, here's what I did.
>>>>>
>>>>> Sitemap
>>>>>
>>>>> <map:pipeline>
>>>>> <map:match pattern="data/done">
>>>>> <map:generate src="bug-fixing/BasicOperationResponse.xml" />
>>>>> <map:transform type="include" />
>>>>> <map:transform src="bug-fixing/referenceNodeCRUD.xslt" />
>>>>> <map:serialize type="xml" />
>>>>> </map:match>
>>>>> </map:pipeline>
>>>>>
>>>>> BasicOperationResponse.xml
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>> <response xmlns:i="http://apache.org/cocoon/3.0/include">
>>>>> <i:include src="servlet:/aggregation/sub-request"/>
>>>>> <i:include src="servlet:/aggregation/sub-request"/>
>>>>> <i:include src="servlet:/aggregation/sub-request"/>
>>>>> </response>
>>>>>
>>>>> (I adjusted the URLs of the includes to something that already existed
>>>>> in the sample-app; shouldn't make a difference though)
>>>>>
>>>>> referenceNodeCRUD.xslt
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>>>>> version="1.0">
>>>>> <xsl:output method="html"/>
>>>>>
>>>>> <xsl:template match="/">
>>>>> <div>
>>>>> <xsl:copy-of select="/response"/>
>>>>> </div>
>>>>> </xsl:template>
>>>>> </xsl:stylesheet>
>>>>>
>>>>> (just something very primitive)
>>>>>
>>>>> When I call this pipeline (http:/localhost:8890/data/done) I get just
>>>>> the same exception:
>>>>>
>>>>> <exception-report class="org.apache.cocoon.pipeline.ProcessingException"
>>>>> timestamp="Sun, 22 Mar 2009 14:33:39 +0100">
>>>>> <message>
>>>>> Can't parse url connection
>>>>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
>>>>> </message>
>>>>> <stacktrace>
>>>>> org.apache.cocoon.pipeline.ProcessingException: Can't parse url
>>>>> connection
>>>>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
>>>>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
>>>>> at
>>>>> org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
>>>>> at
>>>>> org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
>>>>> at
>>>>> org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
>>>>> at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
>>>>> ...
>>>>>
>>>>>
>>>>> However if I remove the "<xsl:output method="html"/>" from the XLST
>>>>> everything works fine.
>>>>>
>>>>> Hope this helps...
>>>>>
>>>>> Cheers,
>>>>> Steven
>>>>>
>>>>>
>>>>> Sorry for all this text.
>>>>> I wanted to send the files as attachments but last time I did this there
>>>>> was a turmoil because some people were afraid their hard disks might
>>>>> fill up or something...
>>>>>
>>>
>
>
--
Reinhard Pötz Managing Director, {Indoqa} GmbH
http://www.indoqa.com/en/people/reinhard.poetz/
Member of the Apache Software Foundation
Apache Cocoon Committer, PMC member reinhard@apache.org
________________________________________________________________________
Re: C3: Xalan runtime error when using include and xslt
transformers back to back in pipeline
Posted by Yoann Archambault <ya...@fastmail.fm>.
Hi again!
I'm afraid i spoke too soon... after i removed the xsl:output the error
changed but its still there.
This time around i dug a bit more and found that xalan's
TransformerImpl.setContentHandler(handler) never gets called.
setContentHandler also sets m_serializationHandler, which is used for
synchronization during the xsl transformation in transformNode():1234
I dont know which component has the responsability to call this
setContentHandler. At first i thought about cocoon's
XSLTTransformer.setSAXConsumer() but i might be off since i dont have
the big picture in mind...
At a glance i would say someone expected xalan to do something it can't
do :)
Here are some stacks:
Found this when i dug into xalan's try-catches.
This is where m_serializationHandler is used.
java.lang.NullPointerException
at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1234)
at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3383)
at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
at org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:87)
at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:113)
Cocoon's side:
Caused by: org.apache.cocoon.pipeline.ProcessingException: Can't parse
url connection blockcontext:/Core/html/ReferenceNodeEdit.html
at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
at org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
at org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
at org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
Caused by: java.lang.RuntimeException
at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3418)
at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
at org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
at org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:515)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:87)
at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:113)
... 82 more
and here the is master pipeline in this context
<map:match pattern="html/**.html">
<map:match pattern="html/inc/**.html">
<map:generate src="html/{map:1}.html" />
<map:transform type="include" />
<map:transform src="xslt/views/referenceNodeCRUD.xslt" />
<map:serialize type="pretty-xhtml"/>
</map:match>
</map:match>
As i understand, here is what happens sequentially (didnt plan on sharing this so bear with me)
GET /html/inc/ReferenceNodeEdit.html
setup serializer
setup transformer node
setup include node
setup generator node
generator reads file
includer parses and calls:
GET servlet:/data/ReferenceTreeNode/root
controller gathers data and returns
GET servlet:/data/done
GET servlet:/gen/UserInfos
INVOKE /gen/UserInfos
GET /gen/SimpleOperation
INVOKE /gen/SimpleOperation
GET /gen/BetwixtControllerModel
INVOKE /gen/BetwixtControllerModel
INVOKE /data/done
INVOKE /data/ReferenceTreeNode/root
transformer starts running and here comes the NPE
500.xml returned
Hope it helps.
Ask if you need anything
Yoann
On Mon, 2009-03-23 at 14:44 +0100, Steven Dolg wrote:
> Yoann Archambault schrieb:
> > Glad to know i was wrong!
> > It works fine without the xsl:output el.
> >
> Great!
> Glad things are working for you now...
>
> Steven
> > Thanks again!
> > Yoann
> >
> > On Sun, 2009-03-22 at 12:36 -0400, Yoann Archambault wrote:
> >
> >> I do not believe i have an xsl:output elemenet in my stylesheet.
> >> I`ll confirm that when i get home later.
> >> Thanks
> >> Yoann
> >>
> >> On Sun, 22 Mar 2009 14:49 +0100, "Steven Dolg" <st...@indoqa.com>
> >> wrote:
> >>
> >>> Okay, here's what I did.
> >>>
> >>> Sitemap
> >>>
> >>> <map:pipeline>
> >>> <map:match pattern="data/done">
> >>> <map:generate src="bug-fixing/BasicOperationResponse.xml" />
> >>> <map:transform type="include" />
> >>> <map:transform src="bug-fixing/referenceNodeCRUD.xslt" />
> >>> <map:serialize type="xml" />
> >>> </map:match>
> >>> </map:pipeline>
> >>>
> >>> BasicOperationResponse.xml
> >>>
> >>> <?xml version="1.0" encoding="UTF-8"?>
> >>> <response xmlns:i="http://apache.org/cocoon/3.0/include">
> >>> <i:include src="servlet:/aggregation/sub-request"/>
> >>> <i:include src="servlet:/aggregation/sub-request"/>
> >>> <i:include src="servlet:/aggregation/sub-request"/>
> >>> </response>
> >>>
> >>> (I adjusted the URLs of the includes to something that already existed
> >>> in the sample-app; shouldn't make a difference though)
> >>>
> >>> referenceNodeCRUD.xslt
> >>>
> >>> <?xml version="1.0" encoding="UTF-8"?>
> >>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> >>> version="1.0">
> >>> <xsl:output method="html"/>
> >>>
> >>> <xsl:template match="/">
> >>> <div>
> >>> <xsl:copy-of select="/response"/>
> >>> </div>
> >>> </xsl:template>
> >>> </xsl:stylesheet>
> >>>
> >>> (just something very primitive)
> >>>
> >>> When I call this pipeline (http:/localhost:8890/data/done) I get just
> >>> the same exception:
> >>>
> >>> <exception-report class="org.apache.cocoon.pipeline.ProcessingException"
> >>> timestamp="Sun, 22 Mar 2009 14:33:39 +0100">
> >>> <message>
> >>> Can't parse url connection
> >>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
> >>> </message>
> >>> <stacktrace>
> >>> org.apache.cocoon.pipeline.ProcessingException: Can't parse url
> >>> connection
> >>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
> >>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
> >>> at
> >>> org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
> >>> at
> >>> org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
> >>> at
> >>> org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
> >>> at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
> >>> ...
> >>>
> >>>
> >>> However if I remove the "<xsl:output method="html"/>" from the XLST
> >>> everything works fine.
> >>>
> >>> Hope this helps...
> >>>
> >>> Cheers,
> >>> Steven
> >>>
> >>>
> >>> Sorry for all this text.
> >>> I wanted to send the files as attachments but last time I did this there
> >>> was a turmoil because some people were afraid their hard disks might
> >>> fill up or something...
> >>>
> >
> >
>
Re: C3: Xalan runtime error when using include and xslt transformers
back to back in pipeline
Posted by Steven Dolg <st...@indoqa.com>.
Yoann Archambault schrieb:
> Glad to know i was wrong!
> It works fine without the xsl:output el.
>
Great!
Glad things are working for you now...
Steven
> Thanks again!
> Yoann
>
> On Sun, 2009-03-22 at 12:36 -0400, Yoann Archambault wrote:
>
>> I do not believe i have an xsl:output elemenet in my stylesheet.
>> I`ll confirm that when i get home later.
>> Thanks
>> Yoann
>>
>> On Sun, 22 Mar 2009 14:49 +0100, "Steven Dolg" <st...@indoqa.com>
>> wrote:
>>
>>> Okay, here's what I did.
>>>
>>> Sitemap
>>>
>>> <map:pipeline>
>>> <map:match pattern="data/done">
>>> <map:generate src="bug-fixing/BasicOperationResponse.xml" />
>>> <map:transform type="include" />
>>> <map:transform src="bug-fixing/referenceNodeCRUD.xslt" />
>>> <map:serialize type="xml" />
>>> </map:match>
>>> </map:pipeline>
>>>
>>> BasicOperationResponse.xml
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <response xmlns:i="http://apache.org/cocoon/3.0/include">
>>> <i:include src="servlet:/aggregation/sub-request"/>
>>> <i:include src="servlet:/aggregation/sub-request"/>
>>> <i:include src="servlet:/aggregation/sub-request"/>
>>> </response>
>>>
>>> (I adjusted the URLs of the includes to something that already existed
>>> in the sample-app; shouldn't make a difference though)
>>>
>>> referenceNodeCRUD.xslt
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>>> version="1.0">
>>> <xsl:output method="html"/>
>>>
>>> <xsl:template match="/">
>>> <div>
>>> <xsl:copy-of select="/response"/>
>>> </div>
>>> </xsl:template>
>>> </xsl:stylesheet>
>>>
>>> (just something very primitive)
>>>
>>> When I call this pipeline (http:/localhost:8890/data/done) I get just
>>> the same exception:
>>>
>>> <exception-report class="org.apache.cocoon.pipeline.ProcessingException"
>>> timestamp="Sun, 22 Mar 2009 14:33:39 +0100">
>>> <message>
>>> Can't parse url connection
>>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
>>> </message>
>>> <stacktrace>
>>> org.apache.cocoon.pipeline.ProcessingException: Can't parse url
>>> connection
>>> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
>>> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
>>> at
>>> org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
>>> at
>>> org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
>>> at
>>> org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
>>> at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
>>> ...
>>>
>>>
>>> However if I remove the "<xsl:output method="html"/>" from the XLST
>>> everything works fine.
>>>
>>> Hope this helps...
>>>
>>> Cheers,
>>> Steven
>>>
>>>
>>> Sorry for all this text.
>>> I wanted to send the files as attachments but last time I did this there
>>> was a turmoil because some people were afraid their hard disks might
>>> fill up or something...
>>>
>
>
Re: C3: Xalan runtime error when using include and xslt
transformers back to back in pipeline
Posted by Yoann Archambault <ya...@fastmail.fm>.
Glad to know i was wrong!
It works fine without the xsl:output el.
Thanks again!
Yoann
On Sun, 2009-03-22 at 12:36 -0400, Yoann Archambault wrote:
> I do not believe i have an xsl:output elemenet in my stylesheet.
> I`ll confirm that when i get home later.
> Thanks
> Yoann
>
> On Sun, 22 Mar 2009 14:49 +0100, "Steven Dolg" <st...@indoqa.com>
> wrote:
> > Okay, here's what I did.
> >
> > Sitemap
> >
> > <map:pipeline>
> > <map:match pattern="data/done">
> > <map:generate src="bug-fixing/BasicOperationResponse.xml" />
> > <map:transform type="include" />
> > <map:transform src="bug-fixing/referenceNodeCRUD.xslt" />
> > <map:serialize type="xml" />
> > </map:match>
> > </map:pipeline>
> >
> > BasicOperationResponse.xml
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <response xmlns:i="http://apache.org/cocoon/3.0/include">
> > <i:include src="servlet:/aggregation/sub-request"/>
> > <i:include src="servlet:/aggregation/sub-request"/>
> > <i:include src="servlet:/aggregation/sub-request"/>
> > </response>
> >
> > (I adjusted the URLs of the includes to something that already existed
> > in the sample-app; shouldn't make a difference though)
> >
> > referenceNodeCRUD.xslt
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > version="1.0">
> > <xsl:output method="html"/>
> >
> > <xsl:template match="/">
> > <div>
> > <xsl:copy-of select="/response"/>
> > </div>
> > </xsl:template>
> > </xsl:stylesheet>
> >
> > (just something very primitive)
> >
> > When I call this pipeline (http:/localhost:8890/data/done) I get just
> > the same exception:
> >
> > <exception-report class="org.apache.cocoon.pipeline.ProcessingException"
> > timestamp="Sun, 22 Mar 2009 14:33:39 +0100">
> > <message>
> > Can't parse url connection
> > file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
> > </message>
> > <stacktrace>
> > org.apache.cocoon.pipeline.ProcessingException: Can't parse url
> > connection
> > file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
> > at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
> > at
> > org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
> > at
> > org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
> > at
> > org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
> > at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
> > ...
> >
> >
> > However if I remove the "<xsl:output method="html"/>" from the XLST
> > everything works fine.
> >
> > Hope this helps...
> >
> > Cheers,
> > Steven
> >
> >
> > Sorry for all this text.
> > I wanted to send the files as attachments but last time I did this there
> > was a turmoil because some people were afraid their hard disks might
> > fill up or something...
Re: C3: Xalan runtime error when using include and xslt transformers
back to back in pipeline
Posted by Yoann Archambault <ya...@fastmail.fm>.
I do not believe i have an xsl:output elemenet in my stylesheet.
I`ll confirm that when i get home later.
Thanks
Yoann
On Sun, 22 Mar 2009 14:49 +0100, "Steven Dolg" <st...@indoqa.com>
wrote:
> Okay, here's what I did.
>
> Sitemap
>
> <map:pipeline>
> <map:match pattern="data/done">
> <map:generate src="bug-fixing/BasicOperationResponse.xml" />
> <map:transform type="include" />
> <map:transform src="bug-fixing/referenceNodeCRUD.xslt" />
> <map:serialize type="xml" />
> </map:match>
> </map:pipeline>
>
> BasicOperationResponse.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
> <response xmlns:i="http://apache.org/cocoon/3.0/include">
> <i:include src="servlet:/aggregation/sub-request"/>
> <i:include src="servlet:/aggregation/sub-request"/>
> <i:include src="servlet:/aggregation/sub-request"/>
> </response>
>
> (I adjusted the URLs of the includes to something that already existed
> in the sample-app; shouldn't make a difference though)
>
> referenceNodeCRUD.xslt
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
> <xsl:output method="html"/>
>
> <xsl:template match="/">
> <div>
> <xsl:copy-of select="/response"/>
> </div>
> </xsl:template>
> </xsl:stylesheet>
>
> (just something very primitive)
>
> When I call this pipeline (http:/localhost:8890/data/done) I get just
> the same exception:
>
> <exception-report class="org.apache.cocoon.pipeline.ProcessingException"
> timestamp="Sun, 22 Mar 2009 14:33:39 +0100">
> <message>
> Can't parse url connection
> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
> </message>
> <stacktrace>
> org.apache.cocoon.pipeline.ProcessingException: Can't parse url
> connection
> file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
> at
> org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
> at
> org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
> at
> org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
> at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
> ...
>
>
> However if I remove the "<xsl:output method="html"/>" from the XLST
> everything works fine.
>
> Hope this helps...
>
> Cheers,
> Steven
>
>
> Sorry for all this text.
> I wanted to send the files as attachments but last time I did this there
> was a turmoil because some people were afraid their hard disks might
> fill up or something...
--
Yoann Archambault
yarc@fastmail.fm
Re: C3: Xalan runtime error when using include and xslt transformers
back to back in pipeline
Posted by Steven Dolg <st...@indoqa.com>.
Okay, here's what I did.
Sitemap
<map:pipeline>
<map:match pattern="data/done">
<map:generate src="bug-fixing/BasicOperationResponse.xml" />
<map:transform type="include" />
<map:transform src="bug-fixing/referenceNodeCRUD.xslt" />
<map:serialize type="xml" />
</map:match>
</map:pipeline>
BasicOperationResponse.xml
<?xml version="1.0" encoding="UTF-8"?>
<response xmlns:i="http://apache.org/cocoon/3.0/include">
<i:include src="servlet:/aggregation/sub-request"/>
<i:include src="servlet:/aggregation/sub-request"/>
<i:include src="servlet:/aggregation/sub-request"/>
</response>
(I adjusted the URLs of the includes to something that already existed
in the sample-app; shouldn't make a difference though)
referenceNodeCRUD.xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<div>
<xsl:copy-of select="/response"/>
</div>
</xsl:template>
</xsl:stylesheet>
(just something very primitive)
When I call this pipeline (http:/localhost:8890/data/done) I get just
the same exception:
<exception-report class="org.apache.cocoon.pipeline.ProcessingException" timestamp="Sun, 22 Mar 2009 14:33:39 +0100">
<message>
Can't parse url connection file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
</message>
<stacktrace>
org.apache.cocoon.pipeline.ProcessingException: Can't parse url connection file:/C:/work/cocoon-3/trunk/cocoon-sample/src/main/resources/COB-INF/bug-fixing/BasicOperationResponse.xml
at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
at org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
at org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
at org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
...
However if I remove the "<xsl:output method="html"/>" from the XLST
everything works fine.
Hope this helps...
Cheers,
Steven
Sorry for all this text.
I wanted to send the files as attachments but last time I did this there
was a turmoil because some people were afraid their hard disks might
fill up or something...
Re: C3: Xalan runtime error when using include and xslt transformers
back to back in pipeline
Posted by Steven Dolg <st...@indoqa.com>.
Yoann Archambault schrieb:
> Hi everyone!
>
Hello Yoann,
> I started coding for a new project and decided to go ahead with Cocoon 3
> (i'm pretty much sticking to the trunk) and i like what i see. Alot
> actually! Really looks like the next step forward for XML based webapp
> frameworks.
>
> I'm not really sure this is the right mailling list, but then again i
> didnt see alot of questions for cocoon 3 in the user lists ;)
>
> Down to business,
> I have this error when i try to use a pipeline which has two
> transformations back to back, an include and an xslt.
> My various attempts at getting this to work told a couple of things
> -The pipeline works when one of the transformer is there, not when both
> are.
> -I tried taking the IncludeTransfo output to a new xml file and when
> feeding it to the XSLT transformer by FileGenerator, it works.
> -I have tried with other XML and XSLT files (taken from the working
> cocoon-sample) and it doesnt work either.
> -When the Include transformer doesnt have any work to do (no i: element
> to include in the source xml) the pipeline works with both transformer.
>
> Anyway, the bottom line is i'm pretty sure its not the XML or XSLT files
> that are faulty here.
> Is is something else i did wrong? Any thoughts?
>
I can reproduce the behavior you described above and I already have an
idea what's going wrong.
It should be possible to find a solution for this before ApacheCon starts.
I'll keep you posted...
Steven
> Some details:
>
> REVEISION alpha-2, 754707
>
> PIPELINE that fails. It is called by a controller and it's the last
> pipeline before returning a response to the client.
>
> <map:match pattern="data/done">
> <map:generate src="xml/responses/BasicOperationResponse.xml" />
> <map:transform type="include" />
> <map:transform src="xslt/views/referenceNodeCRUD.xslt" />
> <map:serialize type="xml" />
> </map:match>
>
>
>
> SOURCE XML
>
> <?xml version="1.0" encoding="UTF-8"?>
> <response xmlns:i="http://apache.org/cocoon/3.0/include">
> <i:include src="servlet:/gen/UserInfos"/>
> <i:include src="servlet:/gen/SimpleOperation"/>
> <i:include src="servlet:/gen/BetwixtControllerModel"/>
> </response>
>
>
> ERROR STs
>
> 17:49:37,235 ERROR [org.apache.cocoon.servlet.XMLSitemapServlet] An
> exception occurred while executing the sitemap.
> org.apache.cocoon.sitemap.InvocationException:
> org.apache.cocoon.pipeline.ProcessingException: Can't parse url
> connection blockcontext:/Core/xml/responses/BasicOperationResponse.xml
> at
> org.apache.cocoon.sitemap.util.ExceptionHandler.getInvocationException(ExceptionHandler.java:39)
> at
> org.apache.cocoon.sitemap.node.PipelineNode.handleException(PipelineNode.java:91)
> at
> org.apache.cocoon.sitemap.node.PipelineNode.invoke(PipelineNode.java:61)
> at
> org.apache.cocoon.sitemap.node.AbstractSitemapNode.invoke(AbstractSitemapNode.java:97)
> at
> org.apache.cocoon.sitemap.node.PipelinesNode.invoke(PipelinesNode.java:40)
> at
> org.apache.cocoon.sitemap.node.AbstractSitemapNode.invoke(AbstractSitemapNode.java:97)
> at
> org.apache.cocoon.sitemap.node.Sitemap.invoke(Sitemap.java:33)
> at
> org.apache.cocoon.servlet.XMLSitemapServlet.invoke(XMLSitemapServlet.java:82)
> at
> org.apache.cocoon.servlet.XMLSitemapServlet.service(XMLSitemapServlet.java:113)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
> at
> org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:77)
> at
> org.apache.cocoon.jnet.URLHandlerFactoryCollector.installURLHandlers(URLHandlerFactoryCollector.java:46)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>
>
> Caused by: org.apache.cocoon.pipeline.ProcessingException: Can't parse
> url connection
> blockcontext:/Core/xml/responses/BasicOperationResponse.xml
> at org.apache.cocoon.sax.util.XMLUtils.toSax(XMLUtils.java:117)
> at
> org.apache.cocoon.sax.component.FileGenerator.execute(FileGenerator.java:81)
> at
> org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:147)
> at
> org.apache.cocoon.pipeline.CachingPipeline.execute(CachingPipeline.java:124)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>
>
> Caused by: java.lang.RuntimeException
> at
> org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3418)
> at
> org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:389)
> at
> org.apache.cocoon.xml.sax.AbstractSAXPipe.endDocument(AbstractSAXPipe.java:58)
> at
> org.apache.cocoon.sax.AbstractSAXTransformer.endDocument(AbstractSAXTransformer.java:47)
> at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:737)
>
>
>
> Thanks,
> Yoann
>
>
>
>
>