Re: Persistance

2009-01-14 Thread Kalle Korhonen
On Wed, Jan 14, 2009 at 1:39 AM, Geoff Callender <
geoff.callender.jumpst...@gmail.com> wrote:

> It would be great if Tapestry provided a really nice clear solution to
> conversation state (and continuations), but in the meantime the workarounds
> are actually not all that hard.  Have you looked at the 3 Wizard examples
> and the Conversations List at
> http://jumpstart.doublenegative.com.au:8080/jumpstart/ ?


I know, and obviously I've looked at your examples; where else would one
learn T5 from :) Continuations actually have very little to do with it when
the only problem I really want to solve is to have a scope longer than
request but one that doesn't pollute the session till it expires. While
continuations and RIFE is very innovative, it really is targeted to solve a
different problem than what I'm after.


> One modification I'd like to make to the Wizards is to defer assigning a
> conversation id until you're on your way from the first page to the second
> page.
> Howard's talking about somehow making 5.1 work with Spring WebFlow. I'll
> follow that one with great interest, but I'll be wearing my sceptics hat as
> I fear that the SWF medicine might be worse than the problem it's trying to
> solve.
>

Agree, flows complicate things and don't offer a generic solution to this
problem. I've used SWF (and tried out Seam as well) but I really don't want
to force developers to require configuring flows consisting of multiple
pages when most of the time you just want that object to survive through a
few requests so you can display the validation errors and/or the success
message with the data the object contains. Personally I'm sold on ajax to a
point where I don't see a need to worry about back buttons or design
operation logic in a traditional way with multiple pages for a single
operation/conversation. Pages/urls are useful for differentiating between
separate logical operations like edit profile or search but if you click on
back button you should go to the previous operation, not to a previous stage
within the same operation. Wizards are of course a little different; you may
want to even independently store the whole state once you are half-way
through the wizard and go back and forth between the stages (where
continuations are also very useful), but the conversations in my mind a
really short-lived, happening for example on a single page/stage/url of a
wizard.

Thanks Geoff for the links as well; if we have any other threads about this
on the Tapestry mailing list, please continue linking them here.

Kalle



> Here are some good discussions of the problem:
>
>
> http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html
>
> http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations
>http://www.artima.com/forums/flat.jsp?forum=226&thread=197351
>
> http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html
>
> Geoff
>
>
> On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote:
>
>  I don't know if there's a better thread for discussing page scope and
>> conversation (if you know other threads, please link them in) but I'm just
>> doing research on this topic for supporting conversations in Trails.
>> Shortly, I'm hoping that it'd be possible to have a generic implementation
>> for conversations by dictating that a conversation should always happen on
>> a
>> single "page" or url with asynchronous calls. From my point of view,
>> assuming that only the beginning of a conversation can be bookmarkable and
>> that a conversation has one-to-one mapping with a url are reasonable
>> conventions and will greatly simplify the required logic (compared to
>> xml-based navigation flow configurations). These conversations could also
>> be
>> cleaned from session before the session expires and can have individual
>> timeout values.
>>
>> Regarding the problem with multiple pages that others have already pointed
>> out, with or without using cookies the urls need to be different (so the
>> page contexts can be kept separate). Typically when editing a single
>> object,
>> you don't even want to allow multiple windows and this can be easily dealt
>> with cookies transparently to the user. The only good example of where
>> multi-window support is actually useful that I can come up with is search
>> (say when you are trying to find the best flight to a destination). There,
>> I
>> wouldn't even like to necessary have a conversation identifier as part of
>> the url, but as a parameter (e.g. /travelsearch?conversationId=123) since
>> it's not meaningful to bookmark a url with a conversationId in it, but T5
>> doesn't allow one to easily manipulate urls and the page context is
>> extremely handy way of making sure all subsequent action requests (from
>> the
>> same page) are participating in the same conversation. However, one of the
>> issues with T5 I haven't been able to satisfactorily solve is forcing a
>> page
>> to use an additional context paramete

tapestry.formos.com is back up

2009-01-14 Thread Howard Lewis Ship
The Tapestry continuous integration build server, tapestry.formos.com,
is now back online.

I've run a nightly build, so you can see latest 5.1 snapshots in the
maven snapshot repository.

There may be some further disruption as I set up a number of
additional services on tapestry.formos.com:  SVN, JIRA and Confluence.

-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

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



Re: is T4 dead ?

2009-01-14 Thread Kevin Menard
Any reason you couldn't just use one of the multitude of JS
frameworks?  jQuery works very well for this.

-- 
Kevin



On Wed, Jan 14, 2009 at 1:25 PM, Ken in nashua
 wrote:
>
> I still am using T4 with dojo-0.4.3 and the tapestry script eFrastructure 
> that tacos has taken advantage of.
>
> That should indicate a boat load plenty of loyalty... and thank.
>
> It would be nice to see some humble support for these though.
>
> One of my most recent peeves was the lack of a coordinate api for determining 
> where a dom is actually positioned... I had to drill into my layers and get 
> the ID's and calculate each position recursively up the dom tree... and 
> create my own geometry mgt api for convenient calculations.
> - cheers
> Best regards Ken in nashua
> _
> Windows Live™ Hotmail(R): Chat. Store. Share. Do more with mail.
> http://windowslive.com/explore?ocid=TXT_TAGLM_WL_t1_hm_justgotbetter_explore_012009

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



RE: is T4 dead ?

2009-01-14 Thread Ken in nashua

I still am using T4 with dojo-0.4.3 and the tapestry script eFrastructure that 
tacos has taken advantage of.
 
That should indicate a boat load plenty of loyalty... and thank.
 
It would be nice to see some humble support for these though.
 
One of my most recent peeves was the lack of a coordinate api for determining 
where a dom is actually positioned... I had to drill into my layers and get the 
ID's and calculate each position recursively up the dom tree... and create my 
own geometry mgt api for convenient calculations.
- cheers
Best regards Ken in nashua
_
Windows Live™ Hotmail®: Chat. Store. Share. Do more with mail. 
http://windowslive.com/explore?ocid=TXT_TAGLM_WL_t1_hm_justgotbetter_explore_012009

Re: Persistance

2009-01-14 Thread Kalle Korhonen
On Wed, Jan 14, 2009 at 1:29 AM, Ville Virtanen wrote:

> I would try to achieve something like that using:
> Custom PersistentFieldStrategy
> (
> http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/PersistentFieldStrategy.html
> )
> Custom LinkFactoryListener
> (
> http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/internal/services/LinkFactoryListener.html
> )
> Custom ComponentEventRequestFilter + PageRenderRequestFilter
> (
> http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/ComponentEventRequestFilter.html
> )
>

Moi moi Ville,

thanks for the links. A custom PersistentFieldStrategy is certainly
something I'm currently looking into.


> Then in theory you can code the conversation id to all links and forms, use
> the filters to intercept the request and get the id back and finally use
> the
> id to retrieve the value from ConversationManager via the CustomPersistence
> strategy. The persistence strategy may use ehcache or something like that
> to
> actually persist the objects. The request object can be used to transmit
> the
> conversation id from the filter to the persistence strategy?


I think its a minor detail whether the id is part of the url a parameter.
EHCache doesn't really come to play, I actually want to keep the
conversation as part of the session (you log out, it'll end all
conversations). In my view, users would have lots of short-lived
conversations going on, each using session but so they don't step on each
other.

This implementation could also be per client tab and not at all dependent of
> the session etc.


>From my opinion, a session is one of the biggest things going for Java
webapps compared to two-tier db-backed architectures like PHP, we just have
to learn to use it the right way.

Kalle



> Kalle Korhonen-2 wrote:
> >
> > I don't know if there's a better thread for discussing page scope and
> > conversation (if you know other threads, please link them in) but I'm
> just
> > doing research on this topic for supporting conversations in Trails.
> > Shortly, I'm hoping that it'd be possible to have a generic
> implementation
> > for conversations by dictating that a conversation should always happen
> on
> > a
> > single "page" or url with asynchronous calls. From my point of view,
> > assuming that only the beginning of a conversation can be bookmarkable
> and
> > that a conversation has one-to-one mapping with a url are reasonable
> > conventions and will greatly simplify the required logic (compared to
> > xml-based navigation flow configurations). These conversations could also
> > be
> > cleaned from session before the session expires and can have individual
> > timeout values.
> >
> > Regarding the problem with multiple pages that others have already
> pointed
> > out, with or without using cookies the urls need to be different (so the
> > page contexts can be kept separate). Typically when editing a single
> > object,
> > you don't even want to allow multiple windows and this can be easily
> dealt
> > with cookies transparently to the user. The only good example of where
> > multi-window support is actually useful that I can come up with is search
> > (say when you are trying to find the best flight to a destination).
> There,
> > I
> > wouldn't even like to necessary have a conversation identifier as part of
> > the url, but as a parameter (e.g. /travelsearch?conversationId=123) since
> > it's not meaningful to bookmark a url with a conversationId in it, but T5
> > doesn't allow one to easily manipulate urls and the page context is
> > extremely handy way of making sure all subsequent action requests (from
> > the
> > same page) are participating in the same conversation. However, one of
> the
> > issues with T5 I haven't been able to satisfactorily solve is forcing a
> > page
> > to use an additional context parameter. I've tried with returning the
> same
> > page from onActivate then setting a conversation id in onPassivate, which
> > works in principle but only if I persist the conversation id which kind
> of
> > defies the point. Anybody happen to have a good, generic solution for
> > automatically adding parameters to the activation context (so they are
> > visible in the url)? I'd be also interested to know if anybody has
> > thoughts
> > on these ideas or is further along in providing a generic implementation
> > for
> > conversations in T5.
> >
> > Kalle
> >
> >
> > On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue  wrote:
> >
> >> In the past I manually implemented this behavior by mixing server side
> >> and
> >> client side persistence.  My code-fu was probably not very elegant.
> >>
> >> In my case, a user could open a report page after filling out a page of
> >> variables.  These report pages would open in a new browser window/tab.
> So
> >> instantly you have the situation where two reports can be open but use
> >> different data.  I would store a client side string on each report page,
> >> and
> 

