cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vadim Gritsenko" <vadim.gritse...@verizon.net>
Subject RE: RE: how to marshal objects within xsp
Date Wed, 10 Apr 2002 22:09:46 GMT
> From: a000@gmx.net [mailto:a000@gmx.net]
> 
> > > 1. Include Object as String:
> > >
> > >
> > > <xsp:page
> > >         language="java"
> > >         xmlns:xsp="http://apache.org/xsp"
> > >         xmlns:cinclude="http://apache.org/cocoon/include/1.0"
> > >         xmlns:util="http://apache.org/xsp/util/2.0"
> > > >
> > >         <some-items anAttr="aVal">
> > >             <util:include-expr>
> > >
> > <xsp:expr>model.getAnItemAsString()</xsp:expr>
> > >                  </util:include-expr>
> > >         </some-items>
> > >     </some-items>
> > > </xsp:page>
> > >
> > > The page does not compile. The method .getAnItemAsString is not
even
> > > executed.
> >
> > This will compile if you put everything on one line, no text nodes
in
> > the util:include-expr element:
> >
> >
<util:include-expr><xsp:expr>model.getAnItemAsString()</xsp:expr></util:
> > include-expr>
> >
> > Also, I would not recommend you this anyway because of re-parsing
> > performance penalty.
> 
> As follows I include my original sources and the corresponding output:
> (They slightly differ formally from the above mentioned example)
> 
> 
> Table.xsp:
> 
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsp:page
>         language="java"
>         xmlns:xsp="http://apache.org/xsp"
>         xmlns:cinclude="http://apache.org/cocoon/include/1.0"
>         xmlns:util="http://apache.org/xsp/util/2.0"
> >
> 
> <xsp:structure>
>   <xsp:include>web.ModelManager</xsp:include>
> </xsp:structure>
> 
> 
> <simple-items edit="true" curSel="2">
>     <xsp:logic>
>    ModelManager mm = new
> ModelManager();
> <util:include-
>
expr><util:expr>mm.marshal(mm.getSimpleItems())</util:expr></util:includ
e-
> expr>

You need <xsp:expr>mm.marshal(mm.getSimpleItems())</xsp:expr> here to
treat Java as Java but not as text. (See above!!!)

(not sure about util:expr, try with it and without it, but xsp:expr is
must)

Vadim

