Hi Reto,
yes, debugging freemarker code is not fun at all :D

BTW, if I create a new class, say JobResultData extending ResultData and
explicitly declaring the method, then it works.

FYI the key method should be
freemarker.ext.beans.BeansWrapper.discoverAccessibleMethods (if I followed
correctly the method calls...).

So the model should be a Java Bean, and I don't think that anonymous
classes are it.

So we could change the object wrapper to support our inline methods, or ask
the freemarker ml howto.

But at this point I am not sure that it is a recommended way of providing
the pojo to fm.

Cheers,
Enrico


On 16 July 2013 11:04, Reto Bachmann-Gmür <r...@wymiwyg.com> wrote:

> Hi Enrico
>
> Thanks for analyzing this further. It' really weird that freemarker
> doesn't get all the methods of the anonymous inner class. I guess an
> optimization attempt going wrong. Debugging freemarker code is not a
> nice thing to do ...
>
> Cheers,
> Reto
>
> On Tue, Jul 16, 2013 at 11:44 AM, Enrico Daga <enricod...@gmail.com>
> wrote:
> > (some) more insight.
> >
> > Another thing I tried is the following in the fm template:
> >
> >  ${it.class.getMethod("getJobInfo").getName()}
> > ${it.jobInfo!"NULL"}
> > ${it.getJobInfo()}
> >
> > While the first line works, displaying the method name, the second
> displays
> > NULL and the third throws the exception. Another note is that the method
> > getJobInfo() is never called by the template, while if I override a
> method
> > defined in a supertype (for example getUriInfo) it is executed regularly.
> > So I guess there is some problem in the way the template engine evaluate
> > the expression looking for the actual method of an inline instance.
> >
> > I have setup a sling logger for freemarker and found that the method
> > getJobInfo is not included in the introspection info for the actual
> object
> > (big log [1]).
> >
> > So this pattern won't work at least with the actual configuration of the
> > template engine.
> >
> > Enrico
> >
> >
> >
> > [1] Follows the log:
> > -------------
> >
> > 16.07.2013 10:32:40.573 *DEBUG* [1106793701@qtp-2017787826-51]
> > freemarker.beans Key "jobInfo" was not found on instance of
> > org.apache.stanbol.commons.jobs.web.resources.JobsResource$2.
> Introspection
> > information for the class is: {getRootUrl=public java.lang.String
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getRootUrl(),
> > getRequestUri=public java.net.URI
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getRequestUri(),
> > mainMenuItems=java.beans.PropertyDescriptor@6398d702, hashCode=public
> > native int java.lang.Object.hashCode(),
> > registeredLinkResources=java.beans.PropertyDescriptor@bf736045,
> > java.lang.Object@11496fc2={public java.net.URI
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getPublicBaseUri()=[Ljava.lang.Class;@2c69c4e9
> ,
> > public boolean
> > java.lang.Object.equals(java.lang.Object)=[Ljava.lang.Class;@53feb3c6,
> > public java.util.List
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getNavigationLinks()=[Ljava.lang.Class;@76ccb73e
> ,
> > public java.lang.String
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getStaticResourcesRootUrl()=[Ljava.lang.Class;@7a128460
> ,
> > public java.util.List
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getRegisteredLinkResources()=[Ljava.lang.Class;@55b0f93c
> ,
> > public final native java.lang.Class
> > java.lang.Object.getClass()=[Ljava.lang.Class;@55bafe17, public
> > java.lang.String
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getStaticRootUrl()=[Ljava.lang.Class;@677fc3f9
> ,
> > public java.net.URI
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getConsoleBaseUri()=[Ljava.lang.Class;@751b4584
> ,
> > public native int java.lang.Object.hashCode()=[Ljava.lang.Class;@5171192c
> ,
> > public java.util.List
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getRegisteredScriptResources()=[Ljava.lang.Class;@582bc179
> ,
> > public java.util.List
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getMainMenuItems()=[Ljava.lang.Class;@20ab1c28
> ,
> > public java.net.URI
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getRequestUri()=[Ljava.lang.Class;@41c596d9
> ,
> > public java.lang.String
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getRootUrl()=[Ljava.lang.Class;@1332a24b
> ,
> > public java.lang.String
> > java.lang.Object.toString()=[Ljava.lang.Class;@613cf3c5},
> > requestUri=java.beans.PropertyDescriptor@a9193b22,
> > staticRootUrl=java.beans.PropertyDescriptor@ac5c5fb,
> > getNavigationLinks=public java.util.List
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getNavigationLinks(),
> > getPublicBaseUri=public java.net.URI
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getPublicBaseUri(),
> > getRegisteredScriptResources=public java.util.List
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getRegisteredScriptResources(),
> > registeredScriptResources=java.beans.PropertyDescriptor@1b975b12,
> > getClass=public final native java.lang.Class java.lang.Object.getClass(),
> > getMainMenuItems=public java.util.List
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getMainMenuItems(),
> > equals=public boolean java.lang.Object.equals(java.lang.Object),
> > class=java.beans.PropertyDescriptor@88f57024,
> > staticResourcesRootUrl=java.beans.PropertyDescriptor@dd57bb70,
> > consoleBaseUri=java.beans.PropertyDescriptor@5cd93387,
> > getConsoleBaseUri=public java.net.URI
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getConsoleBaseUri(),
> > getStaticRootUrl=public java.lang.String
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getStaticRootUrl(),
> > getStaticResourcesRootUrl=public java.lang.String
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getStaticResourcesRootUrl(),
> > rootUrl=java.beans.PropertyDescriptor@575a742d,
> > getRegisteredLinkResources=public java.util.List
> >
> org.apache.stanbol.commons.web.base.resource.TemplateLayoutConfiguration.getRegisteredLinkResources(),
> > publicBaseUri=java.beans.PropertyDescriptor@14a41d71,
> > navigationLinks=java.beans.PropertyDescriptor@9297e601, toString=public
> > java.lang.String java.lang.Object.toString()}
> >
> >
> >
> > On 14 July 2013 23:20, Enrico Daga <enricod...@gmail.com> wrote:
> >
> >> Hi Reto,
> >> Yes 1.2 is around and works well.
> >>
> >> I had a look at JobsResource and I found that freemarker variables do
> not
> >> work at all. I can't say why at the moment, but replacing "this" with an
> >> inline subclass of ResultData deals to an InvalidReferenceException for
> >> anything I try to reference from it even if the "it" var is not null
> and is
> >> the actual pojo.
> >> Invoking /jobs/test starts a fake background job, you can easily see the
> >> problem by following the url to ping the status (/jobs/{jobId}).
> >> Needs more insight.
> >>
> >>
> >> On 14 July 2013 13:05, Reto Bachmann-Gmür <r...@wymiwyg.com> wrote:
> >>
> >>> Hi Enrico
> >>>
> >>>
> >>> Had quite some problems with this things. On hand OSGi stuff:
> >>>
> >>>
> >>>
> http://mail-archives.apache.org/mod_mbox/felix-users/201306.mbox/%3CCALvhUEWRe+XKW=2M0e7DwNC8bm=mrakpqng5uq+ax5mocws...@mail.gmail.com%3E
> >>>
> >>> On the other hands jersey dependency on stuff that wasn't yet in
> central.
> >>>
> >>> If the final version's out and things are working, great!
> >>>
> >>> Reto
> >>>
> >>>
> >>> On Sun, Jul 14, 2013 at 1:13 PM, Enrico Daga <enricod...@gmail.com>
> >>> wrote:
> >>> > Hi Reto,
> >>> > I am trying to run the mini launcher as test but jersey did not start
> >>> > because javax.annotation was 1.1.9-b02 (saw on felix console). The
> weird
> >>> > thing is that the deployed bundle was 1.2-b04 (as configured in
> >>> bundlelist
> >>> > stanbolcommons and present in .../startup/1/). I changed the bundle
> >>> version
> >>> > to 1.2 and now it starts. Don't know why 1.2-b04 was seen as
> 1.1.9-b02,
> >>> but
> >>> > is there a special reason why we would need 1.2-b04?
> >>> >
> >>> > Enrico
> >>> >
> >>> >
> >>> > On 12 July 2013 19:15, Enrico Daga <enricod...@gmail.com> wrote:
> >>> >
> >>> >> Hi Reto, yes, now works. Thank you.
> >>> >>
> >>> >>
> >>> >> On 12 July 2013 13:27, Reto Bachmann-Gmür <r...@wymiwyg.com> wrote:
> >>> >>
> >>> >>> Hi Enrico
> >>> >>>
> >>> >>> Thanks a lot for looking into this.
> >>> >>>
> >>> >>> The aim of the ng branch is to be more portable. Most notably this
> is
> >>> >>> independence of jersey and of the ServletContext hacks.
> >>> >>>
> >>> >>> I'm sorry I removed the jersey specific test only locally. I
> committed
> >>> >>> the removal and hope that it now compiles for you too.
> >>> >>>
> >>> >>> Cheers,
> >>> >>> Reto
> >>> >>>
> >>> >>> On Fri, Jul 12, 2013 at 2:13 PM, Enrico Daga <enricod...@gmail.com
> >
> >>> >>> wrote:
> >>> >>> > Hi Reto,
> >>> >>> > sorry for this late reply, for some reasons I skipped this thread
> >>> >>> > entirely...
> >>> >>> > For what concerns the Commons Jobs API it is only used by
> >>> reasoners. It
> >>> >>> is
> >>> >>> > a bit explained in a README file even if probably a documentation
> >>> >>> targeted
> >>> >>> > to developers would help. I could add it to the web site
> >>> documentation.
> >>> >>> > About the branch commons-ng, if I understood the aim is to clear
> the
> >>> >>> JAX-RS
> >>> >>> > implementation in order to be jersey independent, right?
> >>> >>> > I downloded the branch to have a look to your examples but had
> the
> >>> >>> > following:
> >>> >>> >
> >>> >>> > [ERROR] Failed to execute goal
> >>> >>> > org.apache.maven.plugins:maven-compiler-plugin:2.3.1:testCompile
> >>> >>> > (default-testCompile) on project
> >>> org.apache.stanbol.entityhub.jersey:
> >>> >>> > Compilation failure: Compilation failure:
> >>> >>> > [ERROR]
> >>> >>> >
> >>> >>>
> >>>
> /Users/enricox/Development/Stanbol-commons-ng/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/parsers/RepresetnationReaderTest.java:[27,40]
> >>> >>> > package com.sun.jersey.api.representation does not exist
> >>> >>> >
> >>> >>> > My idea was to have a look, learn howto and migrate the
> reasoners.
> >>> I'll
> >>> >>> add
> >>> >>> > the documentation of Jobs, if you think it is useful (I like that
> >>> small
> >>> >>> > thing btw, I would like to see it reused)
> >>> >>> >
> >>> >>> > Cheers,
> >>> >>> > Enrico
> >>> >>> >
> >>> >>> >
> >>> >>> >
> >>> >>> > On 10 July 2013 15:11, Rupert Westenthaler <
> >>> >>> rupert.westentha...@gmail.com>wrote:
> >>> >>> >
> >>> >>> >> Hi Reto
> >>> >>> >>
> >>> >>> >> Generally I find this API very interesting and I was considering
> >>> this
> >>> >>> >> as useful for the implementation of the Stanbol Enhancer "/task"
> >>> >>> >> endpoint as suggested by David in [1]. For the current services
> >>> >>> >> provided by the Enhancer and Entityhub this is not applicable as
> >>> there
> >>> >>> >> are no async services where users would like to interact with
> >>> running
> >>> >>> >> jobs.
> >>> >>> >>
> >>> >>> >> best
> >>> >>> >> Rupert
> >>> >>> >>
> >>> >>> >> [1] http://stanbol.markmail.org/thread/npwf7olw2jemvu37
> >>> >>> >>
> >>> >>> >> On Wed, Jul 10, 2013 at 3:56 PM, Reto Bachmann-Gmür <
> >>> r...@apache.org>
> >>> >>> >> wrote:
> >>> >>> >> > After not getting any answer I used grep myself ;)
> >>> >>> >> >
> >>> >>> >> > It seems commons.job is currently only used in the
> reasoner.web.
> >>> >>> >> >
> >>> >>> >> > Are there plans to use this elsewhere? Or to add some
> >>> documentation
> >>> >>> >> > for it to be more likely to be adopted?
> >>> >>> >> >
> >>> >>> >> > Cheers,
> >>> >>> >> > Reto
> >>> >>> >> >
> >>> >>> >> > On Wed, Jun 26, 2013 at 10:14 PM, Reto Bachmann-Gmür <
> >>> >>> r...@apache.org>
> >>> >>> >> wrote:
> >>> >>> >> >> Did anybody have a chance to try this out? Where is Commons
> Job
> >>> >>> >> documented?
> >>> >>> >> >>
> >>> >>> >> >> Cheers,
> >>> >>> >> >> Reto
> >>> >>> >> >>
> >>> >>> >> >>
> >>> >>> >> >> On Fri, Jun 7, 2013 at 11:56 PM, Reto Bachmann-Gmür <
> >>> >>> r...@apache.org>
> >>> >>> >> wrote:
> >>> >>> >> >>>
> >>> >>> >> >>> At least I think it runs again.I'm not sure how to test it.
> >>> Would
> >>> >>> be
> >>> >>> >> great
> >>> >>> >> >>> if somebody else could check it out.
> >>> >>> >> >>>
> >>> >>> >> >>> Cheers,
> >>> >>> >> >>> Reto
> >>> >>> >> >>
> >>> >>> >> >>
> >>> >>> >>
> >>> >>> >>
> >>> >>> >>
> >>> >>> >> --
> >>> >>> >> | Rupert Westenthaler             rupert.westentha...@gmail.com
> >>> >>> >> | Bodenlehenstraße 11
> ++43-699-11108907
> >>> >>> >> | A-5500 Bischofshofen
> >>> >>> >>
> >>> >>> >
> >>> >>> >
> >>> >>> >
> >>> >>> > --
> >>> >>> > Enrico Daga
> >>> >>> >
> >>> >>> > --
> >>> >>> > http://www.enridaga.net
> >>> >>> > skype: enri-pan
> >>> >>>
> >>> >>
> >>> >>
> >>> >>
> >>> >> --
> >>> >> Enrico Daga
> >>> >>
> >>> >> --
> >>> >> http://www.enridaga.net
> >>> >> skype: enri-pan
> >>> >>
> >>> >>
> >>> >>
> >>> >
> >>> >
> >>> > --
> >>> > Enrico Daga
> >>> >
> >>> > --
> >>> > http://www.enridaga.net
> >>> > skype: enri-pan
> >>>
> >>
> >>
> >>
> >> --
> >> Enrico Daga
> >>
> >> --
> >> http://www.enridaga.net
> >> skype: enri-pan
> >>
> >>
> >>
> >
> >
> > --
> > Enrico Daga
> >
> > --
> > http://www.enridaga.net
> > skype: enri-pan
>



-- 
Enrico Daga

--
http://www.enridaga.net
skype: enri-pan

Reply via email to