Re: t5: accessing a text file under resources

2009-01-14 Thread Angelo Chen

Thanks, I found something similar:

 public InputStream getStream() throws IOException {
String fn =
this.getClass().getResource("/robots.txt").getFile();
return new FileInputStream(fn);
}


Tapestry Infodea wrote:
> 
> Hi,
> try something like this:
> 
> private static final String WEB_BASED_PATH = "resources/robots.txt";
> 
> 

-- 
View this message in context: 
http://www.nabble.com/t5%3A-accessing-a-text-file-under-resources-tp21458825p21460394.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


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



Re: t5: accessing a text file under resources

2009-01-14 Thread Tapestry Infodea

Hi,
try something like this:

private static final String WEB_BASED_PATH = "resources/robots.txt";

try {
			InputStream is = 
Thread.currentThread().getContextClassLoader().getResourceAsStream(WEB_BASED_PATH);

DataInputStream din = new DataInputStream(is);
BufferedReader br = new BufferedReader(new 
InputStreamReader(din));
String line;
while ((line = br.readLine()) != null) {
//TODO ...
}
din.close();
} catch (Exception e) {
throw new TapestryException(e.getMessage(), 
resources.getLocation(), e);
}


Angelo Chen ha scritto:

Hi,

I put a robots.txt under resources, it is under classes after build, then
I'd like to access it from the code:

private final class RobotsTxtStreamResponse implements StreamResponse {

  public InputStream getStream() throws IOException {
  return new FileInputStream("robots.txt");
  }
  }

it does not work, any idea how to access that? thanks



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



Re: Tapestry Nightly

2009-01-14 Thread Howard Lewis Ship
I finally got Ubuntu installed on the box yesterday, should have
Bamboo up and running fairly soon.

On Wed, Jan 14, 2009 at 2:49 AM, Martin Papy  wrote:
>
> Hi,
>
> It seem's that the Nightly site / builds / maven etc are down for some days
> now...
>
> Is there any previewed date for their come back ?
>
> Regards,
>
> Martin
> --
> View this message in context: 
> http://www.nabble.com/Tapestry-Nightly-tp21453644p21453644.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

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



Re: example BaseURLSource: T5

2009-01-14 Thread Howard Lewis Ship
Note that you can inject HttpServletRequest instead of RequestGlobals.

On Wed, Jan 14, 2009 at 3:50 AM, Onno Scheffers  wrote:
> This version prepends http or https before the url. In production mode it
> builds on a fixed url and in development mode it returns whatever you used
> to get to the page (localhost? IP?) and adds the right port-number to it. It
> is a stripped down version of my actual implementation, since that
> application can be accessed in different modes from different urls so I hope
> I didn't strip out to much :o)
>
> public class SSLBaseURLSource implements BaseURLSource {
>   private boolean production;
>   private RequestGlobals requestGlobals;
>
>   public SSLBaseURLSource(
> final boolean production,
> final RequestGlobals requestGlobals) {
>  this.production = production;
>  this.requestGlobals = requestGlobals;
>   }
>
>   public String getBaseURL(final boolean secure) {
>  StringBuilder result = new StringBuilder(secure ? "https://"; :
> "http://";);
>  if(production) {
> result.append("www.myurl.com");
>  } else {
> String requestURL =
> requestGlobals.getHTTPServletRequest().getRequestURL().toString();
> int index = requestURL.indexOf("://");
> if(index > 0) {
>requestURL = requestURL.substring(index + 3);
> }
> index = requestURL.indexOf(":");
> if(index > 0) {
>requestURL = requestURL.substring(0, index + 1);
> }
> result.append(requestURL).append(secure ? "8443" : "8080");
>  }
>  return result.toString();
>   }
> }
>
> And then from the AppModule:
>   public static void contributeAlias(
> @Symbol(SymbolConstants.PRODUCTION_MODE) final boolean
> productionMode,
> @InjectService("ApplicationStateManager") final
> ApplicationStateManager applicationStateManager,
> @InjectService("RequestGlobals") final RequestGlobals
> requestGlobals,
> final Configuration configuration) {
>  AliasContribution aliasContribution = new
> AliasContribution(
>BaseURLSource.class,
>new SSLBaseURLSource(productionMode, requestGlobals)
>  );
>  configuration.add(aliasContribution);
>   }
>
> Hope this helps.
>
> regards,
>
> Onno Scheffers
>
>
> On Wed, Jan 14, 2009 at 12:01 PM, peibel  wrote:
>
>>
>>
>> Hi,
>>
>> Someone has an example using BaseURLSource, is very important, I'm tired
>> and
>> I don´t get going from http to https from an http link to the page.
>>
>> thanks for your help
>> --
>> View this message in context:
>> http://www.nabble.com/example-BaseURLSource%3A-T5-tp21453809p21453809.html
>> Sent from the Tapestry - User mailing list archive at Nabble.com.
>>
>>
>> -
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

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



Re: T5: Jump to Specific Page with Grid

2009-01-14 Thread Jayson Pierringer
:)  No problem.  I was just playing with the pager yesterday because I 
had a problem with the page persisting between searches.  If I did a 
search and went to page three and then performed a new search it started 
on page three.  I wanted the new search to start on page one so I used 
the currentPage property to force it to page one if it was a new search.



bobheck wrote:

Thank you Jayson !!!

That was insanely simple.

