Would it be easier to mock a request? On Wed, Jan 21, 2015 at 10:30 PM, George Christman <gchrist...@cardaddy.com> wrote:
> 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 > >