On Wed, Jan 21, 2015 at 4:13 PM, Kalle Korhonen <kalle.o.korho...@gmail.com> wrote: > On Wed, Jan 21, 2015 at 1:07 PM, George Christman <gchrist...@cardaddy.com> > wrote: > >> On Wed, Jan 21, 2015 at 3:16 PM, Kalle Korhonen >> <kalle.o.korho...@gmail.com> wrote: >> > On Tue, Jan 20, 2015 at 1:03 PM, George Christman < >> gchrist...@cardaddy.com> >> > wrote: >> >> So I just took a look at the tapestry code and I'm not seeing anyway >> >> to work around it unless I want to build my own links which I'd rather >> >> not do because of my use of the url rewriter. >> >> Tap code line 113 >> >> >> https://github.com/apache/tapestry-5/blob/5.4-beta-26/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java >> >> How do you work around this? >> > You are right George. Ever since the loopback reset listeners was put it >> in >> > (for T5.3), the LinkSource.createPageRenderLink(...) doesn't anymore work >> > outside request context (e.g. in a scheduled job). You should instead use >> > the linkEncoder directly (as in the implementation for >> > createPageRenderLink): >> > >> Just seen this, is there any chance we could fix this issue so that we >> don't need to write the cumbersome code below every time? I'm actually >> surprised I'm the first to discover this. We send out a lot of >> reminder emails etc at work via a cron job which would require this >> and I also need it to work for my own project. Should I create a bug >> in jira? >> > >> > > Somebody's gotta be the first one. I guess many of the existing > installations are still not using the more recent versions of T5. But I > agree, it might be worth fixing so go ahead and open an issue. > Just seems like 5.3 was a long time ago lol. Ok np, I'll open an issue up for it. > >> > PageRenderRequestParameters parameters = new >> > PageRenderRequestParameters(canonical, new ArrayEventContext( >> > typeCoercer, context), loopback); >> > Link link = linkEncoder.createPageRenderLink(parameters); >> >> One last thing before we move on from this issue, what is the >> canonical? Would that be the Page.class.getName() ? and I'm assuming >> context is just my url context values? >> > > Take another look at the source you pointed to yourself, but: String > canonical = resolver.canonicalizePageName(pageName);
Well it looks like you need to specify the exact page name and not the java class, example "index" Anyhow none of it worked either, same issue as before. @Inject private ComponentClassResolver resolver; @Inject private TypeCoercer typeCoercer; @Inject private ComponentEventLinkEncoder linkEncoder; private void testTask() { periodicExecutor.addJob(new IntervalSchedule(3000), "Data Validation1", new Runnable() { @Override public void run() { System.out.println("test"); try { String canonical = resolver.canonicalizePageName("login"); PageRenderRequestParameters parameters = new PageRenderRequestParameters(canonical, new ArrayEventContext( typeCoercer, new Object()), false); Link link = linkEncoder.createPageRenderLink(parameters); System.out.println(link.toAbsoluteURI()); } catch (Exception ex) { System.out.println("ex " + getStackTrace(ex)); } } }); } exception ex java.lang.NullPointerException: Unable to delegate method invocation to property 'request' of <Proxy for RequestGlobals(org.apache.tapestry5.services.RequestGlobals)>, because the property is null. at $Request_1a34deec12ab7.readProperty(Unknown Source) at $Request_1a34deec12ab7.isSecure(Unknown Source) at $Request_1a34deec12a4e.isSecure(Unknown Source) at org.apache.tapestry5.internal.services.RequestSecurityManagerImpl.checkPageSecurity(RequestSecurityManagerImpl.java:112) at $RequestSecurityManager_1a34deec12aae.checkPageSecurity(Unknown Source) at org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.createPageRenderLink(ComponentEventLinkEncoderImpl.java:111) at org.apache.tapestry5.internal.services.linktransform.LinkTransformerInterceptor.createPageRenderLink(LinkTransformerInterceptor.java:50) at $ComponentEventLinkEncoder_1a34deec12a6d.createPageRenderLink(Unknown Source) at org.healthresearch.etss.services.scheduler.impl.ScheduleJobsImpl$1.run(ScheduleJobsImpl.java:155) at org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl$Job.invoke(PeriodicExecutorImpl.java:225) at org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl$Job.invoke(PeriodicExecutorImpl.java:49) at org.apache.tapestry5.ioc.internal.services.ParallelExecutorImpl$1.call(ParallelExecutorImpl.java:60) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722) I think for the time being I'm ust going to use URIBuilder or something until this gets fixed. I'll file a jira issue tonight. > > Kalle > > >>> On Tue, Jan 20, 2015 at 11:14 AM, George Christman >> >> <gchrist...@cardaddy.com> wrote: >> >> > Still no success in getting this to work. I've contributed the >> Hostname >> >> etc. >> >> > >> >> > configuration.add(SymbolConstants.HOSTNAME, "localhost"); >> >> > configuration.add(SymbolConstants.HOSTPORT, "8080"); >> >> > configuration.add(SymbolConstants.HOSTPORT_SECURE, "false"); >> >> > >> >> > And a simple test which fails with the same error. >> >> > >> >> > private void testTask() { >> >> > periodicExecutor.addJob(new IntervalSchedule(3000), >> >> > "Data Validation1", new Runnable() { >> >> > @Override >> >> > public void run() { >> >> > System.out.println("test"); >> >> > try { >> >> > >> >> > System.out.println(linkSource.createPageRenderLink(Index.class)); >> >> > } catch (Exception ex) { >> >> > System.out.println("ex " + ex); >> >> > } >> >> > } >> >> > }); >> >> > } >> >> > >> >> > On Tue, Jan 20, 2015 at 7:41 AM, George Christman >> >> > <gchrist...@cardaddy.com> wrote: >> >> >> So toAbsolute is the code calling the request and the cause of this >> >> >> exception? I'm assuming your referring to me contributing those >> values >> >> to my >> >> >> appmodule. Once I contribute those values, would toAbsolute use those >> >> values >> >> >> instead of the request? Just trying to understand the issue a little >> bit >> >> >> better. Thanks Kalle. >> >> >> >> >> >> On Jan 20, 2015 4:44 AM, "Kalle Korhonen" < >> kalle.o.korho...@gmail.com> >> >> >> wrote: >> >> >>> >> >> >>> On Tue, Jan 20, 2015 at 1:23 AM, George Christman >> >> >>> <gchrist...@cardaddy.com> >> >> >>> wrote: >> >> >>> >> >> >>> > I'm using T5 beta-25 and I have the following code and I'm >> noticing >> >> >>> > when the scheduler fires off my service, my PageRenderLinkSource >> does >> >> >>> > not work. If I manually fire it off through the admin with an >> >> >>> > actionlink, it works without issue. >> >> >>> > I'm seeing the following exception >> >> >>> > java.lang.NullPointerException: Unable to delegate method >> invocation >> >> >>> > to property 'request' of <Proxy for >> >> >>> > RequestGlobals(org.apache.tapestry5.services.RequestGlobals)>, >> >> because >> >> >>> > the property is null. >> >> >>> > Any idea why this isn't working? >> >> >>> > >> >> >>> >> >> >>> Naturally, you don't have a request to work with when you are >> executing >> >> >>> from a cron job. But if you just want to generate links, you don't >> >> need to >> >> >>> and you shouldn't use the request values. Contribute HOSTNAME, >> HOSTPORT >> >> >>> and >> >> >>> HOSTPORT_SECURE and you can generate absolute urls without >> resorting to >> >> >>> reading the values from the request. >> >> >>> >> >> >>> Kalle >> >> >>> >> >> >>> >> >> >>> >> >> >>> > >> >> >>> > >> --------------------------------------------------------------------- >> >> >>> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> >> >>> > For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >>> > >> >> >>> > >> >> > >> >> > >> >> > >> >> > -- >> >> > George Christman >> >> > CEO >> >> > www.CarDaddy.com >> >> > P.O. Box 735 >> >> > Johnstown, New York >> >> >> >> >> >> >> >> -- >> >> George Christman >> >> CEO >> >> www.CarDaddy.com >> >> P.O. Box 735 >> >> Johnstown, New York >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >> >> >> >> >> >> -- >> George Christman >> CEO >> www.CarDaddy.com >> P.O. Box 735 >> Johnstown, New York >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> -- George Christman CEO www.CarDaddy.com P.O. Box 735 Johnstown, New York --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org