Nothing like spending a day and a half trying to do something only to find
out the answer is to set a property.  Sigh.  (Walks off, muttering "You are
a good coderpeople like youyou are valuable...")


Jayson Pierringer wrote:
  

Bob,

You can use the setCurrentPage method of your grid component.
myGrid.setCurrentPage(1)

- Jayson

bobheck wrote:


I am trying to do something that seems simple, but I am stumped.

The grid pager renders links that look like this to jump to a specific
page

pagepath/pagename.grid.pager/NN

where NN is the page number the link jumps directly to

I have a large list, and I want users to be able to type a number in a
Textfield and then return the grid back with that number as the starting
page, rather than keep hitting links to get where they want.  Some data
is
over 1000 pages and it takes many clicks.

You can jump to a specific page by typing the URL with the .grid.pager/NN
appended, but I have not found a way to do this programmatically.  I
tried
returning the string of the relative url but got an Exception - Tapestry
does not like the .grid.pager/NN when returned as an Object from an
@OnEvent.

I do not wish to give a fully qualified path in the return, I want to use
relative/friendly urls. 


Any help would be appreciated.
  
  


-
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: T5: Jump to Specific Page with Grid

2009-01-14 Thread bobheck

Thank you Jayson !!!

That was insanely simple.

Nothing like spending a day and a half trying to do something only to find
out the answer is to set a property.  Sigh.  (Walks off, muttering "You are
a good coderpeople like youyou are valuable...")


Jayson Pierringer wrote:
> 
> Bob,
> 
> You can use the setCurrentPage method of your grid component.
> myGrid.setCurrentPage(1)
> 
> - Jayson
> 
> bobheck wrote:
>> I am trying to do something that seems simple, but I am stumped.
>>
>> The grid pager renders links that look like this to jump to a specific
>> page
>>
>> pagepath/pagename.grid.pager/NN
>>
>> where NN is the page number the link jumps directly to
>>
>> I have a large list, and I want users to be able to type a number in a
>> Textfield and then return the grid back with that number as the starting
>> page, rather than keep hitting links to get where they want.  Some data
>> is
>> over 1000 pages and it takes many clicks.
>>
>> You can jump to a specific page by typing the URL with the .grid.pager/NN
>> appended, but I have not found a way to do this programmatically.  I
>> tried
>> returning the string of the relative url but got an Exception - Tapestry
>> does not like the .grid.pager/NN when returned as an Object from an
>> @OnEvent.
>>
>> I do not wish to give a fully qualified path in the return, I want to use
>> relative/friendly urls. 
>>
>> Any help would be appreciated.
>>   
> 
> 
> 
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/T5%3A-Jump-to-Specific-Page-with-Grid-tp21447583p21457848.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


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



Re: T5: Jump to Specific Page with Grid

2009-01-14 Thread Jayson Pierringer

Bob,

You can use the setCurrentPage method of your grid component.
myGrid.setCurrentPage(1)

- Jayson

bobheck wrote:

I am trying to do something that seems simple, but I am stumped.

The grid pager renders links that look like this to jump to a specific page

pagepath/pagename.grid.pager/NN

where NN is the page number the link jumps directly to

I have a large list, and I want users to be able to type a number in a
Textfield and then return the grid back with that number as the starting
page, rather than keep hitting links to get where they want.  Some data is
over 1000 pages and it takes many clicks.

You can jump to a specific page by typing the URL with the .grid.pager/NN
appended, but I have not found a way to do this programmatically.  I tried
returning the string of the relative url but got an Exception - Tapestry
does not like the .grid.pager/NN when returned as an Object from an
@OnEvent.

I do not wish to give a fully qualified path in the return, I want to use
relative/friendly urls. 


Any help would be appreciated.
  




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



Re: Mapping Bean For View Layout

2009-01-14 Thread Gutemberg A. Da Silva
hi guy,

   thanks for your help.

2009/1/14 Harald Geritzer 

>   
>>   public class Teste {
>>  private BeanTeste bt;
>>
>>  public Teste () {
>> this.bt = new BeanTeste();
>>  }
>>
>
>getBt(); { .. }
>setBt(BeanTest bt) { .. }
>
>
>}
>>
>
>
> you can use the value property:
>
>  maxlength="50" />
>
>
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


-- 
Gutemberg A. Da Silva


Re: Mapping Bean For View Layout

2009-01-14 Thread Harald Geritzer

   
   public class Teste {
  private BeanTeste bt;

  public Teste () {
 this.bt = new BeanTeste();
  }


getBt(); { .. }
setBt(BeanTest bt) { .. }



   }



you can use the value property:




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



Re: Mapping Bean For View Layout

2009-01-14 Thread Gutemberg A. Da Silva
when I say "view layout", I wanna say "view tie". I wanna acess one atribut
of the bean across of class of tml.

2009/1/14 Thiago HP 

> On Wed, Jan 14, 2009 at 11:24 AM, Gutemberg A. Da Silva
>  wrote:
> > how do I map 'bean' using the view layout?
>
> What do you mean by view layout?
> By the way, take a look at the Tapestry forms tutorial:
> http://tapestry.apache.org/tapestry5/tutorial1/forms.html
>
> --
> Thiago
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


-- 
Gutemberg A. Da Silva


Re: Mapping Bean For View Layout

2009-01-14 Thread Thiago HP
On Wed, Jan 14, 2009 at 11:24 AM, Gutemberg A. Da Silva
 wrote:
> how do I map 'bean' using the view layout?

What do you mean by view layout?
By the way, take a look at the Tapestry forms tutorial:
http://tapestry.apache.org/tapestry5/tutorial1/forms.html

-- 
Thiago

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



Re: Persistance

2009-01-14 Thread Ville Virtanen

Ok, it uses currentMillis inside the session to differentiate the
conversations. It works, but as we are seasoned T5 users we expect
everything to just work without all that scary java code :)

 - Ville

Ps. Seriously I appreciate greatly your effort and just want to say Thank
you. (I've learned quite a bit reading through jumpstart examples.)


Geoff Callender-2 wrote:
> 
> Try it!
> 
> What you'll see is that if you open two tabs or windows and then start  
> the Wizard in each one then they will get different conversations.   
> This allows you, for example, to work on two orders at once.
> 
> If, however, you start the Wizard AND then open a new tab or window  
> AND your browser preferences are set to open with the current URL AND  
> the browser is not IE or Chrome, then they will share the  
> conversation. I think this is reasonable because it's the preference  
> you have set.  To avoid it, I guess some javascript would be required  
> to detect the situation in the new tab or window or perhaps to prevent  
> new tab or window being started? But maybe that's going too far?
> 
> Geoff
> 
> On 14/01/2009, at 10:45 PM, Ville Virtanen wrote:
> 
>>
>> But still the wizard example requires session in some form and thus  
>> the same
>> conversation in two tabs scenario is not possible?
>>
>> - Ville
>>
>>
>> Geoff Callender-2 wrote:
>>>
>>> It would be great if Tapestry provided a really nice clear solution  
>>> to
>>> conversation state (and continuations), but in the meantime the
>>> workarounds are actually not all that hard.  Have you looked at the 3
>>> Wizard examples and the Conversations List at
>>> http://jumpstart.doublenegative.com.au:8080/jumpstart/
>>>  ?
>>>
>>> One modification I'd like to make to the Wizards is to defer  
>>> assigning
>>> a conversation id until you're on your way from the first page to the
>>> second page.
>>>
>>> Howard's talking about somehow making 5.1 work with Spring WebFlow.
>>> I'll follow that one with great interest, but I'll be wearing my
>>> sceptics hat as I fear that the SWF medicine might be worse than the
>>> problem it's trying to solve.
>>>
>>> Here are some good discussions of the problem:
>>>
>>>
>>> http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html
>>> http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations
>>> http://www.artima.com/forums/flat.jsp?forum=226&thread=197351
>>>
>>> http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html
>>>
>>> Geoff
>>>
>>> On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote:
>>>
 I don't know if there's a better thread for discussing page scope  
 and
 conversation (if you know other threads, please link them in) but
 I'm just
 doing research on this topic for supporting conversations in Trails.
 Shortly, I'm hoping that it'd be possible to have a generic
 implementation
 for conversations by dictating that a conversation should always
 happen on a
 single "page" or url with asynchronous calls. From my point of view,
 assuming that only the beginning of a conversation can be
 bookmarkable and
 that a conversation has one-to-one mapping with a url are reasonable
 conventions and will greatly simplify the required logic (compared  
 to
 xml-based navigation flow configurations). These conversations could
 also be
 cleaned from session before the session expires and can have
 individual
 timeout values.

 Regarding the problem with multiple pages that others have already
 pointed
 out, with or without using cookies the urls need to be different (so
 the
 page contexts can be kept separate). Typically when editing a single
 object,
 you don't even want to allow multiple windows and this can be easily
 dealt
 with cookies transparently to the user. The only good example of  
 where
 multi-window support is actually useful that I can come up with is
 search
 (say when you are trying to find the best flight to a destination).
 There, I
 wouldn't even like to necessary have a conversation identifier as
 part of
 the url, but as a parameter (e.g. /travelsearch?conversationId=123)
 since
 it's not meaningful to bookmark a url with a conversationId in it,
 but T5
 doesn't allow one to easily manipulate urls and the page context is
 extremely handy way of making sure all subsequent action requests
 (from the
 same page) are participating in the same conversation. However, one
 of the
 issues with T5 I haven't been able to satisfactorily solve is
 forcing a page
 to use an additional context parameter. I've tried with returning
 the same
 page from onActivate then setting a conversation id in onPassivate,
 which
 works in principle but only if I persist the conversation id which
 kind of
 defies the point. Anybody happen to ha

EJB questions about Jumpstart

2009-01-14 Thread Sid Ferreira
OBS: I was going to send just for Geoff, but maybe someone else could know
the answer.

Im studing the EJB example but Im failing to make mine work.
Im trying to load ClientesUsuarioFacade or  ClientesUsuarioFacadeLocal (Im
newbie, got a challenge that can mean use T5 in my company and also my
personal projects).

In the example it is used "jumpstart/PersonService/local", and Ive noticed
that @PersistenceContext(unitName = "jumpstart") exists in the PersonService
model, wich probably means unitname/modelname/type. In the EJBs provided to
me, unitname isn't set, and the only way I found to make it work as defining
th ejb in the xml and using the following functions:

static public UsuariosClienteFacadeLocalExt UsuariosCliente() throws
Exception{ try { Context c = new InitialContext(); return
(UsuariosClienteFacadeLocalExt)
c.lookup("java:comp/env/UsuariosClienteFacade"); } catch (Exception e) {
throw new Exception("FacadeLocator Failure"); } }

They are similars, but the address java:comp isn't friendly as the another.

So, I want to find a way to make it easyer, being coding or blaming the
badly done EJB.

Thanks in advance



-- 
Sidney G B Ferreira
Desenvolvedor Web - Tibox Innovations


Mapping Bean For View Layout

2009-01-14 Thread Gutemberg A. Da Silva
how do I map 'bean' using the view layout?

Example:

   
   public class Teste {
  private BeanTeste bt;

  public Teste () {
 this.bt = new BeanTeste();
  }
   }

   
   public class BeanTeste {
  private String name;

  getName();
  setName();
   }

   
   
  
   

-- 
Gutemberg A. Da Silva


Re: Persistance

2009-01-14 Thread Geoff Callender

Try it!

What you'll see is that if you open two tabs or windows and then start  
the Wizard in each one then they will get different conversations.   
This allows you, for example, to work on two orders at once.


If, however, you start the Wizard AND then open a new tab or window  
AND your browser preferences are set to open with the current URL AND  
the browser is not IE or Chrome, then they will share the  
conversation. I think this is reasonable because it's the preference  
you have set.  To avoid it, I guess some javascript would be required  
to detect the situation in the new tab or window or perhaps to prevent  
new tab or window being started? But maybe that's going too far?


Geoff

On 14/01/2009, at 10:45 PM, Ville Virtanen wrote:



But still the wizard example requires session in some form and thus  
the same

conversation in two tabs scenario is not possible?

- Ville


Geoff Callender-2 wrote:


It would be great if Tapestry provided a really nice clear solution  
to

conversation state (and continuations), but in the meantime the
workarounds are actually not all that hard.  Have you looked at the 3
Wizard examples and the Conversations List at
http://jumpstart.doublenegative.com.au:8080/jumpstart/
 ?

One modification I'd like to make to the Wizards is to defer  
assigning

a conversation id until you're on your way from the first page to the
second page.

Howard's talking about somehow making 5.1 work with Spring WebFlow.
I'll follow that one with great interest, but I'll be wearing my
sceptics hat as I fear that the SWF medicine might be worse than the
problem it's trying to solve.

Here are some good discussions of the problem:


http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html
http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations
http://www.artima.com/forums/flat.jsp?forum=226&thread=197351

http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html

Geoff

On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote:

I don't know if there's a better thread for discussing page scope  
and

conversation (if you know other threads, please link them in) but
I'm just
doing research on this topic for supporting conversations in Trails.
Shortly, I'm hoping that it'd be possible to have a generic
implementation
for conversations by dictating that a conversation should always
happen on a
single "page" or url with asynchronous calls. From my point of view,
assuming that only the beginning of a conversation can be
bookmarkable and
that a conversation has one-to-one mapping with a url are reasonable
conventions and will greatly simplify the required logic (compared  
to

xml-based navigation flow configurations). These conversations could
also be
cleaned from session before the session expires and can have
individual
timeout values.

Regarding the problem with multiple pages that others have already
pointed
out, with or without using cookies the urls need to be different (so
the
page contexts can be kept separate). Typically when editing a single
object,
you don't even want to allow multiple windows and this can be easily
dealt
with cookies transparently to the user. The only good example of  
where

multi-window support is actually useful that I can come up with is
search
(say when you are trying to find the best flight to a destination).
There, I
wouldn't even like to necessary have a conversation identifier as
part of
the url, but as a parameter (e.g. /travelsearch?conversationId=123)
since
it's not meaningful to bookmark a url with a conversationId in it,
but T5
doesn't allow one to easily manipulate urls and the page context is
extremely handy way of making sure all subsequent action requests
(from the
same page) are participating in the same conversation. However, one
of the
issues with T5 I haven't been able to satisfactorily solve is
forcing a page
to use an additional context parameter. I've tried with returning
the same
page from onActivate then setting a conversation id in onPassivate,
which
works in principle but only if I persist the conversation id which
kind of
defies the point. Anybody happen to have a good, generic solution  
for
automatically adding parameters to the activation context (so they  
are

visible in the url)? I'd be also interested to know if anybody has
thoughts
on these ideas or is further along in providing a generic
implementation for
conversations in T5.

Kalle


On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue 
wrote:


In the past I manually implemented this behavior by mixing server
side and
client side persistence.  My code-fu was probably not very elegant.

In my case, a user could open a report page after filling out a
page of
variables.  These report pages would open in a new browser window/
tab. So
instantly you have the situation where two reports can be open but
use
different data.  I would store a client side string on each report
page,
and
LRU hash map on the ASO 

Re: Strange ClassNotFoundException: org.slf4j.Logger

2009-01-14 Thread Joachim Van der Auwera

I assume slf4j is on the classpath twice...

Thiago HP wrote:

Hi!

I'm having a very strange exception when trying to run a T5
application (www.arsmachina.com.br/project/example):
Error obtaining injected value for field
org.apache.tapestry5.corelib.components.Form.logger:
java.lang.ClassNotFoundException: org.slf4j.Logger
It seems to be a Tapestry classloading issue, as slf4j-api *is* in the
classpath.

At my home, when running from JettyLauncher (modified to run under
Java 6), runs OK. Under Run-Jetty-Run, the exception is thrown.
Running an embedded Jetty at my home, ok, at my work, exception
raised.

Thanks in advance.

Full stack trace:
 java.lang.RuntimeException: java.lang.ClassNotFoundException: caught
an exception while obtaining a class file for
org.apache.tapestry5.corelib.components.Form
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:296)
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findInstantiator(ComponentInstantiatorSourceImpl.java:272)
at 
$ComponentInstantiatorSource_11ed4d10948.findInstantiator($ComponentInstantiatorSource_11ed4d10948.java)
at 
org.apache.tapestry5.internal.services.PageElementFactoryImpl.newComponentElement(PageElementFactoryImpl.java:216)
... 144 more
Caused by: java.lang.ClassNotFoundException: caught an exception while
obtaining a class file for
org.apache.tapestry5.corelib.components.Form
at javassist.Loader.findClass(Loader.java:359)
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:92)
at javassist.Loader.loadClass(Loader.java:311)
at java.lang.ClassLoader.loadClass(Unknown Source)
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:292)
... 147 more
Caused by: org.apache.tapestry5.internal.services.TransformationException:
Error obtaining injected value for field
org.apache.tapestry5.corelib.components.Form.logger:
java.lang.ClassNotFoundException: org.slf4j.Logger
at 
org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:176)
at 
$ComponentClassTransformer_11ed4d10954.transformComponentClass($ComponentClassTransformer_11ed4d10954.java)
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:201)
at javassist.Loader.findClass(Loader.java:340)
... 151 more
Caused by: java.lang.RuntimeException: Error obtaining injected value
for field org.apache.tapestry5.corelib.components.Form.logger:
java.lang.ClassNotFoundException: org.slf4j.Logger
at 
org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:68)
at 
$ComponentClassTransformWorker_11ed4d109a4.transform($ComponentClassTransformWorker_11ed4d109a4.java)
at 
$ComponentClassTransformWorker_11ed4d1099a.transform($ComponentClassTransformWorker_11ed4d1099a.java)
at 
org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:170)
... 154 more
Caused by: java.lang.RuntimeException:
java.lang.ClassNotFoundException: org.slf4j.Logger
at 
org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1765)
at 
org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:55)
... 157 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at javassist.Loader.delegateToParent(Loader.java:428)
at javassist.Loader.loadClass(Loader.java:314)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at 
org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1761)

  



