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
>
>

Reply via email to