Re: Two fundamental questions.
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.
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
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
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.
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
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.
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.
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
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
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
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
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
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
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
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.
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.
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
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