--
Joachim Van der Auwera
PROGS bvba, progs.be


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



Re: example BaseURLSource: T5

2009-01-14 Thread Onno Scheffers
This version prepends http or https before the url. In production mode it
builds on a fixed url and in development mode it returns whatever you used
to get to the page (localhost? IP?) and adds the right port-number to it. It
is a stripped down version of my actual implementation, since that
application can be accessed in different modes from different urls so I hope
I didn't strip out to much :o)

public class SSLBaseURLSource implements BaseURLSource {
   private boolean production;
   private RequestGlobals requestGlobals;

   public SSLBaseURLSource(
 final boolean production,
 final RequestGlobals requestGlobals) {
  this.production = production;
  this.requestGlobals = requestGlobals;
   }

   public String getBaseURL(final boolean secure) {
  StringBuilder result = new StringBuilder(secure ? "https://"; :
"http://";);
  if(production) {
 result.append("www.myurl.com");
  } else {
 String requestURL =
requestGlobals.getHTTPServletRequest().getRequestURL().toString();
 int index = requestURL.indexOf("://");
 if(index > 0) {
requestURL = requestURL.substring(index + 3);
 }
 index = requestURL.indexOf(":");
 if(index > 0) {
requestURL = requestURL.substring(0, index + 1);
 }
 result.append(requestURL).append(secure ? "8443" : "8080");
  }
  return result.toString();
   }
}

And then from the AppModule:
   public static void contributeAlias(
 @Symbol(SymbolConstants.PRODUCTION_MODE) final boolean
productionMode,
 @InjectService("ApplicationStateManager") final
ApplicationStateManager applicationStateManager,
 @InjectService("RequestGlobals") final RequestGlobals
requestGlobals,
 final Configuration configuration) {
  AliasContribution aliasContribution = new
AliasContribution(
BaseURLSource.class,
new SSLBaseURLSource(productionMode, requestGlobals)
  );
  configuration.add(aliasContribution);
   }

Hope this helps.

regards,

Onno Scheffers


On Wed, Jan 14, 2009 at 12:01 PM, peibel  wrote:

>
>
> Hi,
>
> Someone has an example using BaseURLSource, is very important, I'm tired
> and
> I don´t get going from http to https from an http link to the page.
>
> thanks for your help
> --
> View this message in context:
> http://www.nabble.com/example-BaseURLSource%3A-T5-tp21453809p21453809.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


Re: Persistance

2009-01-14 Thread Ville Virtanen

But still the wizard example requires session in some form and thus the same
conversation in two tabs scenario is not possible?

 - Ville


Geoff Callender-2 wrote:
> 
> It would be great if Tapestry provided a really nice clear solution to  
> conversation state (and continuations), but in the meantime the  
> workarounds are actually not all that hard.  Have you looked at the 3  
> Wizard examples and the Conversations List at
> http://jumpstart.doublenegative.com.au:8080/jumpstart/ 
>   ?
> 
> One modification I'd like to make to the Wizards is to defer assigning  
> a conversation id until you're on your way from the first page to the  
> second page.
> 
> Howard's talking about somehow making 5.1 work with Spring WebFlow.  
> I'll follow that one with great interest, but I'll be wearing my  
> sceptics hat as I fear that the SWF medicine might be worse than the  
> problem it's trying to solve.
> 
> Here are some good discussions of the problem:
> 
> 
> http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html
>   http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations
>   http://www.artima.com/forums/flat.jsp?forum=226&thread=197351
> 
> http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html
> 
> Geoff
> 
> On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote:
> 
>> I don't know if there's a better thread for discussing page scope and
>> conversation (if you know other threads, please link them in) but  
>> I'm just
>> doing research on this topic for supporting conversations in Trails.
>> Shortly, I'm hoping that it'd be possible to have a generic  
>> implementation
>> for conversations by dictating that a conversation should always  
>> happen on a
>> single "page" or url with asynchronous calls. From my point of view,
>> assuming that only the beginning of a conversation can be  
>> bookmarkable and
>> that a conversation has one-to-one mapping with a url are reasonable
>> conventions and will greatly simplify the required logic (compared to
>> xml-based navigation flow configurations). These conversations could  
>> also be
>> cleaned from session before the session expires and can have  
>> individual
>> timeout values.
>>
>> Regarding the problem with multiple pages that others have already  
>> pointed
>> out, with or without using cookies the urls need to be different (so  
>> the
>> page contexts can be kept separate). Typically when editing a single  
>> object,
>> you don't even want to allow multiple windows and this can be easily  
>> dealt
>> with cookies transparently to the user. The only good example of where
>> multi-window support is actually useful that I can come up with is  
>> search
>> (say when you are trying to find the best flight to a destination).  
>> There, I
>> wouldn't even like to necessary have a conversation identifier as  
>> part of
>> the url, but as a parameter (e.g. /travelsearch?conversationId=123)  
>> since
>> it's not meaningful to bookmark a url with a conversationId in it,  
>> but T5
>> doesn't allow one to easily manipulate urls and the page context is
>> extremely handy way of making sure all subsequent action requests  
>> (from the
>> same page) are participating in the same conversation. However, one  
>> of the
>> issues with T5 I haven't been able to satisfactorily solve is  
>> forcing a page
>> to use an additional context parameter. I've tried with returning  
>> the same
>> page from onActivate then setting a conversation id in onPassivate,  
>> which
>> works in principle but only if I persist the conversation id which  
>> kind of
>> defies the point. Anybody happen to have a good, generic solution for
>> automatically adding parameters to the activation context (so they are
>> visible in the url)? I'd be also interested to know if anybody has  
>> thoughts
>> on these ideas or is further along in providing a generic  
>> implementation for
>> conversations in T5.
>>
>> Kalle
>>
>>
>> On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue   
>> wrote:
>>
>>> In the past I manually implemented this behavior by mixing server  
>>> side and
>>> client side persistence.  My code-fu was probably not very elegant.
>>>
>>> In my case, a user could open a report page after filling out a  
>>> page of
>>> variables.  These report pages would open in a new browser window/ 
>>> tab. So
>>> instantly you have the situation where two reports can be open but  
>>> use
>>> different data.  I would store a client side string on each report  
>>> page,
>>> and
>>> LRU hash map on the ASO side would match it to the relative data,  
>>> just
>>> before the report was run and a new page opened.  If it was in the  
>>> LRU, I
>>> could grab the cached report.  If not, I still had enough  
>>> information to
>>> run
>>> the report again.  If the report page needed to be refreshed (such as
>>> sorting something on the page, non-async), the client side key  
>>> would look
>>> up
>>> the data.
>