>     </xsp:logic>
> </simple-items>
> </xsp:page>
> 
> resulting web-page:
> 
> 
> org.apache.cocoon.ProcessingException: Language Exception:
> org.apache.cocoon.components.language.LanguageException: Error
compiling
> Table_xsp: Line 136,
> column 111: ')' expected. Line 0, column 0: 1 error
> 
> 
> created Table_xsp.java:
> 
>   try {
>         newParser = (org.apache.cocoon.components.parser.Parser)
>                     this.manager.lookup(
>
org.apache.cocoon.components.parser.Parser.ROLE);
>         InputSource __is = new InputSource(
>                              new
>
StringReader(String.valueOf(this.characters("mm.marshal(mm.getSimpleItem
s())")
> ;)));
> 
> 
>         XSPUtil.include(__is, this.contentHandler, newParser);
>       } catch (Exception e) {
>         getLogger().error("Could not include page", e);
>       }
>       finally { if (newParser != null)
>                   this.manager.release((Component) newParser);
>                 } }
> As you can see there is a ";" in between a java statement:
'...s())");)));'
> 
> Is there any other error in my page?
> 
> 
> > > 2.
> > > Use Castor's marshalling capabilities:
> > >
> > > <some-items anAttr="aVal">
> > >     <xsp:logic>
> > >         model.marshal(this.contentHandler);
> > >     </xsp:logic>
> > > </some-items>
> >
> > This sounds perfect.
> >
> >
> > > Within the method I pass the contentHandler (wrapped into
> > > DocumentHandlerAdapter) to castor's marshaller before I perfom
> > mashal(obj).
> > >
> > > As A result the cinclude transformer (which I need) complains
about a
> > > Nullpointer exception.
> >
> > Make sure that model.marshal() does not call startDocument() and
> > endDocument() on the contentHandler. If it does, you should strip
these
> > calls by wrapping contentHandler into the IncludeXMLConsumer.
> >
> > This should work. Or we have a bug.
> 
> I include fragments of the original sources:
> 
> Table.xsp:
> ...
> <simple-items edit="true" curSel="2">
>     <xsp:logic>
>    	ModelManager mm = new ModelManager();
>    	mm.chmarshal(mm.getSimpleItems(), this.contentHandler);
>     </xsp:logic>
> </simple-items>
> ..
> 
> ModelManager.java:
> ...
>  public void chmarshal (Collection col, org.xml.sax.ContentHandler
> _docHandler){
>     Marshaller marshaller =  marshaller = new Marshaller(new
> org.apache.cocoon.xml.DocumentHandlerAdapter(_docHandler));
>     Iterator it = col.iterator();
>     while (it.hasNext()){
>       Object obj = it.next();
>       marshaller.marshal(obj);
>     }
>  }
> ...
> 
> I include two distinct possibilities to call the page once only
processing
> the xsp the other one including transformation with a stylesheet.
> 
> 
> a) only processing the xsp
> 
> Sitemap entry:
> 
>  		<map:match pattern="ti" >
> 			<map:generate type="serverpages"
src="Table.xsp"/>
> 			<map:transform type="cinclude"/>
> 			<map:serialize type="xml"/>
> 		</map:match>
> 
> Result in web browser:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <simple-items edit="true" curSel="2" xmlns:xsp="http://apache.org/xsp"
> xmlns:util="http://apache.org/xsp/util/2.0"
> xmlns:cinclude="http://apache.org/cocoon/include/1.0">
> <?xml version="1.0" encoding="UTF-8"?>
> <simple-item weight="111"
> id="1"><name>one</name><weight-msg/><id-msg/><name-msg/></simple-item>
> <?xml version="1.0" encoding="UTF-8"?>
> <simple-item weight="22"
> id="2"><name>two</name><weight-msg/><id-msg/><name-msg/></simple-item>
> <?xml version="1.0" encoding="UTF-8"?>
> <simple-item weight="33"
>
id="3"><name>three</name><weight-msg/><id-msg/><name-msg/></simple-item>
> 
> Note that "<?xml version="1.0" encoding="UTF-8"?>" is inserted before
each
> marshalled object. If I include the output statically to an xml page
my
> Stylesheet complains about that and refuses transformation.
> 
> b)including transformation with a stylesheet
> 
> Site map entry:
> 
>   <map:match pattern="tbl.htm">
>                   <map:generate type="serverpages" src="Table.xsp"/>
>                   <map:transform type="cinclude"/>
>                   <map:transform src="Table.xsl"/>
>                   <map:serialize type="html"/>
>   </map:match>
> 
> output from cocoon's logfile:
> 
>   ERROR   (2002-04-10) 22:04.38:129   [sitemap.generator.velocity]
(/pcsb/)
> HttpProcessor[8080][0]/VelocityGenerator: ResourceManager : unable to
find
> resource 'VM_global_library.vm' in any resource loader.
> ERROR   (2002-04-10) 22:04.38:189   [sitemap.generator.velocity]
(/pcsb/)
> HttpProcessor[8080][0]/VelocityGenerator: ResourceManager : unable to
find
> resource 'VM_global_library.vm' in any resource loader.
> ERROR   (2002-04-10) 22:04.38:239   [sitemap.generator.xmldb] (/pcsb/)
> HttpProcessor[8080][0]/XMLDBGenerator: There was a problem setting up
the
> connection
> ERROR   (2002-04-10) 22:04.38:239   [sitemap.generator.xmldb] (/pcsb/)
> HttpProcessor[8080][0]/XMLDBGenerator: Make sure that your driver is
available
> ERROR   (2002-04-10) 22:04.38:249   [sitemap.generator.xmldb] (/pcsb/)
> HttpProcessor[8080][0]/XMLDBGenerator: There was a problem setting up
the
> connection
> ERROR   (2002-04-10) 22:04.38:249   [sitemap.generator.xmldb] (/pcsb/)
> HttpProcessor[8080][0]/XMLDBGenerator: Make sure that your driver is
available
> ERROR   (2002-04-10) 22:04.38:270
[sitemap.generator.xmldbcollection]
> (/pcsb/) HttpProcessor[8080][0]/XMLDBCollectionGenerator: There was a
problem
> setting up the connection
> ERROR   (2002-04-10) 22:04.38:270
[sitemap.generator.xmldbcollection]
> (/pcsb/) HttpProcessor[8080][0]/XMLDBCollectionGenerator: Make sure
that your
> driver is available
> ERROR   (2002-04-10) 22:04.38:280
[sitemap.generator.xmldbcollection]
> (/pcsb/) HttpProcessor[8080][0]/XMLDBCollectionGenerator: There was a
problem
> setting up the connection
> ERROR   (2002-04-10) 22:04.38:280
[sitemap.generator.xmldbcollection]
> (/pcsb/) HttpProcessor[8080][0]/XMLDBCollectionGenerator: Make sure
that your
> driver is available
> FATAL_E (2002-04-10) 22:05.26:960   [core.xslt-processor]
> (/pcsb/table/tbl.htm) HttpProcessor[8080][0]/TraxErrorHandler: Error
in
> TraxTransformer:
> javax.xml.transform.TransformerException:
java.lang.NullPointerException
> javax.xml.transform.TransformerException:
java.lang.NullPointerException
> 	at
>
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerIm
pl.jav
> a:1230)
> 	at
>
org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:31
39)
> 	at java.lang.Thread.run(Thread.java:484)
> 
> Note: without cinclude there is no exception. Unfortunately I need
cinclude
> for a more complex dynamic stylesheet.
> 
> In both cases (with or without cinclude) the stylestheed doesn't
process any
> of the marshalled items.
> 
> Any ideas?
> 
> Harald
> 
> --
> GMX - Die Kommunikationsplattform im Internet.
> http://www.gmx.net
> 
> 
> ---------------------------------------------------------------------
> Please check that your question has not already been answered in the
> FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>
> 
> To unsubscribe, e-mail: <cocoon-users-unsubscribe@xml.apache.org>
> For additional commands, e-mail: <cocoon-users-help@xml.apache.org>



---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>

To unsubscribe, e-mail: <cocoon-users-unsubscribe@xml.apache.org>
For additional commands, e-mail: <cocoon-users-help@xml.apache.org>


Mime
View raw message