RE: Java objects in JX templates
java.lang.ClassNotFoundException: com/bizzdesign/risks/assessment/UploadedEvidence org.apache.cocoon.ProcessingException: Failed to execute pipeline.: file:/app/was/installedApps/riskmanager/riskmanager.ear/riskmanager-1.1. 0.132.war/content/secure/reports/templates/ineffective-controls.xml:104: 93:org.mozilla.javascript.JavaScriptException: java.lang.ClassNotFoundException: com/bizzdesign/risks/assessment/UploadedEvidence at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process XMLPipeline(AbstractProcessingPipeline.java:582) at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipe line.processXMLPipeline(AbstractCachingProcessingPipeline.java:183) ... Similair exceptions were thrown everywhere, saying that lots of classes couldn't be found anymore (UploadedEvidence class was only one of them). The application needed a reboot to get rid of this exception. Seems like the expression, after being evaluated for several times, messes up the class loader somehow... Bart. > -Oorspronkelijk bericht- > Van: Ralph Goers [mailto:[EMAIL PROTECTED] > Verzonden: dinsdag 31 januari 2006 14:48 > Aan: dev@cocoon.apache.org > Onderwerp: Re: Java objects in JX templates > > Not without a stack trace. > > Bart Molenkamp wrote: > > >>I've had problems with the following expression: > >> > >> > >> > >>(the expression is one line). > >> > >>This expression works, but somehow after calling the page a few times, > >>the application hangs. Took me a long time to figure it out. (I've > >>already solved it, simply by having a method > >>evidence.isUploadableEvidence() with the expression written in Java). > >> > >>Does anybody know what might be going wrong? (I'm just curious) > >> > >>Bart. > >> > >> > >>
Re: Java objects in JX templates
Not without a stack trace. Bart Molenkamp wrote: I've had problems with the following expression: (the expression is one line). This expression works, but somehow after calling the page a few times, the application hangs. Took me a long time to figure it out. (I've already solved it, simply by having a method evidence.isUploadableEvidence() with the expression written in Java). Does anybody know what might be going wrong? (I'm just curious) Bart.
RE: Java objects in JX templates
> -Oorspronkelijk bericht- > Van: Leszek Gawron [mailto:[EMAIL PROTECTED] > > This is not true. You can call static methods and even constructors. > Both from JXPath and JEXL. > > > > ${buffer.toString()} > > Works like a charm in trunk. > I've had problems with the following expression: (the expression is one line). This expression works, but somehow after calling the page a few times, the application hangs. Took me a long time to figure it out. (I've already solved it, simply by having a method evidence.isUploadableEvidence() with the expression written in Java). Does anybody know what might be going wrong? (I'm just curious) Bart.
Re: Java objects in JX templates
Sylvain Wallez wrote: Ugo Cei wrote: Our docs [1] state that something like: should work. However, that doesn't seem to be the case, at least in 2.1.8 while it apparently worked before. I did a few more tests and discovered that even simple cases like ${java.util.Date()} produce no output and no error message. This even if I put "Packages." in front of the package name. Is this a bug or what? You can only call methods on existing objects. I had to use a static method (only callable using JXPath!) as a workaround in the CForms macros: This is not true. You can call static methods and even constructors. Both from JXPath and JEXL. ${buffer.toString()} Works like a charm in trunk. value="#{org.apache.cocoon.forms.generation.JXMacrosHelper.createHelper($cocoon/consumer,$cocoon/request,$cocoon/parameters/locale)}"/> Sylvain -- Leszek Gawron [EMAIL PROTECTED] IT Manager MobileBox sp. z o.o. +48 (61) 855 06 67 http://www.mobilebox.pl mobile: +48 (501) 720 812 fax: +48 (61) 853 29 65
Re: Java objects in JX templates
Ugo Cei wrote: Our docs [1] state that something like: should work. However, that doesn't seem to be the case, at least in 2.1.8 while it apparently worked before. I did a few more tests and discovered that even simple cases like ${java.util.Date()} produce no output and no error message. This even if I put "Packages." in front of the package name. Is this a bug or what? You can only call methods on existing objects. I had to use a static method (only callable using JXPath!) as a workaround in the CForms macros: value="#{org.apache.cocoon.forms.generation.JXMacrosHelper.createHelper($cocoon/consumer,$cocoon/request,$cocoon/parameters/locale)}"/> Sylvain -- Sylvain WallezAnyware Technologies http://bluxte.net http://www.anyware-tech.com Apache Software Foundation Member Research & Technology Director
Re: Java objects in JX templates
Hello, I upgraded two webapps from Coccon 2.1.7 to 2.1.8 lately... And I found this thread intriguing, so I have added the following to one of my existing JX templates (which is run through a JX generator pipeline, invoked by flowscript): ${mytokenizer.nextToken()} The html result: alpha beta gamma So, it appears to work fine for flowscript! (Mi spiace, Ugo ;-) (Don't know about Javaflow, though!) Fabrizio BTW. the reason I was intrigued is that I'm using similar constructs in production webapps - which made me wonder why users haven't been complaining if indeed this feature had stopped working after migrating to Cocoon 2.1.8 :-> >> ${java.util.StringTokenizer(items, delims)} >> > According to my tests, it doesn't work in 2.1.8, regardless of > whether I use flow or not and whether I prepend "Packages." or not. > Can anyone else confirm this?
Re: Java objects in JX templates
Il giorno 27/gen/06, alle ore 21:10, Leszek Gawron ha scritto: One more thing: this construct ${java.util.StringTokenizer(items, delims)} will work only when .jx is invoked from flow. This is due to the fact that neither JEXL nor JXPath is able to reference packages/ create java objects. The functionality in fact is provided by Rhino library. According to my tests, it doesn't work in 2.1.8, regardless of whether I use flow or not and whether I prepend "Packages." or not. Can anyone else confirm this? Ugo -- Ugo Cei Tech Blog: http://agylen.com/ Open Source Zone: http://oszone.org/
Re: Java objects in JX templates
Ugo Cei wrote: Il giorno 27/gen/06, alle ore 15:54, Leszek Gawron ha scritto: Ugo Cei wrote: Our docs [1] state that something like: should work. However, that doesn't seem to be the case, at least in 2.1.8 while it apparently worked before. I did a few more tests and discovered that even simple cases like ${java.util.Date ()} produce no output and no error message. This even if I put "Packages." in front of the package name. Is this a bug or what? Ugo [1] http://cocoon.apache.org/2.1/userdocs/flow/jxtemplate.html Didn't you want to do: The code I copied above is straight from our docs, but it doesn't make an inch of a difference whether I change to what you suggest or not. The problem is that invoking Java class constructors or calling static methods does not work. As I replied in another message: referencing any java constructs like: - packages - classes - constructors - static methods - constants is available in jxtg via rhino (org.mozilla.javascript.NativeJavaClass, NativeJavaPackage, NativeJavaTopPackage). ${Packages} is simply a NativeJavaTopPackage and ${java} is a NativeJavaPackage. They are treated as ordinary view data. I have never tried but this should work also: value=${Packages.com.mycompany.some.very.long.package.name.MyConstantsClass}"/> Unfortunatelly in 2.1.x those variables are only properly initialized when flowscript is the controller. 2.2 artificialy creates those variables no matter if you already have rhino context available or not. -- Leszek Gawron [EMAIL PROTECTED] IT Manager MobileBox sp. z o.o. +48 (61) 855 06 67 http://www.mobilebox.pl mobile: +48 (501) 720 812 fax: +48 (61) 853 29 65
Re: Java objects in JX templates
Jens Maukisch wrote: Hi, [1] http://cocoon.apache.org/2.1/userdocs/flow/jxtemplate.html Didn't you want to do: Have you tried the sample mentioned in the Docs? It does not work for me either and your corrected code above too (C2.1.8). So I think it's a bug? One more thing: this construct ${java.util.StringTokenizer(items, delims)} will work only when .jx is invoked from flow. This is due to the fact that neither JEXL nor JXPath is able to reference packages/create java objects. The functionality in fact is provided by Rhino library. This is already fixed for 2.2-dev (still the dependency on Rhino remains). -- Leszek Gawron [EMAIL PROTECTED] IT Manager MobileBox sp. z o.o. +48 (61) 855 06 67 http://www.mobilebox.pl mobile: +48 (501) 720 812 fax: +48 (61) 853 29 65
Re: Java objects in JX templates
Il giorno 27/gen/06, alle ore 15:54, Leszek Gawron ha scritto: Ugo Cei wrote: Our docs [1] state that something like: should work. However, that doesn't seem to be the case, at least in 2.1.8 while it apparently worked before. I did a few more tests and discovered that even simple cases like ${java.util.Date ()} produce no output and no error message. This even if I put "Packages." in front of the package name. Is this a bug or what? Ugo [1] http://cocoon.apache.org/2.1/userdocs/flow/jxtemplate.html Didn't you want to do: The code I copied above is straight from our docs, but it doesn't make an inch of a difference whether I change to what you suggest or not. The problem is that invoking Java class constructors or calling static methods does not work. Ugo -- Ugo Cei Tech Blog: http://agylen.com/ Open Source Zone: http://oszone.org/
Re: Java objects in JX templates
Ugo Cei wrote: Our docs [1] state that something like: should work. However, that doesn't seem to be the case, at least in 2.1.8 while it apparently worked before. I did a few more tests and discovered that even simple cases like ${java.util.Date()} produce no output and no error message. This even if I put "Packages." in front of the package name. Is this a bug or what? Ugo [1] http://cocoon.apache.org/2.1/userdocs/flow/jxtemplate.html Didn't you want to do: -- Leszek Gawron [EMAIL PROTECTED] IT Manager MobileBox sp. z o.o. +48 (61) 855 06 67 http://www.mobilebox.pl mobile: +48 (501) 720 812 fax: +48 (61) 853 29 65