Re: [T5] improve documentation

2009-01-14 Thread Peter Stavrinides
A search on the Tapestry site! I have always wandered why there isn't one? 
these days its a given.

Peter

- Original Message -
From: superoverdr...@gmx.de
To: users@tapestry.apache.org
Sent: Wednesday, 14 January, 2009 1:05:50 PM GMT +02:00 Athens, Beirut, 
Bucharest, Istanbul
Subject: Re: RE: [T5] improve documentation

Jumpstart would also be a good idea


 Original-Nachricht 
> Datum: Wed, 14 Jan 2009 10:22:13 -
> Von: "Newham, Cameron" 
> An: "Tapestry users" 
> Betreff: RE: [T5] improve documentation

> I second this.
> 
> I much prefer the "cookbook" approach as opposed to having to wade through
> a complete application to find how to do something.
> 
> Jumpstart is excellent and has helped me many times. All it needs is
> perhaps a bit more explanation of what's going on, more cases covering 
> solutions
> to common problems, and a bit more filling out.
> 
> 
> 
> -Original Message-
> From: Andy Pahne [mailto:andy.pa...@googlemail.com] 
> Sent: 13 January 2009 21:15
> To: Tapestry users
> Subject: Re: [T5] improve documentation
> 
> 
> I'd prefer if it were more like jumpstart than petstore.
> 
> Any chance jumpstart becoming part of the framework?
> 
> Andy
> 
> 
> 
> superoverdr...@gmx.de schrieb:
> > An good old pet-shop application...with lots of Ajax would be nice...or
> something similiar.
> >
> > It could coves common questions on the Tapestry mailing list from the
> past
> > by providing an example implementation.
> >
> > Would be good if it also contained one or the other things of the
> following list:
> >
> > - Caching HTML fragments (e.g. expensive database queries) that only
> need to be generated
> > every 5 minutes or 5 hours.
> >
> > - Dynamic rendering of form elements (when the configuration is read
> from a database, for dynamic
> > form field definitions, e.g. in the backend "3 textfields with 50 chars
> max, 10 checkboxes with 3 minimum selections.)
> >
> > - some "common" Ajax/DHTML stuff you see nowadays on most websites..e.g.
> > "animations", e.g. imagine you delete a row from a table that dissolves
> with a small animation, or combining an Ajax List with autocomplete or
> something like this here:
> >
> >
> http://www.interiders.com/2008/02/11/prototextboxlist-meets-autocompletion/
> >
> > and stuff like progress bars (e.g. during a search)
> >
> > Just a few suggestions!
> >
> > Toby
> >
> >  Original-Nachricht 
> >   
> >> Datum: Tue, 13 Jan 2009 10:15:44 -0800
> >> Von: Howard Lewis Ship 
> >> An: Tapestry users 
> >> Betreff: Re: [T5] improve documentation
> >> 
> >
> >   
> >> I've been coming to the same conclusion.
> >>
> >> I'm clearing time with my boss to pursue this, along with several
> >> online articles.
> >>
> >> I have an idea for an application that can demonstrate every bit of
> >> Tapestry and be useful to boot.
> >>
> >> So the "guide" is the reference, what I have planned is the "tour".
> >> It would replace the tutorial.
> >>
> >> On Tue, Jan 13, 2009 at 6:28 AM, Ulrich Stärk 
> wrote:
> >> 
> >>> Hi all,
> >>>
> >>> Tapestry's current documentation is very complete, covering almost
> >>> everything a developer needs to know to be productive with Tapestry.
> >>> Unfortunately this documentation is clustered across several locations
> >>>   
> >> thus
> >> 
> >>> making it hard to find information and very hard for beginners to get
> >>>   
> >> going.
> >> 
> >>> Sometimes even I am annoyed because I don't find the information I'm
> >>>   
> >> looking
> >> 
> >>> for at the expected place. There is the official user guide, which is
> no
> >>> guide in the actual sense of the word but merely a collection of
> topics
> >>> using Tapestry-specific vocabulary as the topics, making it hard for a
> >>> beginner to get started. Then there is the tutorial that gets you
> >>>   
> >> started
> >> 
> >>> with Tapestry but doesn't go deep enough to know the name of the topic
> >>>   
> >> to
> >> 
> >>> look for in the user guide when a problem arises or more information
> on
> >>>   
> >> a
> >> 
> >>> subject is needed. Thirdly, there is the wiki that contains numerous
> >>> examples on how to solve common use cases with Tapestry. And lastly
> >>>   
> >> there is
> >> 
> >>> the component reference that not only contains documentation for a
> >>>   
> >> specific
> >> 
> >>> component but also contains examples on how to use them to solve
> common
> >>>   
> >> use
> >> 
> >>> cases. Today for example, someone on the users mailing list asked for
> >>>   
> >> how to
> >> 
> >>> have some kind of a "dynamic component". He wanted to display a
> certain
> >>> component based on the outcome of a function he wrote in his page
> class.
> >>> This question has come up before on the list and because of the
> "Static
> >>> Structure, Dynamic Behavior" paradigm - which is a key principle and
> is
> >>>   
> >> not
> >

Re: Strange ClassNotFoundException: org.slf4j.Logger

2009-01-14 Thread Thiago HP
On Wed, Jan 14, 2009 at 9:19 AM, Martijn Brinkers
 wrote:
> Have you tried setting parentLoaderPriority?

Hi! Thanks for your answer, but it didn't work. That wiki page talks
about @Inject'ng a Logger, but in my case the problem happens when
instantiating (or getting) a Logger for a Form component. All other
pages work.

-- 
Thiago

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



Re: Strange ClassNotFoundException: org.slf4j.Logger

2009-01-14 Thread Martijn Brinkers
Have you tried setting parentLoaderPriority?

See:

http://wiki.apache.org/tapestry/Tapestry5HowToSetupEclipseRunJettyRun

Martijn


On Wed, 2009-01-14 at 09:11 -0200, Thiago HP wrote:
> Hi!
> 
> I'm having a very strange exception when trying to run a T5
> application (www.arsmachina.com.br/project/example):
> Error obtaining injected value for field
> org.apache.tapestry5.corelib.components.Form.logger:
> java.lang.ClassNotFoundException: org.slf4j.Logger
> It seems to be a Tapestry classloading issue, as slf4j-api *is* in the
> classpath.
> 
> At my home, when running from JettyLauncher (modified to run under
> Java 6), runs OK. Under Run-Jetty-Run, the exception is thrown.
> Running an embedded Jetty at my home, ok, at my work, exception
> raised.
> 
> Thanks in advance.
> 
> Full stack trace:
>  java.lang.RuntimeException: java.lang.ClassNotFoundException: caught
> an exception while obtaining a class file for
> org.apache.tapestry5.corelib.components.Form
>   at 
> org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:296)
>   at 
> org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findInstantiator(ComponentInstantiatorSourceImpl.java:272)
>   at 
> $ComponentInstantiatorSource_11ed4d10948.findInstantiator($ComponentInstantiatorSource_11ed4d10948.java)
>   at 
> org.apache.tapestry5.internal.services.PageElementFactoryImpl.newComponentElement(PageElementFactoryImpl.java:216)
>   ... 144 more
> Caused by: java.lang.ClassNotFoundException: caught an exception while
> obtaining a class file for
> org.apache.tapestry5.corelib.components.Form
>   at javassist.Loader.findClass(Loader.java:359)
>   at 
> org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:92)
>   at javassist.Loader.loadClass(Loader.java:311)
>   at java.lang.ClassLoader.loadClass(Unknown Source)
>   at 
> org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:292)
>   ... 147 more
> Caused by: org.apache.tapestry5.internal.services.TransformationException:
> Error obtaining injected value for field
> org.apache.tapestry5.corelib.components.Form.logger:
> java.lang.ClassNotFoundException: org.slf4j.Logger
>   at 
> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:176)
>   at 
> $ComponentClassTransformer_11ed4d10954.transformComponentClass($ComponentClassTransformer_11ed4d10954.java)
>   at 
> org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:201)
>   at javassist.Loader.findClass(Loader.java:340)
>   ... 151 more
> Caused by: java.lang.RuntimeException: Error obtaining injected value
> for field org.apache.tapestry5.corelib.components.Form.logger:
> java.lang.ClassNotFoundException: org.slf4j.Logger
>   at 
> org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:68)
>   at 
> $ComponentClassTransformWorker_11ed4d109a4.transform($ComponentClassTransformWorker_11ed4d109a4.java)
>   at 
> $ComponentClassTransformWorker_11ed4d1099a.transform($ComponentClassTransformWorker_11ed4d1099a.java)
>   at 
> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:170)
>   ... 154 more
> Caused by: java.lang.RuntimeException:
> java.lang.ClassNotFoundException: org.slf4j.Logger
>   at 
> org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1765)
>   at 
> org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:55)
>   ... 157 more
> Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
>   at java.net.URLClassLoader$1.run(Unknown Source)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at java.net.URLClassLoader.findClass(Unknown Source)
>   at java.lang.ClassLoader.loadClass(Unknown Source)
>   at java.lang.ClassLoader.loadClass(Unknown Source)
>   at javassist.Loader.delegateToParent(Loader.java:428)
>   at javassist.Loader.loadClass(Loader.java:314)
>   at java.lang.ClassLoader.loadClass(Unknown Source)
>   at java.lang.ClassLoader.loadClassInternal(Unknown Source)
>   at java.lang.Class.forName0(Native Method)
>   at java.lang.Class.forName(Unknown Source)
>   at 
> org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1761)
> 


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



Strange ClassNotFoundException: org.slf4j.Logger

2009-01-14 Thread Thiago HP
Hi!

I'm having a very strange exception when trying to run a T5
application (www.arsmachina.com.br/project/example):
Error obtaining injected value for field
org.apache.tapestry5.corelib.components.Form.logger:
java.lang.ClassNotFoundException: org.slf4j.Logger
It seems to be a Tapestry classloading issue, as slf4j-api *is* in the
classpath.

