Re: Two fundamental questions.

2015-01-21 Thread Kalle Korhonen
Always worth mentioning tapestry-model (
http://tynamo.org/tapestry-model+guide) when talking about CRUD. The more
you generalize your T5 CRUD implementation, the more it will start looking
like tapestry-model.

Kalle

On Wed, Jan 21, 2015 at 5:40 AM, Geoff Callender <
geoff.callender.jumpst...@gmail.com> wrote:

> For several approaches to CRUD:
>
> T5.4: http://jumpstart.doublenegative.com.au/jumpstart7
> T5.3: http://jumpstart.doublenegative.com.au/jumpstart
>
> HTH,
>
> Geoff
>
> On 21 Jan 2015, at 8:27 am, Cheng Zhang 
> wrote:
>
> > Hi all,
> >
> > I am new to Tapestry. I have two questions.
> >
> > 1. What is the best solution for Tapestry-Cayenne integration?
> > I found the only project is as below but it looks like no longer
> > developed for over 4 years. And there are no many supporting
> > documents.
> > https://code.google.com/p/tapestry5-cayenne/
> >
> > 2. I'd like to implement basic CRUD function with a group of data, eg
> > show a list of Person(name, phone, address), update person
> > information, add new person, delete a person from the list.
> > I found there are several components might be used, like Editable
> > Grid, Beaneditform, Editable loop. What is the best/widely used way to
> > do CRUD? (just the java part, do not need to persist to DB).
> >
> > Many thanks.
> >
> > Charles
> >
> > -
> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> > For additional commands, e-mail: users-h...@tapestry.apache.org
> >
>
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


Re: Two fundamental questions.

2015-01-21 Thread Bob Harner
Cheng, in case you haven't seen it, here's the write-up Robert Z.
provided 3 years ago listing all the cool functionality in the
Tapestry5-cayenne module:

http://mail-archives.apache.org/mod_mbox/tapestry-users/201112.mbox/%3cf6c2be07-ffad-4488-ae2f-2112a0e7b...@roxanemy.com%3E

On Wed, Jan 21, 2015 at 6:14 PM, Robert Zeigler
 wrote:
> I haven't tried tapestry-cayenne with 5.4. I've been heavily involved in a 
> lot of other projects that don't involve tapestry or even java. That said, my 
> recollection is that the Library works with 5.3, at least. At some point, I 
> will migrate the code over to github, but that isn't likely to happen in the 
> next month or so.  Still, the library had a lot of niceties for quickly 
> building cayenne-baked CRUD apps. I would be interested to hear whether it 
> works as is with 5.4.
>
> Robert
>
> GATAATGCTATTTCTTTAACGAA
>
>> On Jan 21, 2015, at 2:42 PM, zcsrs...@gmail.com wrote:
>>
>> Thank you Michael for your detailed comments. I will look into these once I
>> am done with basic crud.
>>
>> On Wed, Jan 21, 2015 at 6:11 AM, Michael Gentry 
>> wrote:
>>
>>> Hi Charles,
>>>
>>> We generally don't use any kind of special integration with our
>>> Tapestry+Cayenne applications here.  A couple general scenarios are:
>>>
>>> 1. Your application is session-heavy (ours are).  In this case you store
>>> your Cayenne objects in your session objects (page/component-based or
>>> global) and reference them from your Tapestry pages/classes/components.
>>> This can be a single Cayenne object or a List of Cayenne objects.  For
>>> Lists, you use the index when the user clicks on one to select it:
>>> myListOfCayenneObjects.get(index).  Typically, myListOfCayenneObjects would
>>> come from a dataContext.performQuery().
>>>
>>> 2. Your application is session-light and you use the Cayenne ID (in the
>>> URL) to restore your Cayenne objects between requests.  If security is a
>>> concern, you need to build in some additional access controls or perhaps
>>> encrypt the Cayenne ID when you generate links and decrypt on your next
>>> request.  This can work well with onActivate/onPassivate, for example.
>>>
>>> If you have more Cayenne-specific questions, you can ask on the Cayenne
>>> User list, too (we are Tapestry-friendly there).
>>>
>>> mrg
>>>
>>>
>>> On Tue, Jan 20, 2015 at 4:27 PM, Cheng Zhang 
>>> wrote:
>>>
 Hi all,

 I am new to Tapestry. I have two questions.

 1. What is the best solution for Tapestry-Cayenne integration?
 I found the only project is as below but it looks like no longer
 developed for over 4 years. And there are no many supporting
 documents.
 https://code.google.com/p/tapestry5-cayenne/

 2. I'd like to implement basic CRUD function with a group of data, eg
 show a list of Person(name, phone, address), update person
 information, add new person, delete a person from the list.
 I found there are several components might be used, like Editable
 Grid, Beaneditform, Editable loop. What is the best/widely used way to
 do CRUD? (just the java part, do not need to persist to DB).

 Many thanks.

 Charles

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
>>>
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread George Christman
I dunno maybe, I just got sick of fighting with it lol.

On Wed, Jan 21, 2015 at 5:04 PM, Chris Poulsen  wrote:
> Would it be easier to mock a request?
>
> On Wed, Jan 21, 2015 at 10:30 PM, George Christman 
> wrote:
>
>> On Wed, Jan 21, 2015 at 4:13 PM, Kalle Korhonen
>>  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
>> >>  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 > 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.s

Re: HibernateEntityValueEncoder NullPointerException - Composite/Compund Primary Key Issue

2015-01-21 Thread Kalle Korhonen
I see Lance already answered to your question on Stackoverflow. Follow his
advice and make sure you contribute the encoder. After that, you may hit
another issues with tynamo not recognizing @IdClass (see an old issue
https://jira.codehaus.org/browse/TYNAMO-168), whether it matters to you,
I'm not sure. I've used IdClasses before but not extensively, and don't
recall whether I've had them on tynamo-model or if I've simply ignored them
from it. As both Thiago and Lance mentioned, it's best to avoid composite
keys with Hibernate but I'm pretty sure you can get it to work if you need
to. I'm always happy to apply patches and please open an issue on github (
https://github.com/tynamo/tapestry-model) if you hit a specific issue with
tynamo-model (you may but you are not there yet :P ).

Kalle

On Tue, Jan 20, 2015 at 11:43 AM, Witt, Aaron 
wrote:

> Hi Tapestry Users,
>
> I'm using a CRUD framework called Tynamo, which in turn relies on Apache
> Tapestry and Hibernate. This all works fine, except for when I try to use
> it for CRUD on a table with a composite/compound primary key.
> I've decided not to go the @EmbeddedId route, since it seems to not work
> at all with the framework. That being said, I have been using the @IdClass
> method, which is mostly working; I think I'm a line or two of code away
> from success.
> The issue is that when it starts using reflection to build the objects, it
> blows up and says,
> org.apache.tapestry5.ioc.internal.util.TapestryException, caused by
> java.lang.NullPointerException at
> org.apache.tapestry5.internal.hibernate.HibernateEntityValueEncoder.(HibernateEntityValueEncoder.java:51).
> I honestly have no idea what's the deal here, but since I have normal
> table CRUD operation working for numerous other tables, I would assume this
> is somehow related to this table using a composite/compound primary key.
> One thing I did try was to move the static inner class to its own package
> and remove the staticclass modifier, but the exact same error occurred.
> You can see my class below:
>
> package com.company.crud.entities;
>
>
>
> import java.io.Serializable;
>
>
>
> import javax.persistence.Column;
>
> import javax.persistence.Entity;
>
> import javax.persistence.Id;
>
> import javax.persistence.IdClass;
>
>
>
> import com.company.crud.entities.TransferExtension.TransferExtensionPK;
>
>
>
> @Entity(name = "Transfer_Extensions")
>
> @IdClass(TransferExtensionPK.class)
>
> public class TransferExtension implements Serializable {
>
> private static final long serialVersionUID = 1L;
>
>
>
> @Id
>
> // @NotNull(message = "Please supply a Script Code")
>
> // @Length(min = 3, max = 4)
>
> @Column(name = "Division", nullable = false)
>
> private String scriptCode;
>
>
>
> @Id
>
> // @NotNull(message = "Please supply a Transfer Type")
>
> // @Length(min = 3, max = 6)
>
> @Column(name = "Transfer_Type", nullable = false)
>
> private String transferType;
>
>
>
> @Column(name = "Extension", nullable = true)
>
> private String englishExtension;
>
>
>
> @Column(name = "Span_Extension", nullable = true)
>
> private String spanishExtension;
>
>
>
> @Column(name = "Call_Type", nullable = true)
>
> private String callType;
>
>
>
> @Column(name = "Call_Center", nullable = true)
>
> private String callCenter;
>
>
>
> public TransferExtension() {
>
> }
>
>
>
> public TransferExtension(String scriptCode, String transferType,
>
> String englishExtension, String spanishExtension, String
> callType,
>
> String callCenter) {
>
>
>
> this.callCenter = callCenter;
>
> this.callType = callType;
>
> this.englishExtension = englishExtension;
>
> this.scriptCode = scriptCode;
>
> this.spanishExtension = spanishExtension;
>
> this.transferType = transferType;
>
> }
>
>
>
> public String getScriptCode() {
>
> return this.scriptCode;
>
> }
>
>
>
> public void setScriptCode(String scriptCode) {
>
> this.scriptCode = scriptCode;
>
> }
>
>
>
> public String getTransferType() {
>
> return this.transferType;
>
> }
>
>
>
> public void setTransferType(String transferType) {
>
> this.transferType = transferType;
>
> }
>
>
>
> public String getEnglishExtension() {
>
> return this.englishExtension;
>
> }
>
>
>
> public void setEnglishExtension(String englishExtension) {
>
> this.englishExtension = englishExtension;
>
> }
>
>
>
> public String getSpanishExtension() {
>
> return this.spanishExtension;
>
> }
>
>
>
> public void setSpanishExtension(String spanishExtension) {
>
> this.spanishExtension = spanishExtension;
>
> }
>
>
>
> public String getCallType() {
>
> return this.callType;
>
> }
>
>
>
> public void setCallType(String callType) {
>
> this.callType = callType;
>
> }
>
>
>
> public Str

Re: Two fundamental questions.

2015-01-21 Thread Robert Zeigler
I haven't tried tapestry-cayenne with 5.4. I've been heavily involved in a lot 
of other projects that don't involve tapestry or even java. That said, my 
recollection is that the Library works with 5.3, at least. At some point, I 
will migrate the code over to github, but that isn't likely to happen in the 
next month or so.  Still, the library had a lot of niceties for quickly 
building cayenne-baked CRUD apps. I would be interested to hear whether it 
works as is with 5.4. 

Robert

GATAATGCTATTTCTTTAACGAA

> On Jan 21, 2015, at 2:42 PM, zcsrs...@gmail.com wrote:
> 
> Thank you Michael for your detailed comments. I will look into these once I
> am done with basic crud.
> 
> On Wed, Jan 21, 2015 at 6:11 AM, Michael Gentry 
> wrote:
> 
>> Hi Charles,
>> 
>> We generally don't use any kind of special integration with our
>> Tapestry+Cayenne applications here.  A couple general scenarios are:
>> 
>> 1. Your application is session-heavy (ours are).  In this case you store
>> your Cayenne objects in your session objects (page/component-based or
>> global) and reference them from your Tapestry pages/classes/components.
>> This can be a single Cayenne object or a List of Cayenne objects.  For
>> Lists, you use the index when the user clicks on one to select it:
>> myListOfCayenneObjects.get(index).  Typically, myListOfCayenneObjects would
>> come from a dataContext.performQuery().
>> 
>> 2. Your application is session-light and you use the Cayenne ID (in the
>> URL) to restore your Cayenne objects between requests.  If security is a
>> concern, you need to build in some additional access controls or perhaps
>> encrypt the Cayenne ID when you generate links and decrypt on your next
>> request.  This can work well with onActivate/onPassivate, for example.
>> 
>> If you have more Cayenne-specific questions, you can ask on the Cayenne
>> User list, too (we are Tapestry-friendly there).
>> 
>> mrg
>> 
>> 
>> On Tue, Jan 20, 2015 at 4:27 PM, Cheng Zhang 
>> wrote:
>> 
>>> Hi all,
>>> 
>>> I am new to Tapestry. I have two questions.
>>> 
>>> 1. What is the best solution for Tapestry-Cayenne integration?
>>> I found the only project is as below but it looks like no longer
>>> developed for over 4 years. And there are no many supporting
>>> documents.
>>> https://code.google.com/p/tapestry5-cayenne/
>>> 
>>> 2. I'd like to implement basic CRUD function with a group of data, eg
>>> show a list of Person(name, phone, address), update person
>>> information, add new person, delete a person from the list.
>>> I found there are several components might be used, like Editable
>>> Grid, Beaneditform, Editable loop. What is the best/widely used way to
>>> do CRUD? (just the java part, do not need to persist to DB).
>>> 
>>> Many thanks.
>>> 
>>> Charles
>>> 
>>> -
>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>> 

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread Chris Poulsen
Would it be easier to mock a request?

On Wed, Jan 21, 2015 at 10:30 PM, George Christman 
wrote:

> On Wed, Jan 21, 2015 at 4:13 PM, Kalle Korhonen
>  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
> >>  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  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.se

Re: Two fundamental questions.

2015-01-21 Thread zcsrssrs
Thank you Michael for your detailed comments. I will look into these once I
am done with basic crud.

On Wed, Jan 21, 2015 at 6:11 AM, Michael Gentry 
wrote:

> Hi Charles,
>
> We generally don't use any kind of special integration with our
> Tapestry+Cayenne applications here.  A couple general scenarios are:
>
> 1. Your application is session-heavy (ours are).  In this case you store
> your Cayenne objects in your session objects (page/component-based or
> global) and reference them from your Tapestry pages/classes/components.
> This can be a single Cayenne object or a List of Cayenne objects.  For
> Lists, you use the index when the user clicks on one to select it:
> myListOfCayenneObjects.get(index).  Typically, myListOfCayenneObjects would
> come from a dataContext.performQuery().
>
> 2. Your application is session-light and you use the Cayenne ID (in the
> URL) to restore your Cayenne objects between requests.  If security is a
> concern, you need to build in some additional access controls or perhaps
> encrypt the Cayenne ID when you generate links and decrypt on your next
> request.  This can work well with onActivate/onPassivate, for example.
>
> If you have more Cayenne-specific questions, you can ask on the Cayenne
> User list, too (we are Tapestry-friendly there).
>
> mrg
>
>
> On Tue, Jan 20, 2015 at 4:27 PM, Cheng Zhang 
> wrote:
>
> > Hi all,
> >
> > I am new to Tapestry. I have two questions.
> >
> > 1. What is the best solution for Tapestry-Cayenne integration?
> > I found the only project is as below but it looks like no longer
> > developed for over 4 years. And there are no many supporting
> > documents.
> > https://code.google.com/p/tapestry5-cayenne/
> >
> > 2. I'd like to implement basic CRUD function with a group of data, eg
> > show a list of Person(name, phone, address), update person
> > information, add new person, delete a person from the list.
> > I found there are several components might be used, like Editable
> > Grid, Beaneditform, Editable loop. What is the best/widely used way to
> > do CRUD? (just the java part, do not need to persist to DB).
> >
> > Many thanks.
> >
> > Charles
> >
> > -
> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> > For additional commands, e-mail: users-h...@tapestry.apache.org
> >
> >
>


Re: Two fundamental questions.

2015-01-21 Thread zcsrssrs
Thank you Geoff, I just noticed jumpstart before, never know there are two
version of jumpstart. Many thanks.


On Wed, Jan 21, 2015 at 6:40 AM, Geoff Callender <
geoff.callender.jumpst...@gmail.com> wrote:

> For several approaches to CRUD:
>
> T5.4: http://jumpstart.doublenegative.com.au/jumpstart7
> T5.3: http://jumpstart.doublenegative.com.au/jumpstart
>
> HTH,
>
> Geoff
>
> On 21 Jan 2015, at 8:27 am, Cheng Zhang 
> wrote:
>
> > Hi all,
> >
> > I am new to Tapestry. I have two questions.
> >
> > 1. What is the best solution for Tapestry-Cayenne integration?
> > I found the only project is as below but it looks like no longer
> > developed for over 4 years. And there are no many supporting
> > documents.
> > https://code.google.com/p/tapestry5-cayenne/
> >
> > 2. I'd like to implement basic CRUD function with a group of data, eg
> > show a list of Person(name, phone, address), update person
> > information, add new person, delete a person from the list.
> > I found there are several components might be used, like Editable
> > Grid, Beaneditform, Editable loop. What is the best/widely used way to
> > do CRUD? (just the java part, do not need to persist to DB).
> >
> > Many thanks.
> >
> > Charles
> >
> > -
> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> > For additional commands, e-mail: users-h...@tapestry.apache.org
> >
>
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread George Christman
On Wed, Jan 21, 2015 at 4:13 PM, Kalle Korhonen
 wrote:
> On Wed, Jan 21, 2015 at 1:07 PM, George Christman 
> wrote:
>
>> On Wed, Jan 21, 2015 at 3:16 PM, Kalle Korhonen
>>  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 , 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 
j

Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread Kalle Korhonen
On Wed, Jan 21, 2015 at 1:07 PM, George Christman 
wrote:

> On Wed, Jan 21, 2015 at 3:16 PM, Kalle Korhonen
>  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.


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

Kalle


>> On Tue, Jan 20, 2015 at 11:14 AM, George Christman
> >>  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
> >> >  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
> >> >>> 
> >> >>> 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  >> >>> > 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.or

Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread George Christman
On Wed, Jan 21, 2015 at 3:16 PM, Kalle Korhonen
 wrote:
> On Tue, Jan 20, 2015 at 1:03 PM, George Christman 
> 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?

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

Thanks Kalle.
>
> Set loopback to false, you don't need it.
>
> Kalle
>
>
>>
>> On Tue, Jan 20, 2015 at 11:14 AM, George Christman
>>  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
>> >  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" 
>> >> wrote:
>> >>>
>> >>> On Tue, Jan 20, 2015 at 1:23 AM, George Christman
>> >>> 
>> >>> 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 > >>> > 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
Johnstow

Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread George Christman
On Wed, Jan 21, 2015 at 3:32 PM, Thiago H de Paula Figueiredo
 wrote:
> On Wed, 21 Jan 2015 12:07:10 -0200, George Christman
>  wrote:
>
>> I guess there is a bug in the PageRenderLinkSource component
>
>
> It's not a component: it's a service.
>
> then or
>>
>> I'm missing something because it does not seem to work. My
>> configuration is as followed, perhaps I'm missing something simple.
>>
>> My local environment uses Jetty
>>
>> In my DevelopmentModule I have the following config.
>>
>> public static void
>> contributeApplicationDefaults(MappedConfiguration
>> configuration) {
>> // The factory default is true but during the early stages of
>> an application
>> // overriding to false is a good idea. In addition, this is
>> often overridden
>> // on the command line as -Dtapestry.production-mode=false
>> configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
>> configuration.add(SymbolConstants.HOSTNAME, "localhost");
>> configuration.add(SymbolConstants.HOSTPORT, "8080");
>> configuration.add(SymbolConstants.HOSTPORT_SECURE, "8443");
>> }
>
>
> Are you sure this method was actually invoked?

Yes I'm positive, I just did a System.out from the method on startup
and I had output.
>
>>  Exception
>> ex Unable to delegate method invocation to property 'request' of
>> ,
>> because the property is null.
>
>
> Full stack trace please.
ex java.lang.NullPointerException: Unable to delegate method
invocation to property 'request' of , because
the property is null.
at $Request_1a1d210554a2f.readProperty(Unknown Source)
at $Request_1a1d210554a2f.isSecure(Unknown Source)
at $Request_1a1d2105549ab.isSecure(Unknown Source)
at 
org.apache.tapestry5.internal.services.RequestSecurityManagerImpl.checkPageSecurity(RequestSecurityManagerImpl.java:112)
at $RequestSecurityManager_1a1d210554a28.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_1a1d210554a0d.createPageRenderLink(Unknown
Source)
at 
org.apache.tapestry5.internal.services.LinkSourceImpl.createPageRenderLink(LinkSourceImpl.java:119)
at $LinkSource_1a1d210554a0a.createPageRenderLink(Unknown Source)
at 
org.apache.tapestry5.internal.services.PageRenderLinkSourceImpl.createPageRenderLink(PageRenderLinkSourceImpl.java:46)
at 
org.apache.tapestry5.internal.services.PageRenderLinkSourceImpl.createPageRenderLink(PageRenderLinkSourceImpl.java:41)
at $PageRenderLinkSource_1a1d2105549ca.createPageRenderLink(Unknown Source)
at 
org.healthresearch.etss.services.scheduler.impl.ScheduleJobsImpl$1.run(ScheduleJobsImpl.java:142)
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)
>
>
> --
> Thiago H. de Paula Figueiredo
> Tapestry, Java and Hibernate consultant and developer
> http://machina.com.br
>
> -
> 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



Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread Thiago H de Paula Figueiredo
On Wed, 21 Jan 2015 12:07:10 -0200, George Christman  
 wrote:



I guess there is a bug in the PageRenderLinkSource component


It's not a component: it's a service.

then or

I'm missing something because it does not seem to work. My
configuration is as followed, perhaps I'm missing something simple.

My local environment uses Jetty

In my DevelopmentModule I have the following config.

public static void
contributeApplicationDefaults(MappedConfiguration
configuration) {
// The factory default is true but during the early stages of
an application
// overriding to false is a good idea. In addition, this is
often overridden
// on the command line as -Dtapestry.production-mode=false
configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
configuration.add(SymbolConstants.HOSTNAME, "localhost");
configuration.add(SymbolConstants.HOSTPORT, "8080");
configuration.add(SymbolConstants.HOSTPORT_SECURE, "8443");
}


Are you sure this method was actually invoked?


 Exception
ex Unable to delegate method invocation to property 'request' of
,
because the property is null.


Full stack trace please.

--
Thiago H. de Paula Figueiredo
Tapestry, Java and Hibernate consultant and developer
http://machina.com.br

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread Kalle Korhonen
On Tue, Jan 20, 2015 at 1:03 PM, George Christman 
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):

PageRenderRequestParameters parameters = new
PageRenderRequestParameters(canonical, new ArrayEventContext(
typeCoercer, context), loopback);
Link link = linkEncoder.createPageRenderLink(parameters);

Set loopback to false, you don't need it.

Kalle


>
> On Tue, Jan 20, 2015 at 11:14 AM, George Christman
>  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
> >  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" 
> >> wrote:
> >>>
> >>> On Tue, Jan 20, 2015 at 1:23 AM, George Christman
> >>> 
> >>> 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  >>> > 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
>
>


Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread George Christman
I guess there is a bug in the PageRenderLinkSource component then or
I'm missing something because it does not seem to work. My
configuration is as followed, perhaps I'm missing something simple.

My local environment uses Jetty

In my DevelopmentModule I have the following config.

public static void
contributeApplicationDefaults(MappedConfiguration
configuration) {
// The factory default is true but during the early stages of
an application
// overriding to false is a good idea. In addition, this is
often overridden
// on the command line as -Dtapestry.production-mode=false
configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
configuration.add(SymbolConstants.HOSTNAME, "localhost");
configuration.add(SymbolConstants.HOSTPORT, "8080");
configuration.add(SymbolConstants.HOSTPORT_SECURE, "8443");
}

AppModule.class

@Startup
public static void initApplication(ScheduleJobs scheduleJobs) {
   scheduleJobs.startJobs();
}


ScheduleJobsImpl.class

@Inject
private PageRenderLinkSource linkSource;

public void startJobs() {
periodicExecutor.addJob(new IntervalSchedule(3000),
"Link Test", new Runnable() {
@Override
public void run() {
System.out.println("Start Link Test");
try {
Link link = linkSource.createPageRenderLink(Index.class);
System.out.println(link.toAbsoluteURI());
} catch (Exception ex) {
System.out.println("ex " + ex.getMessage());
}
}
});
}

 Exception
ex Unable to delegate method invocation to property 'request' of
,
because the property is null.



On Wed, Jan 21, 2015 at 6:53 AM, Thiago H de Paula Figueiredo
 wrote:
> On Tue, 20 Jan 2015 21:13:08 -0200, George Christman
>  wrote:
>
>> Thanks Thiago, but I think I'm even more confused now lol It looks
>> like I confused HOSTPORT_SECURE with SECURE_ENABLED. Anyhow should I
>> not be using PageRenderLinkSouce?
>
>
> You should use it.
>
>> You said to take a look at
>> ComponentEventLinkEncoder,
>
>
> Because that's what PageRenderLinkSource uses, so you can better understand
> what's happening. ;)
>
>
> --
> Thiago H. de Paula Figueiredo
> Tapestry, Java and Hibernate consultant and developer
> http://machina.com.br
>
> -
> 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



Re: Two fundamental questions.

2015-01-21 Thread Geoff Callender
For several approaches to CRUD:

T5.4: http://jumpstart.doublenegative.com.au/jumpstart7
T5.3: http://jumpstart.doublenegative.com.au/jumpstart

HTH,

Geoff

On 21 Jan 2015, at 8:27 am, Cheng Zhang  wrote:

> Hi all,
> 
> I am new to Tapestry. I have two questions.
> 
> 1. What is the best solution for Tapestry-Cayenne integration?
> I found the only project is as below but it looks like no longer
> developed for over 4 years. And there are no many supporting
> documents.
> https://code.google.com/p/tapestry5-cayenne/
> 
> 2. I'd like to implement basic CRUD function with a group of data, eg
> show a list of Person(name, phone, address), update person
> information, add new person, delete a person from the list.
> I found there are several components might be used, like Editable
> Grid, Beaneditform, Editable loop. What is the best/widely used way to
> do CRUD? (just the java part, do not need to persist to DB).
> 
> Many thanks.
> 
> Charles
> 
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
> 


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Two fundamental questions.

2015-01-21 Thread Michael Gentry
Hi Charles,

We generally don't use any kind of special integration with our
Tapestry+Cayenne applications here.  A couple general scenarios are:

1. Your application is session-heavy (ours are).  In this case you store
your Cayenne objects in your session objects (page/component-based or
global) and reference them from your Tapestry pages/classes/components.
This can be a single Cayenne object or a List of Cayenne objects.  For
Lists, you use the index when the user clicks on one to select it:
myListOfCayenneObjects.get(index).  Typically, myListOfCayenneObjects would
come from a dataContext.performQuery().

2. Your application is session-light and you use the Cayenne ID (in the
URL) to restore your Cayenne objects between requests.  If security is a
concern, you need to build in some additional access controls or perhaps
encrypt the Cayenne ID when you generate links and decrypt on your next
request.  This can work well with onActivate/onPassivate, for example.

If you have more Cayenne-specific questions, you can ask on the Cayenne
User list, too (we are Tapestry-friendly there).

mrg


On Tue, Jan 20, 2015 at 4:27 PM, Cheng Zhang 
wrote:

> Hi all,
>
> I am new to Tapestry. I have two questions.
>
> 1. What is the best solution for Tapestry-Cayenne integration?
> I found the only project is as below but it looks like no longer
> developed for over 4 years. And there are no many supporting
> documents.
> https://code.google.com/p/tapestry5-cayenne/
>
> 2. I'd like to implement basic CRUD function with a group of data, eg
> show a list of Person(name, phone, address), update person
> information, add new person, delete a person from the list.
> I found there are several components might be used, like Editable
> Grid, Beaneditform, Editable loop. What is the best/widely used way to
> do CRUD? (just the java part, do not need to persist to DB).
>
> Many thanks.
>
> Charles
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


Re: PageRenderLinkSource failing in service when called by cron scheduler - Unable to delegate method invocation to property

2015-01-21 Thread Thiago H de Paula Figueiredo
On Tue, 20 Jan 2015 21:13:08 -0200, George Christman  
 wrote:



Thanks Thiago, but I think I'm even more confused now lol It looks
like I confused HOSTPORT_SECURE with SECURE_ENABLED. Anyhow should I
not be using PageRenderLinkSouce?


You should use it.


You said to take a look at
ComponentEventLinkEncoder,


Because that's what PageRenderLinkSource uses, so you can better  
understand what's happening. ;)


--
Thiago H. de Paula Figueiredo
Tapestry, Java and Hibernate consultant and developer
http://machina.com.br

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org