At my home, when running from JettyLauncher (modified to run under
Java 6), runs OK. Under Run-Jetty-Run, the exception is thrown.
Running an embedded Jetty at my home, ok, at my work, exception
raised.

Thanks in advance.

Full stack trace:
 java.lang.RuntimeException: java.lang.ClassNotFoundException: caught
an exception while obtaining a class file for
org.apache.tapestry5.corelib.components.Form
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:296)
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findInstantiator(ComponentInstantiatorSourceImpl.java:272)
at 
$ComponentInstantiatorSource_11ed4d10948.findInstantiator($ComponentInstantiatorSource_11ed4d10948.java)
at 
org.apache.tapestry5.internal.services.PageElementFactoryImpl.newComponentElement(PageElementFactoryImpl.java:216)
... 144 more
Caused by: java.lang.ClassNotFoundException: caught an exception while
obtaining a class file for
org.apache.tapestry5.corelib.components.Form
at javassist.Loader.findClass(Loader.java:359)
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:92)
at javassist.Loader.loadClass(Loader.java:311)
at java.lang.ClassLoader.loadClass(Unknown Source)
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:292)
... 147 more
Caused by: org.apache.tapestry5.internal.services.TransformationException:
Error obtaining injected value for field
org.apache.tapestry5.corelib.components.Form.logger:
java.lang.ClassNotFoundException: org.slf4j.Logger
at 
org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:176)
at 
$ComponentClassTransformer_11ed4d10954.transformComponentClass($ComponentClassTransformer_11ed4d10954.java)
at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:201)
at javassist.Loader.findClass(Loader.java:340)
... 151 more
Caused by: java.lang.RuntimeException: Error obtaining injected value
for field org.apache.tapestry5.corelib.components.Form.logger:
java.lang.ClassNotFoundException: org.slf4j.Logger
at 
org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:68)
at 
$ComponentClassTransformWorker_11ed4d109a4.transform($ComponentClassTransformWorker_11ed4d109a4.java)
at 
$ComponentClassTransformWorker_11ed4d1099a.transform($ComponentClassTransformWorker_11ed4d1099a.java)
at 
org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:170)
... 154 more
Caused by: java.lang.RuntimeException:
java.lang.ClassNotFoundException: org.slf4j.Logger
at 
org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1765)
at 
org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:55)
... 157 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at javassist.Loader.delegateToParent(Loader.java:428)
at javassist.Loader.loadClass(Loader.java:314)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at 
org.apache.tapestry5.internal.services.InternalClassTransformationImpl.toClass(InternalClassTransformationImpl.java:1761)

-- 
Thiago

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



Re: RE: [T5] improve documentation

2009-01-14 Thread superoverdrive
Jumpstart would also be a good idea


 Original-Nachricht 
> Datum: Wed, 14 Jan 2009 10:22:13 -
> Von: "Newham, Cameron" 
> An: "Tapestry users" 
> Betreff: RE: [T5] improve documentation

> I second this.
> 
> I much prefer the "cookbook" approach as opposed to having to wade through
> a complete application to find how to do something.
> 
> Jumpstart is excellent and has helped me many times. All it needs is
> perhaps a bit more explanation of what's going on, more cases covering 
> solutions
> to common problems, and a bit more filling out.
> 
> 
> 
> -Original Message-
> From: Andy Pahne [mailto:andy.pa...@googlemail.com] 
> Sent: 13 January 2009 21:15
> To: Tapestry users
> Subject: Re: [T5] improve documentation
> 
> 
> I'd prefer if it were more like jumpstart than petstore.
> 
> Any chance jumpstart becoming part of the framework?
> 
> Andy
> 
> 
> 
> superoverdr...@gmx.de schrieb:
> > An good old pet-shop application...with lots of Ajax would be nice...or
> something similiar.
> >
> > It could coves common questions on the Tapestry mailing list from the
> past
> > by providing an example implementation.
> >
> > Would be good if it also contained one or the other things of the
> following list:
> >
> > - Caching HTML fragments (e.g. expensive database queries) that only
> need to be generated
> > every 5 minutes or 5 hours.
> >
> > - Dynamic rendering of form elements (when the configuration is read
> from a database, for dynamic
> > form field definitions, e.g. in the backend "3 textfields with 50 chars
> max, 10 checkboxes with 3 minimum selections.)
> >
> > - some "common" Ajax/DHTML stuff you see nowadays on most websites..e.g.
> > "animations", e.g. imagine you delete a row from a table that dissolves
> with a small animation, or combining an Ajax List with autocomplete or
> something like this here:
> >
> >
> http://www.interiders.com/2008/02/11/prototextboxlist-meets-autocompletion/
> >
> > and stuff like progress bars (e.g. during a search)
> >
> > Just a few suggestions!
> >
> > Toby
> >
> >  Original-Nachricht 
> >   
> >> Datum: Tue, 13 Jan 2009 10:15:44 -0800
> >> Von: Howard Lewis Ship 
> >> An: Tapestry users 
> >> Betreff: Re: [T5] improve documentation
> >> 
> >
> >   
> >> I've been coming to the same conclusion.
> >>
> >> I'm clearing time with my boss to pursue this, along with several
> >> online articles.
> >>
> >> I have an idea for an application that can demonstrate every bit of
> >> Tapestry and be useful to boot.
> >>
> >> So the "guide" is the reference, what I have planned is the "tour".
> >> It would replace the tutorial.
> >>
> >> On Tue, Jan 13, 2009 at 6:28 AM, Ulrich Stärk 
> wrote:
> >> 
> >>> Hi all,
> >>>
> >>> Tapestry's current documentation is very complete, covering almost
> >>> everything a developer needs to know to be productive with Tapestry.
> >>> Unfortunately this documentation is clustered across several locations
> >>>   
> >> thus
> >> 
> >>> making it hard to find information and very hard for beginners to get
> >>>   
> >> going.
> >> 
> >>> Sometimes even I am annoyed because I don't find the information I'm
> >>>   
> >> looking
> >> 
> >>> for at the expected place. There is the official user guide, which is
> no
> >>> guide in the actual sense of the word but merely a collection of
> topics
> >>> using Tapestry-specific vocabulary as the topics, making it hard for a
> >>> beginner to get started. Then there is the tutorial that gets you
> >>>   
> >> started
> >> 
> >>> with Tapestry but doesn't go deep enough to know the name of the topic
> >>>   
> >> to
> >> 
> >>> look for in the user guide when a problem arises or more information
> on
> >>>   
> >> a
> >> 
> >>> subject is needed. Thirdly, there is the wiki that contains numerous
> >>> examples on how to solve common use cases with Tapestry. And lastly
> >>>   
> >> there is
> >> 
> >>> the component reference that not only contains documentation for a
> >>>   
> >> specific
> >> 
> >>> component but also contains examples on how to use them to solve
> common
> >>>   
> >> use
> >> 
> >>> cases. Today for example, someone on the users mailing list asked for
> >>>   
> >> how to
> >> 
> >>> have some kind of a "dynamic component". He wanted to display a
> certain
> >>> component based on the outcome of a function he wrote in his page
> class.
> >>> This question has come up before on the list and because of the
> "Static
> >>> Structure, Dynamic Behavior" paradigm - which is a key principle and
> is
> >>>   
> >> not
> >> 
> >>> mentioned in the documentation but at the bottom of the start page -
> the
> >>> solution is to use the Delegate component with blocks. In the Delegate
> >>> component reference documentation there is an example covering exactly
> >>>   
> >> that
> >> 
> >>> use case. But it seems that the user wasn't able to 

example BaseURLSource: T5

2009-01-14 Thread peibel


Hi,

Someone has an example using BaseURLSource, is very important, I'm tired and
I don´t get going from http to https from an http link to the page.

thanks for your help
-- 
View this message in context: 
http://www.nabble.com/example-BaseURLSource%3A-T5-tp21453809p21453809.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


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



Tapestry Nightly

2009-01-14 Thread Martin Papy

Hi,

It seem's that the Nightly site / builds / maven etc are down for some days
now... 

Is there any previewed date for their come back ?

Regards,

Martin
-- 
View this message in context: 
http://www.nabble.com/Tapestry-Nightly-tp21453644p21453644.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


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



RE: [T5] improve documentation

2009-01-14 Thread Newham, Cameron
I second this.

I much prefer the "cookbook" approach as opposed to having to wade through a 
complete application to find how to do something.

Jumpstart is excellent and has helped me many times. All it needs is perhaps a 
bit more explanation of what's going on, more cases covering solutions to 
common problems, and a bit more filling out.



-Original Message-
From: Andy Pahne [mailto:andy.pa...@googlemail.com] 
Sent: 13 January 2009 21:15
To: Tapestry users
Subject: Re: [T5] improve documentation


I'd prefer if it were more like jumpstart than petstore.

Any chance jumpstart becoming part of the framework?

Andy



superoverdr...@gmx.de schrieb:
> An good old pet-shop application...with lots of Ajax would be nice...or 
> something similiar.
>
> It could coves common questions on the Tapestry mailing list from the past
> by providing an example implementation.
>
> Would be good if it also contained one or the other things of the following 
> list:
>
> - Caching HTML fragments (e.g. expensive database queries) that only need to 
> be generated
> every 5 minutes or 5 hours.
>
> - Dynamic rendering of form elements (when the configuration is read from a 
> database, for dynamic
> form field definitions, e.g. in the backend "3 textfields with 50 chars max, 
> 10 checkboxes with 3 minimum selections.)
>
> - some "common" Ajax/DHTML stuff you see nowadays on most websites..e.g. 
> "animations", e.g. imagine you delete a row from a table that dissolves with 
> a small animation, or combining an Ajax List with autocomplete or something 
> like this here:
>
> http://www.interiders.com/2008/02/11/prototextboxlist-meets-autocompletion/
>
> and stuff like progress bars (e.g. during a search)
>
> Just a few suggestions!
>
> Toby
>
>  Original-Nachricht 
>   
>> Datum: Tue, 13 Jan 2009 10:15:44 -0800
>> Von: Howard Lewis Ship 
>> An: Tapestry users 
>> Betreff: Re: [T5] improve documentation
>> 
>
>   
>> I've been coming to the same conclusion.
>>
>> I'm clearing time with my boss to pursue this, along with several
>> online articles.
>>
>> I have an idea for an application that can demonstrate every bit of
>> Tapestry and be useful to boot.
>>
>> So the "guide" is the reference, what I have planned is the "tour".
>> It would replace the tutorial.
>>
>> On Tue, Jan 13, 2009 at 6:28 AM, Ulrich Stärk  wrote:
>> 
>>> Hi all,
>>>
>>> Tapestry's current documentation is very complete, covering almost
>>> everything a developer needs to know to be productive with Tapestry.
>>> Unfortunately this documentation is clustered across several locations
>>>   
>> thus
>> 
>>> making it hard to find information and very hard for beginners to get
>>>   
>> going.
>> 
>>> Sometimes even I am annoyed because I don't find the information I'm
>>>   
>> looking
>> 
>>> for at the expected place. There is the official user guide, which is no
>>> guide in the actual sense of the word but merely a collection of topics
>>> using Tapestry-specific vocabulary as the topics, making it hard for a
>>> beginner to get started. Then there is the tutorial that gets you
>>>   
>> started
>> 
>>> with Tapestry but doesn't go deep enough to know the name of the topic
>>>   
>> to
>> 
>>> look for in the user guide when a problem arises or more information on
>>>   
>> a
>> 
>>> subject is needed. Thirdly, there is the wiki that contains numerous
>>> examples on how to solve common use cases with Tapestry. And lastly
>>>   
>> there is
>> 
>>> the component reference that not only contains documentation for a
>>>   
>> specific
>> 
>>> component but also contains examples on how to use them to solve common
>>>   
>> use
>> 
>>> cases. Today for example, someone on the users mailing list asked for
>>>   
>> how to
>> 
>>> have some kind of a "dynamic component". He wanted to display a certain
>>> component based on the outcome of a function he wrote in his page class.
>>> This question has come up before on the list and because of the "Static
>>> Structure, Dynamic Behavior" paradigm - which is a key principle and is
>>>   
>> not
>> 
>>> mentioned in the documentation but at the bottom of the start page - the
>>> solution is to use the Delegate component with blocks. In the Delegate
>>> component reference documentation there is an example covering exactly
>>>   
>> that
>> 
>>> use case. But it seems that the user wasn't able to find it - either he
>>> didn't look at all or more probably, he looked in the wrong place. How
>>>   
>> could
>> 
>>> he possibly know, that the solution to his use case is documented in a
>>> component named Delegate?
>>> Because I think that the current arrangement of the documentation makes
>>>   
>> it
>> 
>>> hard to grasp the concepts of Tapestry, especially for beginners, and to
>>> quickly find the information one seeks, I propose the following steps to
>>>   
>> be

Re: Persistance

2009-01-14 Thread Geoff Callender
It would be great if Tapestry provided a really nice clear solution to  
conversation state (and continuations), but in the meantime the  
workarounds are actually not all that hard.  Have you looked at the 3  
Wizard examples and the Conversations List at http://jumpstart.doublenegative.com.au:8080/jumpstart/ 
 ?


One modification I'd like to make to the Wizards is to defer assigning  
a conversation id until you're on your way from the first page to the  
second page.


Howard's talking about somehow making 5.1 work with Spring WebFlow.  
I'll follow that one with great interest, but I'll be wearing my  
sceptics hat as I fear that the SWF medicine might be worse than the  
problem it's trying to solve.


Here are some good discussions of the problem:


http://www.developertutorials.com/tutorials/java/develop-complex-web-applications-050422/page1.html
http://rifers.org/blogs/gbevin/2005/4/11/continuations_continuations
http://www.artima.com/forums/flat.jsp?forum=226&thread=197351

http://debasishg.blogspot.com/2006/07/spring-web-flow-declarative-web.html

Geoff

On 14/01/2009, at 5:25 PM, Kalle Korhonen wrote:


I don't know if there's a better thread for discussing page scope and
conversation (if you know other threads, please link them in) but  
I'm just

doing research on this topic for supporting conversations in Trails.
Shortly, I'm hoping that it'd be possible to have a generic  
implementation
for conversations by dictating that a conversation should always  
happen on a

single "page" or url with asynchronous calls. From my point of view,
assuming that only the beginning of a conversation can be  
bookmarkable and

that a conversation has one-to-one mapping with a url are reasonable
conventions and will greatly simplify the required logic (compared to
xml-based navigation flow configurations). These conversations could  
also be
cleaned from session before the session expires and can have  
individual

timeout values.

Regarding the problem with multiple pages that others have already  
pointed
out, with or without using cookies the urls need to be different (so  
the
page contexts can be kept separate). Typically when editing a single  
object,
you don't even want to allow multiple windows and this can be easily  
dealt

with cookies transparently to the user. The only good example of where
multi-window support is actually useful that I can come up with is  
search
(say when you are trying to find the best flight to a destination).  
There, I
wouldn't even like to necessary have a conversation identifier as  
part of
the url, but as a parameter (e.g. /travelsearch?conversationId=123)  
since
it's not meaningful to bookmark a url with a conversationId in it,  
but T5

doesn't allow one to easily manipulate urls and the page context is
extremely handy way of making sure all subsequent action requests  
(from the
same page) are participating in the same conversation. However, one  
of the
issues with T5 I haven't been able to satisfactorily solve is  
forcing a page
to use an additional context parameter. I've tried with returning  
the same
page from onActivate then setting a conversation id in onPassivate,  
which
works in principle but only if I persist the conversation id which  
kind of

defies the point. Anybody happen to have a good, generic solution for
automatically adding parameters to the activation context (so they are
visible in the url)? I'd be also interested to know if anybody has  
thoughts
on these ideas or is further along in providing a generic  
implementation for

conversations in T5.

Kalle


On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue   
wrote:


In the past I manually implemented this behavior by mixing server  
side and

client side persistence.  My code-fu was probably not very elegant.

In my case, a user could open a report page after filling out a  
page of
variables.  These report pages would open in a new browser window/ 
tab. So
instantly you have the situation where two reports can be open but  
use
different data.  I would store a client side string on each report  
page,

and
LRU hash map on the ASO side would match it to the relative data,  
just
before the report was run and a new page opened.  If it was in the  
LRU, I
could grab the cached report.  If not, I still had enough  
information to

run
the report again.  If the report page needed to be refreshed (such as
sorting something on the page, non-async), the client side key  
would look

up
the data.

I used a small LRU limit (like 5) to keep the size down.

Daniel

On Fri, Nov 28, 2008 at 10:18 PM, thermus  wrote:



I'm interested in this as well.  Specifically if a user has two page
instances open, how can T5 persistence be used reliably?

I found on Safari and Firefox (not sure about IE, but likely a  
problem

there
as well) that the persisted session properties are shared between  
page
instances and each page can overwrite the another.  My searches  
didn't

come
up

Re: Persistance

2009-01-14 Thread Ville Virtanen

Moi Kalle,

I would try to achieve something like that using:

Custom PersistentFieldStrategy
(http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/PersistentFieldStrategy.html)

Custom LinkFactoryListener
(http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/internal/services/LinkFactoryListener.html)

Custom ComponentEventRequestFilter + PageRenderRequestFilter
(http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/ComponentEventRequestFilter.html)

Then in theory you can code the conversation id to all links and forms, use
the filters to intercept the request and get the id back and finally use the
id to retrieve the value from ConversationManager via the CustomPersistence
strategy. The persistence strategy may use ehcache or something like that to
actually persist the objects. The request object can be used to transmit the
conversation id from the filter to the persistence strategy?

This implementation could also be per client tab and not at all dependent of
the session etc.

Just some quick thoughts.. 

 - Ville


Kalle Korhonen-2 wrote:
> 
> I don't know if there's a better thread for discussing page scope and
> conversation (if you know other threads, please link them in) but I'm just
> doing research on this topic for supporting conversations in Trails.
> Shortly, I'm hoping that it'd be possible to have a generic implementation
> for conversations by dictating that a conversation should always happen on
> a
> single "page" or url with asynchronous calls. From my point of view,
> assuming that only the beginning of a conversation can be bookmarkable and
> that a conversation has one-to-one mapping with a url are reasonable
> conventions and will greatly simplify the required logic (compared to
> xml-based navigation flow configurations). These conversations could also
> be
> cleaned from session before the session expires and can have individual
> timeout values.
> 
> Regarding the problem with multiple pages that others have already pointed
> out, with or without using cookies the urls need to be different (so the
> page contexts can be kept separate). Typically when editing a single
> object,
> you don't even want to allow multiple windows and this can be easily dealt
> with cookies transparently to the user. The only good example of where
> multi-window support is actually useful that I can come up with is search
> (say when you are trying to find the best flight to a destination). There,
> I
> wouldn't even like to necessary have a conversation identifier as part of
> the url, but as a parameter (e.g. /travelsearch?conversationId=123) since
> it's not meaningful to bookmark a url with a conversationId in it, but T5
> doesn't allow one to easily manipulate urls and the page context is
> extremely handy way of making sure all subsequent action requests (from
> the
> same page) are participating in the same conversation. However, one of the
> issues with T5 I haven't been able to satisfactorily solve is forcing a
> page
> to use an additional context parameter. I've tried with returning the same
> page from onActivate then setting a conversation id in onPassivate, which
> works in principle but only if I persist the conversation id which kind of
> defies the point. Anybody happen to have a good, generic solution for
> automatically adding parameters to the activation context (so they are
> visible in the url)? I'd be also interested to know if anybody has
> thoughts
> on these ideas or is further along in providing a generic implementation
> for
> conversations in T5.
> 
> Kalle
> 
> 
> On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue  wrote:
> 
>> In the past I manually implemented this behavior by mixing server side
>> and
>> client side persistence.  My code-fu was probably not very elegant.
>>
>> In my case, a user could open a report page after filling out a page of
>> variables.  These report pages would open in a new browser window/tab. So
>> instantly you have the situation where two reports can be open but use
>> different data.  I would store a client side string on each report page,
>> and
>> LRU hash map on the ASO side would match it to the relative data, just
>> before the report was run and a new page opened.  If it was in the LRU, I
>> could grab the cached report.  If not, I still had enough information to
>> run
>> the report again.  If the report page needed to be refreshed (such as
>> sorting something on the page, non-async), the client side key would look
>> up
>> the data.
>>
>> I used a small LRU limit (like 5) to keep the size down.
>>
>> Daniel
>>
>> On Fri, Nov 28, 2008 at 10:18 PM, thermus  wrote:
>>
>> >
>> > I'm interested in this as well.  Specifically if a user has two page
>> > instances open, how can T5 persistence be used reliably?
>> >
>> > I found on Safari and Firefox (not sure about IE, but likely a problem
>> > there
>> > as well) that the persisted session properties are shared between page
>> > instance

Re: NoSuchElementException in volatile loop

2009-01-14 Thread Joachim Van der Auwera

Problem solved.

It seems that for some reason not entirely clear to me, there was a 
difference in server side and client side state. The end result is the 
exception below. I believe that either there is a mistake in the 
comments in the code (about everything being driven by the stored 
actions, in which case a NoSuchElementException should not occur) or 
that a better exception message could be produced indicating that the 
number of items in the loop does not match the count expected by the 
stored actions.


Kind regards,
Joachim

Joachim Van der Auwera wrote:

Sorry, this time with stacktrace...

I have a form which causes the following exception on submit.
This seems to be a problem with the advance_volatile commands in the 
form.

I am using tapestry 5.0.18. Any ideas how to fix this?

Stack trace below,

Thanks for the help.

Joachim

2009-01-13 18:31:00,770 ERROR 
[org.apache.tapestry5.services.TapestryModule.RequestExceptionHandler] 
Processing of request failed with uncaught exception: 
org.apache.tapestry5.runtime.ComponentEventException
org.apache.tapestry5.runtime.ComponentEventException [at 
classpath:my/app/gui/components/Layout.tml, line 198, column 60]
at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1076) 

at 
org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:68) 

at 
org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFilter.handle(ImmediateActionRenderResponseFilter.java:42) 

at 
$ComponentEventRequestHandler_11ed1054ff6.handle($ComponentEventRequestHandler_11ed1054ff6.java) 

at 
org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) 

at 
$ComponentEventRequestHandler_11ed1054ff6.handle($ComponentEventRequestHandler_11ed1054ff6.java) 

at 
org.apache.tapestry5.services.TapestryModule$44.handle(TapestryModule.java:2105) 

at 
$ComponentEventRequestHandler_11ed1054ff6.handle($ComponentEventRequestHandler_11ed1054ff6.java) 

at 
$ComponentEventRequestHandler_11ed1054f72.handle($ComponentEventRequestHandler_11ed1054f72.java) 

at 
org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:127) 


at $Dispatcher_11ed1054f74.dispatch($Dispatcher_11ed1054f74.java)
at $Dispatcher_11ed1054f60.dispatch($Dispatcher_11ed1054f60.java)
at 
org.apache.tapestry5.services.TapestryModule$17.service(TapestryModule.java:1029) 


at my.app.gui.services.AppModule$1.service(AppModule.java:115)
at 
$RequestFilter_11ed1054f5f.service($RequestFilter_11ed1054f5f.java)
at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
org.apache.tapestry5.internal.services.LocalizationFilter.service(LocalizationFilter.java:42) 

at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) 

at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:621) 

at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:611) 

at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85) 

at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
org.equanda.tapestry5.services.EquandaModule$1.service(EquandaModule.java:88) 

at 
$RequestFilter_11ed1054f5a.service($RequestFilter_11ed1054f5a.java)
at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
org.equanda.t5gui.services.T5guiModule$7.service(T5guiModule.java:185)
at 
$RequestFilter_11ed1054f59.service($RequestFilter_11ed1054f59.java)
at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
org.chenillekit.access.ChenilleKitAccessModule$1.service(ChenilleKitAccessModule.java:197) 

at 
$RequestFilter_11ed1054f58.service($RequestFilter_11ed1054f58.java)
at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93) 

at 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84) 

at 
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:83) 

at 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106) 

at 
$RequestHandler_11ed1054f61.service($RequestHandler_11ed1054f61.java)
at 
$RequestHandler_11ed1054f54.service($RequestHandler_11ed1054f54.java)
at 
org.apache.tapestry

Re: EJB Problem

2009-01-14 Thread Sid Ferreira
Hi Geoff!Thank you for replying.

Unfortunelly I worked all based on this example, more exactly:
1) I made Tapestry4nonbelievers
2) Changed the DAOs to a version that works with my database
3) migrated from DAO to EJB.

Maybe I forgot something, or maybe I did it wrong dunno. Im starting to
believe that my problem is the EJBs that have been provided to me, not
tapestry.

Also, checking BusinessServicesLocator.java, made me think: I would have to
rewrite the lookup to locate the EJBs?

On Wed, Jan 14, 2009 at 6:37 AM, Geoff Callender <
geoff.callender.jumpst...@gmail.com> wrote:

> http://jumpstart.doublenegative.com.au:8080/jumpstart/examples/state/ejb3
>
> HTH,
> Geoff
>
>
> On 14/01/2009, at 6:03 AM, Sid Ferreira wrote:
>
>  Ok, I need to get used about mailing lists... too much years on irc.
>> Im trying to, based on Tapestry 4 non believers, fetch all the data to a
>> grid.
>> Using the same Layout and Start, tried to bind the EJBs, but failed.
>> As I said before, it worked only when using a manual lookup and EJB tags
>> in
>> web.xml.
>>
>> I really would like to see a 100% tapestry way, cause it means use better
>> tool than faces-config and stuff.
>>
>> On Tue, Jan 13, 2009 at 4:39 PM, Sid Ferreira  wrote:
>>
>>  Well, as Uli @ freenode said, that wasn't exactly a smart
>>> question.Anyway,
>>> I would like some help cause it's strange that the bind works but no data
>>> is
>>> retrieved.
>>>
>>> The lookup function is included, if it helps.
>>>
>>> Ps: Yes, Im a freaking newbie in java, but looking for better techs to my
>>> company.
>>>
>>> thanks in advance.
>>>
>>>
>>> On Tue, Jan 13, 2009 at 4:23 PM, Sid Ferreira  wrote:
>>>
>>>  Guys, tried to use EJB 3 in my project and really it was a pain in the
 ass.

 After extending the FacadeLocal and the Facade to T5 services, it
 finally
 stopped the exceptions, but now I got a boolean thing:

 If I use bind, it returns no results.

 If I use lookup (EJB in the xml and an InicialContext.lookup thing) it
 works with results.

 What's wrong?

 http://rapidshare.com/files/182871317/afs.war.html

 Please, help me to solve this... Or else we'll need to use freaking
 JSF...

 Ps: sending sources except EJBs

 --
 Sidney G B Ferreira
 Desenvolvedor Web - Tibox Innovations



>>>
>>> --
>>> Sidney G B Ferreira
>>> Desenvolvedor Web - Tibox Innovations
>>>
>>>
>>>
>>
>> --
>> Sidney G B Ferreira
>> Desenvolvedor Web - Tibox Innovations
>>
>
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


-- 
Sidney G B Ferreira
Desenvolvedor Web - Tibox Innovations


Re: EJB Problem

2009-01-14 Thread Geoff Callender

http://jumpstart.doublenegative.com.au:8080/jumpstart/examples/state/ejb3

HTH,
Geoff

On 14/01/2009, at 6:03 AM, Sid Ferreira wrote:


Ok, I need to get used about mailing lists... too much years on irc.
Im trying to, based on Tapestry 4 non believers, fetch all the data  
to a

grid.
Using the same Layout and Start, tried to bind the EJBs, but failed.
As I said before, it worked only when using a manual lookup and EJB  
tags in

web.xml.

I really would like to see a 100% tapestry way, cause it means use  
better

tool than faces-config and stuff.

On Tue, Jan 13, 2009 at 4:39 PM, Sid Ferreira   
wrote:


Well, as Uli @ freenode said, that wasn't exactly a smart  
question.Anyway,
I would like some help cause it's strange that the bind works but  
no data is

retrieved.

The lookup function is included, if it helps.

Ps: Yes, Im a freaking newbie in java, but looking for better techs  
to my

company.

thanks in advance.


On Tue, Jan 13, 2009 at 4:23 PM, Sid Ferreira   
wrote:


Guys, tried to use EJB 3 in my project and really it was a pain in  
the

ass.

After extending the FacadeLocal and the Facade to T5 services, it  
finally

stopped the exceptions, but now I got a boolean thing:

If I use bind, it returns no results.

If I use lookup (EJB in the xml and an InicialContext.lookup  
thing) it

works with results.

What's wrong?

http://rapidshare.com/files/182871317/afs.war.html

Please, help me to solve this... Or else we'll need to use  
freaking JSF...


Ps: sending sources except EJBs

--
Sidney G B Ferreira
Desenvolvedor Web - Tibox Innovations





--
Sidney G B Ferreira
Desenvolvedor Web - Tibox Innovations





--
Sidney G B Ferreira
Desenvolvedor Web - Tibox Innovations



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



contributeTranslatorDefaultSource

2009-01-14 Thread Joachim Van der Auwera
When upgrading (or trying to) to 5.1.0.0 I get an exception because the 
TranslatorDefault service no longer exists. What should I replace my 
contributeTranslatorDefaultSource methods by?


Thanks,
Joachim

--
Joachim Van der Auwera
PROGS bvba, progs.be


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