Patching Tapestry for IE9 Prototype Bug

2011-08-24 Thread Joel Halbert
Hi Folks,

We're on T 5.2.4.

Are these instructions for patching Tap for IE9 up-to-date? 

http://tapestry.1045711.n5.nabble.com/Re-Prototype-IE9-update-td4331824.html


The tapestry-js-fixes.js file Howard refers to seems not to exist.
https://github.com/hlship/tapx/blob/master/tapx-prototype/src/main/resources/com/howardlewisship/tapx/prototype/tapestry-js-fixes.js

Pointers appreciated


Joel Halbert

http://www.webalertpro.com
http://twitter.com/webalertpro


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



Re: Patching Tapestry for IE9 Prototype Bug

2011-08-24 Thread Joel Halbert
Oof, does this
https://github.com/hlship/tapx/commit/6088137226a045e03faca2e1c4e0cb62f94c9c3c
mean that we need to upgrade to 5.3 to fix this?


Does anyone have a version of the original patch or know how I can
access it from git-hub?


On Wed, 2011-08-24 at 11:34 +0100, Joel Halbert wrote:
 Hi Folks,
 
 We're on T 5.2.4.
 
 Are these instructions for patching Tap for IE9 up-to-date? 
 
 http://tapestry.1045711.n5.nabble.com/Re-Prototype-IE9-update-td4331824.html
 
 
 The tapestry-js-fixes.js file Howard refers to seems not to exist.
 https://github.com/hlship/tapx/blob/master/tapx-prototype/src/main/resources/com/howardlewisship/tapx/prototype/tapestry-js-fixes.js
 
 Pointers appreciated
 
 
 Joel Halbert
 
 http://www.webalertpro.com
 http://twitter.com/webalertpro
 
 
 -
 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: Patching Tapestry for IE9 Prototype Bug

2011-08-24 Thread Joel Halbert
Who knows, and even if it is, what next?

On Wed, 2011-08-24 at 06:57 -0500, Barry Books wrote:
 Is this the commit?
 
 https://github.com/hlship/tapx/commit/46e1ca9d4a6463feb708e0d3074ca759690331dd
 
 -
 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: Patching Tapestry for IE9 Prototype Bug

2011-08-24 Thread Joel Halbert
rant
It's pretty frustrating there there is no procedure on the Tap website
for patching 5.2.X for the prototype IE9 bug. And any links in the
mailing list archive that point to git have expired.

I'd have thought this was a pretty serious bug. Unfortunately for us
we've only just realised it's affecting our users (our bad for not
testing IE9 properly). 

In frustration I'm now downloading the 5.3 alpha - with all the
headaches a version upgrade entails (breaking changes / testing etc...)

But it seems there are only source files available for 5.3, which is
fine but ant now seems to insist on various maven artefacts, or it
barfs. Why does everything need to go through
maven/gradle/yet-another-random-build-system ?

What's wrong with a simple ant build?
/rant

Anyway, are there 
a) any binaries for 5.3 or a simple ant build target ?
b) a comprehensive patch with instructions for the IE9 zone/prototype
bug ?


On Wed, 2011-08-24 at 12:11 +0100, Joel Halbert wrote:
 Oof, does this
 https://github.com/hlship/tapx/commit/6088137226a045e03faca2e1c4e0cb62f94c9c3c
 mean that we need to upgrade to 5.3 to fix this?
 
 
 Does anyone have a version of the original patch or know how I can
 access it from git-hub?
 
 
 On Wed, 2011-08-24 at 11:34 +0100, Joel Halbert wrote:
  Hi Folks,
  
  We're on T 5.2.4.
  
  Are these instructions for patching Tap for IE9 up-to-date? 
  
  http://tapestry.1045711.n5.nabble.com/Re-Prototype-IE9-update-td4331824.html
  
  
  The tapestry-js-fixes.js file Howard refers to seems not to exist.
  https://github.com/hlship/tapx/blob/master/tapx-prototype/src/main/resources/com/howardlewisship/tapx/prototype/tapestry-js-fixes.js
  
  Pointers appreciated
  
  
  Joel Halbert
  
  http://www.webalertpro.com
  http://twitter.com/webalertpro
  
  
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
  
 
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
 



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



Re: Patching Tapestry for IE9 Prototype Bug

2011-08-24 Thread Joel Halbert
Would be good if that's the case, I'll try it out.

Since it wasn't listed  as a bug fix I presumed it was not included.
Presumably Tap's not counting it as a bug since it's in the js libs?


On Wed, 2011-08-24 at 14:50 +0200, Chris Poulsen wrote:
 Hi,
 
 I haven't been following this closely, but are you sure that the most recent
 5.2 build (5.2.6) does not contain what you need?
 
 It has some updates to the js libs as far as i can tell from the release
 notes?
 
 http://tapestry.apache.org/release-notes-52.html#ReleaseNotes5.2-ReleaseNotes%253ATapestry5.2.6
 



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



Re: Patching Tapestry for IE9 Prototype Bug

2011-08-24 Thread Joel Halbert
So the reason I went straight to 5.3 was that the following BUG fix is
listed in the 5.3 release notes:

[TAP5-1257] - Javascript error with IE Prototype still in 1.7



Any confirmation from the dev team as to the right version to use to fix
the zone update bug (see link) in IE9 much appreciated.
http://tapestry.1045711.n5.nabble.com/Re-Prototype-IE9-update-td4331824.html



On Wed, 2011-08-24 at 13:53 +0100, Joel Halbert wrote:
 Would be good if that's the case, I'll try it out.
 
 Since it wasn't listed  as a bug fix I presumed it was not included.
 Presumably Tap's not counting it as a bug since it's in the js libs?
 
 
 On Wed, 2011-08-24 at 14:50 +0200, Chris Poulsen wrote:
  Hi,
  
  I haven't been following this closely, but are you sure that the most recent
  5.2 build (5.2.6) does not contain what you need?
  
  It has some updates to the js libs as far as i can tell from the release
  notes?
  
  http://tapestry.apache.org/release-notes-52.html#ReleaseNotes5.2-ReleaseNotes%253ATapestry5.2.6
  
 



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



Re: Patching Tapestry for IE9 Prototype Bug

2011-08-24 Thread Joel Halbert
Having read the bug comments I'm guessing TAP5-1257 is unrelated to the
IE9 issue so presumably 5.2.6 is the right version...
https://issues.apache.org/jira/browse/TAP5-1257




On Wed, 2011-08-24 at 13:56 +0100, Joel Halbert wrote:
 So the reason I went straight to 5.3 was that the following BUG fix is
 listed in the 5.3 release notes:
 
 [TAP5-1257] - Javascript error with IE Prototype still in 1.7
 
 
 
 Any confirmation from the dev team as to the right version to use to fix
 the zone update bug (see link) in IE9 much appreciated.
 http://tapestry.1045711.n5.nabble.com/Re-Prototype-IE9-update-td4331824.html
 
 
 
 On Wed, 2011-08-24 at 13:53 +0100, Joel Halbert wrote:
  Would be good if that's the case, I'll try it out.
  
  Since it wasn't listed  as a bug fix I presumed it was not included.
  Presumably Tap's not counting it as a bug since it's in the js libs?
  
  
  On Wed, 2011-08-24 at 14:50 +0200, Chris Poulsen wrote:
   Hi,
   
   I haven't been following this closely, but are you sure that the most 
   recent
   5.2 build (5.2.6) does not contain what you need?
   
   It has some updates to the js libs as far as i can tell from the release
   notes?
   
   http://tapestry.apache.org/release-notes-52.html#ReleaseNotes5.2-ReleaseNotes%253ATapestry5.2.6
   
  
 
 
 
 -
 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: Patching Tapestry for IE9 Prototype Bug

2011-08-24 Thread Joel Halbert
Confirmed, 5.2.6 fixes the problem in IE9.

On Wed, 2011-08-24 at 14:00 +0100, Joel Halbert wrote:
 Having read the bug comments I'm guessing TAP5-1257 is unrelated to the
 IE9 issue so presumably 5.2.6 is the right version...
 https://issues.apache.org/jira/browse/TAP5-1257
 
 
 
 
 On Wed, 2011-08-24 at 13:56 +0100, Joel Halbert wrote:
  So the reason I went straight to 5.3 was that the following BUG fix is
  listed in the 5.3 release notes:
  
  [TAP5-1257] - Javascript error with IE Prototype still in 1.7
  
  
  
  Any confirmation from the dev team as to the right version to use to fix
  the zone update bug (see link) in IE9 much appreciated.
  http://tapestry.1045711.n5.nabble.com/Re-Prototype-IE9-update-td4331824.html
  
  
  
  On Wed, 2011-08-24 at 13:53 +0100, Joel Halbert wrote:
   Would be good if that's the case, I'll try it out.
   
   Since it wasn't listed  as a bug fix I presumed it was not included.
   Presumably Tap's not counting it as a bug since it's in the js libs?
   
   
   On Wed, 2011-08-24 at 14:50 +0200, Chris Poulsen wrote:
Hi,

I haven't been following this closely, but are you sure that the most 
recent
5.2 build (5.2.6) does not contain what you need?

It has some updates to the js libs as far as i can tell from the release
notes?

http://tapestry.apache.org/release-notes-52.html#ReleaseNotes5.2-ReleaseNotes%253ATapestry5.2.6

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



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



Re: Ajax callback for checkbox component?

2011-07-04 Thread Joel Halbert
OK np. 

Thanks Thiago!

On Sun, 2011-07-03 at 19:53 -0300, Thiago H. de Paula Figueiredo wrote:
 On Sun, 03 Jul 2011 14:54:22 -0300, Joel Halbert j...@su3analytics.com  
 wrote:
 
  Hi Folks,
 
 Hi!
 
  Is there an equivalent callback for a checkbox?
 
 Not out-of-the-box, but you can use a little bit of custom JavaScript plus  
 a custom event (URL created by ComponentResources.createEventLink()) for  
 that.
 



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



Ajax callback for checkbox component?

2011-07-03 Thread Joel Halbert
Hi Folks,

You can register for an ajax callback from select components like so:

page.tml:

t:select t:id=name value=name model=nameModel blankOption=NEVER
t:zone=buttonZone  /

Page.java:

Object onValueChangedFromName(String name) {
// update zone
}



Is there an equivalent callback for a checkbox? 


Thanks!

Joel



Access component via http request

2011-06-30 Thread Joel Halbert
Hi,

Is it possible to invoke a component directly via HTTP?

E.g given a Tapestry Page:

public class MyPage {
  Object onMyRequest() {
return something;
  }
}

I can call http://myapp/mypage:myrequest/ to return something.

Can I do the same for a component?

Cheers,
Joel


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



Re: Access component via http request

2011-06-30 Thread Joel Halbert
Can I access a component out of the context of a page? 
i.e. does a component have to be bound to a Page to be rendered?

I'm trying render a simple html template and fetch it from my JS.


On Thu, 2011-06-30 at 17:38 -0300, Thiago H. de Paula Figueiredo wrote:
 On Thu, 30 Jun 2011 17:26:35 -0300, Joel Halbert j...@su3analytics.com  
 wrote:
 
  Hi,
 
 Hi!
 
  Is it possible to invoke a component directly via HTTP?
 
  E.g given a Tapestry Page:
 
  public class MyPage {
Object onMyRequest() {
  return something;
}
  }
 
  I can call http://myapp/mypage:myrequest/ to return something.
  Can I do the same for a component?
 
 It's not recommended to access components directly, but you can @Inject  
 ComponentResources and use its createEventLink() method.
 



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



Re: Access component via http request

2011-06-30 Thread Joel Halbert
hmm, how about using the tapx TemplateAPI and TemplateRenderer within a
tapestry app?

I don't need to do anything fancy like Page rendering, and infact am
just using a Page instance as  useful hook for ajax methods. 
From this method I just want to return some html rendered with tml,
using tap's templating  expression language.

I've used tapx TemplateRenderer before with success, for sending HTML
emails. Was hoping to do something similar now, although having tried it
I get the following error:


TemplateAPI templateAPI = new TemplateAPI(mypackage.web, new
File(/web/components));
TemplateRenderer renderer = templateAPI.createRenderer(Tiles, en,
default);
RenderedStream renderedStream = renderer.render();

throws:

Caused by: java.lang.IllegalArgumentException: Location 'default' is not
defined. Defined location names: (none).

Any clues as to how to fix that error?


On Thu, 2011-06-30 at 14:07 -0700, Howard Lewis Ship wrote:

 You can ask any component to generate an event request Link using its
 component resources.  In Tapestry, you don't try to second guess, on
 the client side, what links will look like ... you ask the server side
 to generate a link, and then your JavaScript code can send Ajax
 requests to that component.
 
 In terms of what you are trying to do ... Tapestry assumes most
 requests from the client will generate a partial page render response
 ... a particular format JSON response that contains HTML plus details
 about JavaScript libraries and initializations.  In any case, that's
 what a Zone (or anything Zone-like) needs.  If you can, use Zone.
 
 Alternately, a component may send a response directly back to the
 client, which it be text, HTML, JSON, or something binary.
 
 On Thu, Jun 30, 2011 at 1:55 PM, Joel Halbert j...@su3analytics.com wrote:
  Can I access a component out of the context of a page?
  i.e. does a component have to be bound to a Page to be rendered?
 
  I'm trying render a simple html template and fetch it from my JS.
 
 
  On Thu, 2011-06-30 at 17:38 -0300, Thiago H. de Paula Figueiredo wrote:
  On Thu, 30 Jun 2011 17:26:35 -0300, Joel Halbert j...@su3analytics.com
  wrote:
 
   Hi,
 
  Hi!
 
   Is it possible to invoke a component directly via HTTP?
  
   E.g given a Tapestry Page:
  
   public class MyPage {
 Object onMyRequest() {
   return something;
 }
   }
  
   I can call http://myapp/mypage:myrequest/ to return something.
   Can I do the same for a component?
 
  It's not recommended to access components directly, but you can @Inject
  ComponentResources and use its createEventLink() method.
 
 
 
 
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
 
 
 
 
 




Re: Access component via http request

2011-06-30 Thread Joel Halbert
Good question, my rational was that I *might want need to re-use the
template I'm creating inside a Tap Page soon, so I thought I would start
off by making the html I need to render a Component (as I could access
and render a component directly via an http request).

I could always embed the Component within an empty wrapper Page and
access that via http, but I was hoping this wouldn't be necessary.


On Thu, 2011-06-30 at 23:11 +0200, Markus Feindler wrote:
 Then, why don't you use a page at all?
  Can I access a component out of the context of a page?
  i.e. does a component have to be bound to a Page to be rendered?
 
  I'm trying render a simple html template and fetch it from my JS.
 
 
  On Thu, 2011-06-30 at 17:38 -0300, Thiago H. de Paula Figueiredo wrote:
  On Thu, 30 Jun 2011 17:26:35 -0300, Joel Halbertj...@su3analytics.com
  wrote:
 
  Hi,
  Hi!
 
  Is it possible to invoke a component directly via HTTP?
 
  E.g given a Tapestry Page:
 
  public class MyPage {
 Object onMyRequest() {
return something;
 }
  }
 
  I can call http://myapp/mypage:myrequest/ to return something.
  Can I do the same for a component?
  It's not recommended to access components directly, but you can @Inject
  ComponentResources and use its createEventLink() method.
 
 
 
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
 
 
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
 



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



Re: Method arguments in template expansions

2011-06-26 Thread Joel Halbert
Cool, it works!

I had tried it, but forgotten that method names are not shortened, so as
Robert suggested you have to use the full method name:

${getFoo('bar')}

works.

${foo('bar')}

does not.



On Sun, 2011-06-26 at 01:53 +0200, Martin Strand wrote:
 Just remember that method names are not shortened in the same way  
 property names are.
 
 i.e. invoking this method:
 public String getClass(String link)
 
 would look like:
 ${getClass('link1')}
 
 On Sun, 26 Jun 2011 01:33:39 +0200, Robert Zeigler  
 robert.zeig...@roxanemy.com wrote:
 
  Have you tried? :)
  ${} is using the property expression language under the hood, which  
  /does/ support method evaluation/method arguments, so I would expect  
  ${class('link1')} to work... but i haven't tried it, either. :)
 
  Robert
 
  On Jun 25, 2011, at 6/256:31 PM , Joel Halbert wrote:
 
  I'm pretty sure the answer's NO, but just incase I'll ask anyway.
 
  Is it possible to include method arguments in template expansions?
 
  I would die to be able to just do this:
 
  a href=link1 class=${class('link1')}link1/a
  a href=link2 class=${class('link2')}link2/a
  a href=link3 class=${class('link3')}link3/a
 
 -
 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



Method arguments in template expansions

2011-06-25 Thread Joel Halbert
I'm pretty sure the answer's NO, but just incase I'll ask anyway.

Is it possible to include method arguments in template expansions?

I would die to be able to just do this:

a href=link1 class=${class('link1')}link1/a
a href=link2 class=${class('link2')}link2/a
a href=link3 class=${class('link3')}link3/a

Cheers,

Joel



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



Re: Live class reloading very slow

2011-05-25 Thread Joel Halbert
Hi Davor,

Have you tried running Jetty standalone, out of eclipse?

This is what we do. I'm not sure it has anything to do with your problem
but it might be worth a try.

It's only a few lines of code to write a simple Jetty server launcher as
you can see http://pastebin.com/WsEFi2yh

Just write a simple script to run for this class and even though you'll
be using Jetty outside of eclipse you can still make code changes in
eclipse and it will reload them dynamically (as long as you set your
classpath for the jetty startup script correctly).

- J

On Wed, 2011-05-25 at 10:17 +0200, Davor Hrg wrote:
 Hi,
 
 your suggestion did improve reload when only template is changed.
 
 Still 6 seconds reload happens when I change page class.
 Hope this is also abnormal and someone has some suggestions
 how to fix it as well.
 
 
 to clarify :
 adding exclude ** for resources will stop eclipse from doing anything there,
 and this was wrong until I restored defaults for m2eclipse.
 by doing this maven added it's own resource processing to the build.
 After that templates get copied as soon as edited,
 Unlike with eclipse builder page reload is very fast 200ms for a page that
 reloaded 6 seconds
 before the changes were made.
 
 
 Davor Hrg
 
 
 On Tue, May 24, 2011 at 7:49 PM, Bryan Lewis jbryanle...@gmail.com wrote:
 
  I put it back into the src/main/resources line of .classpath, like:
 
 classpathentry excluding=** kind=src output=target/classes
  path=src/main/resources/
 
  My templates are being copied to the expected place, like ...
  target\classes\com\companyname\appname\pages\PageName.tml.
 
  Maybe there's something else amiss with your maven/build configuration.
  Does your pom.xml have the resources section?  Maybe compare your
  configuration with a small new one like the Tapestry quickstart.
 
 
 
  On Tue, May 24, 2011 at 1:37 PM, Davor Hrg hrgda...@gmail.com wrote:
 
   I also removed excluding ** for src/main/resurces
  
   but without it templates do not get copied to calsses dir
  
   where did you put back the excluding ** ?
  
  
   Davor Hrg
  
 



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



A new T5 site! www.bookmarkerpro.com

2011-05-24 Thread Joel Halbert
Hi Folks,

We've just released (another) Tapestry5 based site!

www.bookmarkerpro.com

This one's a bookmarking app, as the name suggests.  

Features include:

* Search the content of your bookmarks: page content, title  url
* Monitor your bookmarked pages, or even just part(s) of each page
* Alerts (including optional email) when content you are monitoring
changes
* Import bookmarks from your browser. Export at any time.
* One click search of your bookmarks from your browsers
* Page archival and page change history

We'll also be integrating with Readability in the near future, for
sending bookmarked pages to kindle/ipad/iphone for offline viewing.

The front end is wordpress (yawn) buy the back-end is all T5 (yay!)
goodness .

If you'd like to try it out you can sign up in less than 10 seconds, all
you need is an email/password. We'd love to get your feedback.
http://www.bookmarkerpro.com/beta-trial

Once again, thanks to everyone on the mailing list for any help, and to
the core T5 developers!

Joel

(p.s. Thiago - should be OK in Opera too, but let me know if not!)


Re: A new T5 site! www.bookmarkerpro.com

2011-05-24 Thread Joel Halbert
The front of site www.bookmarkerpro.com is wordpress, but this is only a
few pages.

ALL of the backend, on the app sub-domain, app.bookmarkerpro.com is T5.

It also integrates with Lucene, HBase, OpenJPA  our crawler.

If you want to have a play you just need an email/passwd to register.




On Tue, 2011-05-24 at 08:53 -0700, Howard Lewis Ship wrote:
 How far do you have to get into it to see the T5 part ... or are you
 just using tapestry-ioc for back end processing?  Just curious.
 
 On Tue, May 24, 2011 at 7:34 AM, Joel Halbert j...@su3analytics.com wrote:
  Hi Folks,
 
  We've just released (another) Tapestry5 based site!
 
  www.bookmarkerpro.com
 
  This one's a bookmarking app, as the name suggests.
 
  Features include:
 
  * Search the content of your bookmarks: page content, title  url
  * Monitor your bookmarked pages, or even just part(s) of each page
  * Alerts (including optional email) when content you are monitoring
  changes
  * Import bookmarks from your browser. Export at any time.
  * One click search of your bookmarks from your browsers
  * Page archival and page change history
 
  We'll also be integrating with Readability in the near future, for
  sending bookmarked pages to kindle/ipad/iphone for offline viewing.
 
  The front end is wordpress (yawn) buy the back-end is all T5 (yay!)
  goodness .
 
  If you'd like to try it out you can sign up in less than 10 seconds, all
  you need is an email/password. We'd love to get your feedback.
  http://www.bookmarkerpro.com/beta-trial
 
  Once again, thanks to everyone on the mailing list for any help, and to
  the core T5 developers!
 
  Joel
 
  (p.s. Thiago - should be OK in Opera too, but let me know if not!)
 
 
 
 



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



Re: Live class reloading very slow

2011-05-24 Thread Joel Halbert
Hi Davor,

I use a similar spec. Should take a second or two.

- Joel

On Tue, 2011-05-24 at 18:10 +0200, Davor Hrg wrote:
 ok,
 
 we are on 5.2.4 now,
 I am running it from eclipse using run-jetty-run 1.1.1
 I'll try newer jetty plugin 1.2.2.1
 
 how long should I expect a page reload to last for:
  - page
  - editing component inside
- two forms in the component
- maybe 20 form fields total
 
 Quad core  intel Core i7
 4GB RAM
 
 Davor Hrg
 
 On Tue, May 24, 2011 at 5:50 PM, Howard Lewis Ship hls...@gmail.com wrote:
 
  For me as well, instantaneous under Jetty.
 
  5.2.5 adds field write-behind when in development mode, to assist
  with debugging.  This is also present in 5.3.
 
  There is a switch to use the page pool, please chck the documentation
  (configuration page).
 
  On Tue, May 24, 2011 at 8:37 AM, Davor Hrg hrgda...@gmail.com wrote:
   Hi,
  
   I may be wrong but since T5  5.2+
   live class reloading is much slower.
  
   I remember it being faster before 
   for a page with maybe 10-20 components
   reload lasts for 5-10 seconds.
  
   it becomes worse with each component added.
  
   This is far from productive and far from advertised by the framework.
   It feels like going back to stone age of JSP and restarting whole server
  for
   simple change.
  
   We have been using tapestry since the beginning of T5, and a bit T4,
   I could swear it was not this horribly slow before.
  
  
   Another thing is the new handling of variables and page pool.
   it is awful for debugging... is there a switch to use old page pool ?
  
   Davor Hrg
  
 
 
 
  --
  Howard M. Lewis Ship
 
  Creator of Apache Tapestry
 
  The source for Tapestry training, mentoring and support. Contact me to
  learn how I can get you up and productive in Tapestry fast!
 
  (971) 678-5210
  http://howardlewisship.com
 
  -
  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



page automatically scrolling to component on load

2011-05-21 Thread Joel Halbert
Hi,

We've got a upload file form using the Upload component:

  t:form
 t:errors/
 input t:type=upload t:id=file t:validate=required/
 input type=submit value=Import/
  /t:form

This is all located towards the bottom of the page and I've noticed that
when the page first loads it scrolls down to this field, in all
browsers.

Could this be  because it's trying to render an error message, even
though there is none?

- Joel


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



Re: page automatically scrolling to component on load

2011-05-21 Thread Joel Halbert
Worked a treat, thanks.

On Sat, 2011-05-21 at 09:13 -0400, Bryan Lewis wrote:
 Tapestry automatically puts the focus into the first field of the page
 unless you tell it not to.  Try adding the 'autofocus' attribute to the form
 declaration:
 
 t:form  ...  autofocus=false
 
 
 On Sat, May 21, 2011 at 5:53 AM, Joel Halbert j...@su3analytics.com wrote:
 
  Hi,
 
  We've got a upload file form using the Upload component:
 
   t:form
  t:errors/
  input t:type=upload t:id=file t:validate=required/
  input type=submit value=Import/
   /t:form
 
  This is all located towards the bottom of the page and I've noticed that
  when the page first loads it scrolls down to this field, in all
  browsers.
 
  Could this be  because it's trying to render an error message, even
  though there is none?
 
  - Joel
 
 
  -
  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



New Tapestry website - webalertpro.com

2011-04-28 Thread Joel Halbert
Hi Folks,

Is anyone in charge of vetoing/adding websites to the the Tapestry
Applications page?
 
http://tapestry.apache.org/applications.html

We'd be honoured to join the roll call of websites with our latest
Tapestry based product, WebAlertPro

The front of house is actually wordpress:
http://www.webalertpro.com 

But the meat of the site is all in Tapestry:
http://app.webalertpro.com

Comments, feedback and willing beta users are all welcome!

And - thanks to everyone on the Tapestry mailing list for helping us out
when we were in trouble! 

Regards,
Joel




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



Re: The right way to manually update a zone in tapestry

2011-04-05 Thread Joel Halbert
OK figured it out...

Trick is to use the ZoneManager for the zone id (see Tapestry.js) :

So this ajax request, to update a zone, works, and all the tap js
callbacks on components are registered correctly


var zoneManager =  Tapestry.findZoneManagerForZone('my-zone-id');
$.get(/home.alerts:blockPath, {url:ignore_url, fullurl:fullurl,
ccid:ccid, area:ignore_isarea, title:title,block:block},
 function(responseJSON) {
   zoneManager.processReply(responseJSON);
 });


On Tue, 2011-04-05 at 14:30 +0100, Support WebAlertPro wrote:

 Hi,
 
 I am calling a Tapestry action link manually from js, it's an ajax call
 that returns a zone. I then swap out the old zone for the new zone html.
 
 This all works well, except for that fact that any Tapestry js callbacks
 that would normally be triggered when the zone loads on the page (i.e.
 if this was all done Tap via an action link zone update) are not called,
 resulting in actionlinks within the zone that do not work as expected.
 
 Is there a correct way to swap out a zone on a page manually using js,
 possibly calling one of the Tapestry.js functions?
 
 Joel




Re: dynamically changing event link context on client side using js

2011-03-29 Thread Joel Halbert
Hi Thiago,

Using this approach, if I was to invoke this ajax URL I'd have to
process the zone response myself manually. What I'd like to be able to
do is update the context or params on an event link so that  when the
clicks on it the response and corresponding zone update is automatically
taken care of.

Now, I can update the context or request params on the client side, but
it seems like these updates are ignored 

For example:

If I have an tapestry event link on the page which generates the
following html:

a id=ignore2 onclick=javascript:return Tapestry.waitForPage(event);
href=/home.alerts:ignore2mylink/a


I can update the href using js to add a request parameter:

a id=ignore2 onclick=javascript:return Tapestry.waitForPage(event);
href=/home.alerts:ignore2?param=valuemylink/a

or add a context:
a id=ignore2 onclick=javascript:return Tapestry.waitForPage(event);
href=/home.alerts:ignore2/valuemylink/a


but what is submitted to the server when the link is selected is always
the original url:

/home.alerts:ignore2

there seems to be no simple way around this?!

- Joel




On Mon, 2011-03-28 at 19:30 -0300, Thiago H. de Paula Figueiredo wrote:

 On Mon, 28 Mar 2011 19:10:00 -0300, Joel Halbert j...@su3analytics.com  
 wrote:
 
  I need a way of submitting the dynamic content back to the server as
  part of an ajax request I'm not clear how I would be able to do this in
  the manner you suggest.
 
 Define an event name, @Inject ComponentResources and use its
 createEventLink() method. It returns a Link. To get an absolute URL out of
 it, invoke its toAbsoluteURI() method. Now just pass this URL to your AJAX
 code, most probably using JavascriptSupport.addScript(). Add your data as  
 query parameters.
 




dynamically changing event link context on client side using js

2011-03-28 Thread Joel Halbert
Hi,

I have a typical ajax event link e.g. 

a t:type=eventlink t:id=ignore zone=resultsZone

I want to be able to update the context on the clientside using
javascript, dynamically.
(or alternatively attach a request parameter and have this submitted
with the link).

What's the easiest way to accomplish this?

I can modify the link to change the url to append my context (or request
parameter)  but it seems these post page-load modifications to the
anchor href are ignored when the links is submitted.

Thanks,
Joel


Re: dynamically changing event link context on client side using js

2011-03-28 Thread Joel Halbert
Hi Mark,

I need a way of submitting the dynamic content back to the server as
part of an ajax request I'm not clear how I would be able to do this in
the manner you suggest. 

- Joel

On Mon, 2011-03-28 at 15:43 -0500, Mark wrote:
 Normally the context is going to be used to figure out the state when
 the link was rendered.  This is particularly useful in a loop were you
 need to figure out which eventlink was actually clicked.  It sounds
 like you want to make the eventlink do different things based on some
 type of ajax event on another part of the page.
 
 If that is what you are trying to do, are you sure you even need to
 use an eventlink context?  Can you just have the other Ajax event
 update a persistent variable on the page and read it (instead of the
 context) when the eventlink is triggered?
 
 Mark
 
 On Mon, Mar 28, 2011 at 1:46 PM, Joel Halbert j...@su3analytics.com wrote:
  Hi,
 
  I have a typical ajax event link e.g.
 
  a t:type=eventlink t:id=ignore zone=resultsZone
 
  I want to be able to update the context on the clientside using
  javascript, dynamically.
  (or alternatively attach a request parameter and have this submitted
  with the link).
 
  What's the easiest way to accomplish this?
 
  I can modify the link to change the url to append my context (or request
  parameter)  but it seems these post page-load modifications to the
  anchor href are ignored when the links is submitted.
 
  Thanks,
  Joel
 
 
 -
 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: 10 Minute Web Application Demo

2011-02-15 Thread Joel Halbert
This is a Great Idea Mark.

However, I'm on Ubuntu 10.10 (Chromium 9.0.597.94 (73967) Ubuntu 10.10),
and the video plays but the screen it black. BUT when you pause and
restart it it suddenly plays perfectly, and I can see the video! (same
thing happens in FF 3.6.13)




On Tue, 2011-02-15 at 16:20 +0100, Vangel V. Ajanovski wrote:
 I have Ubuntu 10.10 and have lateset Adobe Flash 10.2.152.27 in Firefox 
 nightly beta.
 I can see the static preview but once I click play I have no video - 
 static black, and HAVE audio.
 
 Flash demo on http://www.adobe.com/products/flashplayer/ works without a 
 flaw.
 
 On 15.02.2011 14:06, Alex Kotchnev wrote:
  Mark,
  this probably has to do with how the flash movie is encoded but it isn't
  viewable on Linux (Fedora 12). For a reference point, I never have issues
  viewing flash movies from YouTube and such (this is probably the first time
 
 



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



Re: Discussion- the verdict

2011-01-13 Thread Joel Halbert
Yes, it's a pity that someone might be put off using the framework
because of vocal, and misinformed minority. 

There's really no substitute for trying something yourself...

On Wed, 2011-01-12 at 09:50 -0200, Thiago H. de Paula Figueiredo wrote:
 On Wed, 12 Jan 2011 08:53:41 -0200, George Banus georgeba...@gmail.com  
 wrote:
 
  Hi Guys,
 
 Hi!
 
  So, I'm sorry I have to say that I'm saving my time and effort in  
  learning Tapestry for something else. This is my decision for now,  
  though I might
  change it in 3 or 4 years time after I notice some stability and
  consistencies in Tapestry releases.
 
 Please check the stability and consistency of all releases since Tapestry  
 5.1, the first T5 stable release.
 And don't believe everything you read on in the Internet. ;)
 



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



Re: Opportunity for some PR?

2011-01-11 Thread Joel Halbert
+1


On Mon, 2011-01-10 at 11:36 -0800, Josh Canfield wrote:
 I love working in Tapestry and there is some truth in what the person
 has to say. I believe in the Tapestry5 framework but I also know there
 is a long way we need to go to distance ourselves from the pain that
 people experienced when Tap3/4 stopped getting Howard's attention.
 
 The choice of calling the framework Tapestry 5 came with it's
 benefits and it's harm. Obviously people know the name Tapestry
 because it's been around for a long time. But with that longevity
 brings a host of people with a bad experience in any previous version
 who can denigrate the current framework armed with all the ammo of
 past mistakes.
 
 The recent documentation effort has been amazing. If you can't write
 (me) and you want to help push the project forward, maybe we can get
 an effort going to clean up the defect database? I'd like to work on
 the issues that will help the most people. Picking what to work on
 next can be a challenge so, please vote up issues in the defect system
 that you care about, they will get more attention. Add comments to
 defects that give helpful information about how you are experiencing
 the defect, what you are trying to do and what is happening especially
 if it's different from the submitter. The less time any of the
 committers have to spend figuring out what the defect means or how to
 reproduce the more time can be spent making appropriate changes :)
 
 Anyway, here's to continuing to build out a solid framework that best
 suits our mental model, even if some portion of population never gets
 it!
 
 Josh
 
 On Mon, Jan 10, 2011 at 10:02 AM, Thiago H. de Paula Figueiredo
 thiag...@gmail.com wrote:
  On Mon, 10 Jan 2011 14:46:58 -0200, jackkuros...@w9z.org wrote:
 
  Just posted:
 
  http://stackoverflow.com/questions/4638851/what-java-web-application-framework-to-use
 
  If you look at the things tagged Tapestry there are quite a few
  opportunities to help clear up some misconceptions about Tapestry.  It 
  looks
  like there are two people who heavily use the StackOverFlow to spread
  mis-information about the framework. SO could benefit from some more voices
  and votes from people who are actually using Tapestry.
 
  http://stackoverflow.com/questions/tagged/tapestry
 
  And there's this:
  http://stackoverflow.com/questions/1303438/why-did-you-stop-using-tapestry.
  What about downvoting the first answer? It's mostly about Tapestry 4 and he
  calls Howard a liar. Classy. I wrote an answer to it. It's the third most
  voted one until now, but with way less votes than the first.
 
  --
  Thiago H. de Paula Figueiredo
  Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and
  instructor
  Owner, Ars Machina Tecnologia da Informação Ltda.
  http://www.arsmachina.com.br
 
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
 
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
 



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



Re: tapestry ioc

2011-01-07 Thread Joel Halbert
Actually - it all stemmed from me just wanting to exclude the
SpringModule when using the tapx templating library for sending html
emails! 

Since that's a standalone app that just uses tapx  tap-ioc (no web
component) it just got me thinking about using Tap-IOC for my other
standalone, non Tapestry5 web based, projects (hence all the questons!).


On Thu, 2011-01-06 at 15:23 -0800, Josh Canfield wrote:
  Again, it doesn't seem right to have to consider what are effectively 
  runtime deployment configuration options when building an application into 
  a jar.
 
 This is funny because I thought that is exactly what you are trying to
 do. If you are going to exclude modules from a deployment but don't
 want to do it from system properties, then you must be creating an app
 module that uses your multi-module jar? If that's the case then you
 can define your dependencies using the @SubModule annotation on your
 deployed AppModule. If all of your included modules also define their
 dependencies this way then you don't have to worry about extra's
 getting loaded, just don't use the Manifest auto-loading.
 
 I prefer this method because it also documents your dependencies.
 
 If you are putting third party modules that use the auto-loading into
 your classpath... then just don't do that.
 
 Josh
 
 
 
 On Thu, Jan 6, 2011 at 8:37 AM, Joel Halbert j...@su3analytics.com wrote:
 
- if you have lots of modules, which a client may want to selectively
enable, do not declare them in the manifest, but instead let the client
use the tapestry.modules sys property to selectively enabl
 
  But that's sort of my point - configuring IOC via a system property doesn't 
  seem right, especially if all I wanted to do was disable 1 of many services.
 
 
 
   This looks like a huge JAR. Why not break it in smaller, more manageable
   ones?
 
  Again, it doesn't seem right to have to consider what are effectively 
  runtime deployment configuration options when building an application into 
  a jar.
 
 
 
 
  On Thu, 2011-01-06 at 14:15 -0200, Thiago H. de Paula Figueiredo wrote:
  On Thu, 06 Jan 2011 14:09:02 -0200, Joel Halbert j...@su3analytics.com
  wrote:
 
   So if I understand correctly:
  
   - the only way to disable modules that are specified in the manifest is
   to remove the jar from the classpath
 
  Wrong. See
  http://tapestry.1045711.n5.nabble.com/T5-disable-loading-specified-module-td2431110.html
 
   - if you have lots of modules, which a client may want to selectively
   enable, do not declare them in the manifest, but instead let the client
   use the tapestry.modules sys property to selectively enable them
 
  This looks like a huge JAR. Why not break it in smaller, more manageable
  ones?
  You can also use @SubModule in a module class to include other modules
  automatically without using system properties or context parameters.
 
 
 
 
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
 
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
 



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



Re: tapestry ioc

2011-01-07 Thread Joel Halbert

 I haven't used this library yet, so I don't know if it needs
 SpringModule  
 or not. I guess it does, as Howard wrotes it and SpringModule is
 there.  
 But that's just a guess. :)

No, it doesn't use it, it just happened to be in my classpath.


On Fri, 2011-01-07 at 09:08 -0200, Thiago H. de Paula Figueiredo wrote:
 On Fri, 07 Jan 2011 07:46:39 -0200, Joel Halbert j...@su3analytics.com  
 wrote:
 
  Actually - it all stemmed from me just wanting to exclude the
  SpringModule when using the tapx templating library for sending html
  emails!
 
 I haven't used this library yet, so I don't know if it needs SpringModule  
 or not. I guess it does, as Howard wrotes it and SpringModule is there.  
 But that's just a guess. :)
 
  Since that's a standalone app that just uses tapx  tap-ioc (no web
  component) it just got me thinking about using Tap-IOC for my other
  standalone, non Tapestry5 web based, projects (hence all the questons!).
 
 I use Tapestry-IoC for non-web projects too. :)
 



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



tapestry ioc

2011-01-06 Thread Joel Halbert
As I understand it Tapestry-IOC will autoload any modules that it finds.

http://tapestry.apache.org/autoloading-modules.html


Is there a way to explicitly disable the loading of certain modules,
other than removing the jar in which the module is packaged from the
classpath?


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



Re: tapestry ioc

2011-01-06 Thread Joel Halbert

 why cant you take the jar from the classpath?

This is what I have done, but it strikes me as quite a blunt instrument
to use for configuring an application. Does it really mean you need a
jar per service, if the user of the jar might want to selectively enable
some of the services but not others?
 


On Thu, 2011-01-06 at 06:56 -0800, Josh Canfield wrote:
 That quote doesn't help because its in the manifest of the jar you want to
 exclude... why cant you take the jar from the classpath?
 On Jan 6, 2011 6:53 AM, Josh Canfield joshcanfi...@gmail.com wrote:
  From the link; Module autoloading isn't 100% free ... you must tell
  Tapestry IoC where the modules to load are located, which can be done via
 a
  Manifest file entry, or via an annotation.
 
  I don't believe being in the classpath is enough. I'm not sure there is a
  way to prevent a dependent module from loading.
  On Jan 6, 2011 3:54 AM, Joel Halbert j...@su3analytics.com wrote:
  As I understand it Tapestry-IOC will autoload any modules that it finds.
 
  http://tapestry.apache.org/autoloading-modules.html
 
 
  Is there a way to explicitly disable the loading of certain modules,
  other than removing the jar in which the module is packaged from the
  classpath?
 
 
  -
  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: tapestry ioc

2011-01-06 Thread Joel Halbert
So if I understand correctly:

- the only way to disable modules that are specified in the manifest is
to remove the jar from the classpath

- if you have lots of modules, which a client may want to selectively
enable, do not declare them in the manifest, but instead let the client
use the tapestry.modules sys property to selectively enable them


These both seem like pretty blunt options, and would discourage me from
using tap-ioc as a standalone framework for runtime configuration.




On Thu, 2011-01-06 at 07:46 -0800, Josh Canfield wrote:
 If you provide a jar with 100 modules that can be enabled/disabled
 then don't provide the manifest entry and resort to providing modules
 via tapestry.modules system property...
 
  Searching the mailing list archives I've found this thread with a solution
  for disabling the autoloading of given modules:
  http://tapestry.1045711.n5.nabble.com/T5-disable-loading-specified-module-td2431110.html
 
 This solution doesn't look like it will work in the current codebase.
 If you disable default modules (via the MANIFEST) you are also
 disabling tapestry.modules (see line 138 of TapestryAppInitializer and
 line 80 of IOCUtilities). That seems like a defect to me, and probably
 got in as part of a refactoring.
 
 There is a context parameter that you can use to add modules after
 you've disabled auto loading. tapestry.MODE-modules, where mode is
 defined by the system property tapestry.execution-mode (defaults to
 production)
 
 I don't think I've ever seen this documented, or felt the need to use it.
 
 Josh
 
 
 On Thu, Jan 6, 2011 at 7:23 AM, Thiago H. de Paula Figueiredo
 thiag...@gmail.com wrote:
  On Thu, 06 Jan 2011 13:07:34 -0200, Joel Halbert j...@su3analytics.com
  wrote:
 
  why cant you take the jar from the classpath?
 
  This is what I have done, but it strikes me as quite a blunt instrument
  to use for configuring an application. Does it really mean you need a
  jar per service, if the user of the jar might want to selectively enable
  some of the services but not others?
 
  One JAR can have as many modules as you want, so you don't need one JAR per
  service. And Tapestry-IoC doesn't offer any way of selectively enable or
  disable services provided by a module. IMHO I don't miss this feature at
  all.
 
  Searching the mailing list archives I've found this thread with a solution
  for disabling the autoloading of given modules:
  http://tapestry.1045711.n5.nabble.com/T5-disable-loading-specified-module-td2431110.html
 
  --
  Thiago H. de Paula Figueiredo
  Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and
  instructor
  Owner, Ars Machina Tecnologia da Informação Ltda.
  http://www.arsmachina.com.br
 
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
 
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
 



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



Re: tapestry ioc

2011-01-06 Thread Joel Halbert

   - if you have lots of modules, which a client may want to selectively
   enable, do not declare them in the manifest, but instead let the client
   use the tapestry.modules sys property to selectively enabl

But that's sort of my point - configuring IOC via a system property doesn't 
seem right, especially if all I wanted to do was disable 1 of many services.



  This looks like a huge JAR. Why not break it in smaller, more manageable  
  ones?

Again, it doesn't seem right to have to consider what are effectively runtime 
deployment configuration options when building an application into a jar.




On Thu, 2011-01-06 at 14:15 -0200, Thiago H. de Paula Figueiredo wrote:
 On Thu, 06 Jan 2011 14:09:02 -0200, Joel Halbert j...@su3analytics.com  
 wrote:
 
  So if I understand correctly:
 
  - the only way to disable modules that are specified in the manifest is
  to remove the jar from the classpath
 
 Wrong. See  
 http://tapestry.1045711.n5.nabble.com/T5-disable-loading-specified-module-td2431110.html
 
  - if you have lots of modules, which a client may want to selectively
  enable, do not declare them in the manifest, but instead let the client
  use the tapestry.modules sys property to selectively enable them
 
 This looks like a huge JAR. Why not break it in smaller, more manageable  
 ones?
 You can also use @SubModule in a module class to include other modules  
 automatically without using system properties or context parameters.
 



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



Re: No service implements the interface org.springframework.context.ApplicationContext.

2011-01-05 Thread Joel Halbert
I've managed to get a little further with this by defining a service
builder method for ApplicationContext in:

com.howardlewisship.tapx.templating.services.TemplateModule

like this:

public static ApplicationContext build() {
TapestryApplicationContext tac = new TapestryApplicationContext();
tac.refresh();
return tac;
}

which fixes the original exception in my previous email, but introduces
a new set of exceptions, as I'm obviously not correctly wiring up the
TapestryApplicationContext service.

Caused by: java.lang.NullPointerException
at 
org.apache.tapestry5.spring.TapestryApplicationContext.createBeanFactory(TapestryApplicationContext.java:34)
at 
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:121)

Any idea how to wire up TapestryApplicationContext properly?

Also - why is it trying to initialise a Spring ApplicationContext service? 
Surely the tapx examples just use Tap IOC, where did the dependency on Spring's 
ApplicationContext come from?

J


On Tue, 2011-01-04 at 14:15 +, Joel Halbert wrote:
 Hi  Happy New Year,
 
 I'm trying to replicate the following example, to generate an HTML email
 using the tapestry tapx Template extension.
 
 https://github.com/hlship/tapx/blob/master/tapx-templating/src/test/java/com/howardlewisship/tapx/templating/integration/SendMail.java
 
 When I run the example I get the following error:
 
 
 Caused by: java.lang.RuntimeException: No service implements the interface 
 org.springframework.context.ApplicationContext.
   at 
 org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:560)
   at 
 org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:44)
 
 
 All the tapestry-* jars, including tapestry-spring-5.1.05.jar are in my 
 classpath. Any clues as to what I'm missing?
 
 Thanks,
 Joel
 
 
 -
 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: No service implements the interface org.springframework.context.ApplicationContext.

2011-01-05 Thread Joel Halbert
OK, figured it out. I didn't realise that TapIOC loads ANY modules that
it finds (in the classpath).

Removing the tapestry-spring.jar fixed the problem.

Is there a way to explicitly prevent TapIOC loading a module, so that I
can continue to have SpringModule on the classpath, but without it being
loaded?



On Wed, 2011-01-05 at 11:31 +, Joel Halbert wrote:
 I've managed to get a little further with this by defining a service
 builder method for ApplicationContext in:
 
 com.howardlewisship.tapx.templating.services.TemplateModule
 
 like this:
 
 public static ApplicationContext build() {
   TapestryApplicationContext tac = new TapestryApplicationContext();
   tac.refresh();
   return tac;
 }
 
 which fixes the original exception in my previous email, but introduces
 a new set of exceptions, as I'm obviously not correctly wiring up the
 TapestryApplicationContext service.
 
 Caused by: java.lang.NullPointerException
   at 
 org.apache.tapestry5.spring.TapestryApplicationContext.createBeanFactory(TapestryApplicationContext.java:34)
   at 
 org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:121)
 
 Any idea how to wire up TapestryApplicationContext properly?
 
 Also - why is it trying to initialise a Spring ApplicationContext service? 
 Surely the tapx examples just use Tap IOC, where did the dependency on 
 Spring's ApplicationContext come from?
 
 J
 
 
 On Tue, 2011-01-04 at 14:15 +, Joel Halbert wrote:
  Hi  Happy New Year,
  
  I'm trying to replicate the following example, to generate an HTML email
  using the tapestry tapx Template extension.
  
  https://github.com/hlship/tapx/blob/master/tapx-templating/src/test/java/com/howardlewisship/tapx/templating/integration/SendMail.java
  
  When I run the example I get the following error:
  
  
  Caused by: java.lang.RuntimeException: No service implements the interface 
  org.springframework.context.ApplicationContext.
  at 
  org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:560)
  at 
  org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:44)
  
  
  All the tapestry-* jars, including tapestry-spring-5.1.05.jar are in my 
  classpath. Any clues as to what I'm missing?
  
  Thanks,
  Joel
  
  
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
  
 
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
 



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



No service implements the interface org.springframework.context.ApplicationContext.

2011-01-04 Thread Joel Halbert
Hi  Happy New Year,

I'm trying to replicate the following example, to generate an HTML email
using the tapestry tapx Template extension.

https://github.com/hlship/tapx/blob/master/tapx-templating/src/test/java/com/howardlewisship/tapx/templating/integration/SendMail.java

When I run the example I get the following error:


Caused by: java.lang.RuntimeException: No service implements the interface 
org.springframework.context.ApplicationContext.
at 
org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:560)
at 
org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:44)


All the tapestry-* jars, including tapestry-spring-5.1.05.jar are in my 
classpath. Any clues as to what I'm missing?

Thanks,
Joel


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



Re: It's payback time!

2010-12-18 Thread Joel Halbert
done.

On Sat, 2010-12-18 at 13:00 +0100, Christian Riedel wrote:
 I voted for you :-)
  
 
 
 Am 18.12.2010 um 12:44 schrieb Antonio Fernández:
 
  
  Hi Howard !
  
  My short comment is already posted. ;-)
  
  
  Best Regards,
  Antonio
  
  
  El 17/12/2010 23:39, Howard Lewis Ship escribió:
  As you are all aware, Tapestry is an open source project, a labor of love
  for the committers. The Tapestry committers and contributors work quite 
  hard
  to create the code, fix the bugs, add new features, write documentation, 
  and
  provide free support on the mailing list. It's not easy, and you'd be 
  amazed
  at just how much work it can be.
  
  What we ask in return is simple: a little bit of support in exchange for 
  our
  efforts.
  
  That can take many forms; one opportunity is right here on JavaLobby in a
  thread discussing the new 5.2 release:
  
  http://java.dzone.com/articles/announcing-tapestry-52
  
  If you value Tapestry and the vast amount of time and effort the Tapestry
  team has provided to you, then you should take a few minutes to write a
  short comment in the discussion thread about why you like Tapestry. Please
  try to do so briefly, concretely, and without bashing other frameworks. 
  Good
  grammar helps as well
  
  
  
  -- 
  Antonio Miguel Fernández Rodríguez
  Jaraxa Software, SL
  Software analyst
  www.jaraxa.com
  
  
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
  
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
 



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



Re: Customising T5 URL Encoding

2010-06-20 Thread Joel Halbert
Makes sense. I must admit I was curious as to why T5 uses custom 
encoding, so thanks for the explanation.


I'll use Nicolas's solution to override this behaviour.

On 19/06/10 01:20, Howard Lewis Ship wrote:

Tapestry does its own encoding because Jetty and Tomcat differ on
whether you get the decoded or raw strings.  Creating another option,
that would work the same across servlet containers, seemed to make
sense at the time.

On Fri, Jun 18, 2010 at 8:50 AM, Nicolas Bouillonnico...@bouil.org  wrote:
   

Hi,

Here is how i've overrided this behavior, to allow URL with %20 or other
chars as incomming request. It quite a copy/paste tweaking of the original
UrlEncoderImpl from Tapestry 5.1.0.5.

public class AppModule {
.
public static void contributeServiceOverride(
MappedConfigurationClass, Object  configuration) {
configuration.add(URLEncoder.class, new MyURLEncoderImpl());
}
.
}


package org.bouil.tapestry.services;

import java.io.UnsupportedEncodingException;
import java.util.BitSet;

import org.apache.tapestry5.ioc.internal.util.Defense;
import org.apache.tapestry5.services.URLEncoder;

public class MyURLEncoderImpl implements URLEncoder {
static final String ENCODED_NULL = $N;
static final String ENCODED_BLANK = $B;

/**
 * Bit set indicating which character are safe to pass through (when
 * encoding or decoding) as-is. All other characters are encoded as a
kind
 * of unicode escape.
 */
private final BitSet safeForInput = new BitSet(128);
private final BitSet safeForOutput = new BitSet(128);

{

markSafeForInput(aàâäbcçĉdeéèêëfgĝhĥiïîjĵklmnoôöpqrsŝtuùûüvwxyzæœ);

markSafeForInput(AÀÂÄBCÇĈDEÉÈÊËFGĜHĤIÏÎĤJĴKLMNOÔÖPQRSŜTUÙÛÜVWXYZÆŒ);
markSafeForInput(01234567890-_.:,');

markSafeForOuput(abcdefghijklmnopqrstuvwxyz);
markSafeForOuput(ABCDEFGHIJKLMNOPQRSTUVWXYZ);
markSafeForOuput(01234567890-_.:,');
}

private void markSafeForInput(String s) {
for (char ch : s.toCharArray()) {
safeForInput.set(ch);
}
}

private void markSafeForOuput(String s) {
for (char ch : s.toCharArray()) {
safeForOutput.set(ch);
}
}

public String encode(String input) {
if (input == null)
return ENCODED_NULL;

if (input.equals())
return ENCODED_BLANK;

boolean dirty = false;

int length = input.length();

StringBuilder output = new StringBuilder(length * 2);

for (int i = 0; i  length; i++) {
char ch = input.charAt(i);

if (ch == '$') {
output.append($$);
dirty = true;
continue;
}

int chAsInt = ch;

if (safeForOutput.get(chAsInt)) {
output.append(ch);
continue;
}

try {
return  java.net.URLEncoder.encode(new String(input),
UTF-8);
} catch (UnsupportedEncodingException e) {
throw new IllegalArgumentException(e);
}
// output.append(String.format($%04x, chAsInt));
// dirty = true;
}

return dirty ? output.toString() : input;
}

public String decode(String input) {
Defense.notNull(input, input);

if (input.equals(ENCODED_NULL))
return null;

if (input.equals(ENCODED_BLANK))
return ;

boolean dirty = false;

int length = input.length();

StringBuilder output = new StringBuilder(length * 2);

for (int i = 0; i  length; i++) {
char ch = input.charAt(i);

if (ch == '$') {
dirty = true;

if (i + 1  length  input.charAt(i + 1) == '$') {
output.append('$');
i++;

dirty = true;
continue;
}

if (i + 4  length) {
String hex = input.substring(i + 1, i + 5);

try {
int unicode = Integer.parseInt(hex, 16);

output.append((char) unicode);
i += 4;
dirty = true;
continue;
} catch (NumberFormatException ex) {
// Ignore.
}
}

throw new IllegalArgumentException(
String
.format(
Input string '%s' is not valid;
the '$' character at position %d should be followed by another '$' or a
four digit hex number (a unicode value).,
input, i + 1));
}

if (!safeForInput.get(ch)) {
throw new IllegalArgumentException(
String

Re: Page Navigation - Link vs Page when appending a query string to the result

2010-06-20 Thread Joel Halbert
Thanks, I was curious as to whether I could do what I need using Page, 
but in the meantime can get around it using Link.


On 18/06/10 18:02, Howard Lewis Ship wrote:

Currently, there isn't a good way to do what you want. I just hit a
similar problem for my client and am deciding on the right solution; I
think another callback event, much like passivate, but passed the Link
so it can be customized.

See https://issues.apache.org/jira/browse/TAP5-1190

On Fri, Jun 18, 2010 at 8:30 AM, Joel Halbertj...@su3analytics.com  wrote:
   

I want to return the user to a page that has a context and some query
params:

I can do this, using Link:

public Object onSubmit(){
Link link = ls.createPageRenderLinkWithContext(Buy.class, product);
link.addParameter(x, x);
link.addParameter(y, y);
return link;
}

Directs the user to;
http://localhost:8080/web/buy/product?x=1y=2

I want to know if I can easily do the same using Page:

@InjectPage
private Buy buy;
public Object onSubmit() {
buy.setProduct(product)
return buy;
}

And in Buy have an onPassivate to get the correct context
Buy {
String onPassivate90{return product}
}

Whch gets me the URL:
http://localhost:8080/web/buy/product

But what's the easiest way of then tacking on the query string I want?

 



   



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



t:loop - callbak before each iteration?

2010-06-20 Thread Joel Halbert

Hi,

When using t:loop is there a method we can declare on the component that 
Tapestry will call before each iteration ?

or is there another way to do this

Joel


Re: Customising T5 URL Encoding

2010-06-20 Thread Joel Halbert

Agreed, it would be good to have this as a configuration option.

On 20/06/10 19:20, Kai Weber wrote:

* Nicolas Bouillonnico...@bouil.org:

   

The Tapestry URL encoding is not a problem for me in general, just for one
use case when i wanted to migrate a site to tapestry and keeping the same
URL (with accents, spaces, dashes, underscores and so on).
 

It is a problem if you get called by other webapps. If they call your
page with the standard URL encoding scheme you have a problem.  Say you
have

onActivate(String emailadress)

no one can call your page because the expected encoding for @ in T5 is
$0040 where the rest of the world would send you an @.

We use only query strings or numerical IDs as parameters for pages which
can get called from external sites.

I would like to see configuration option to switch or disable the
URLEncoder completly.

Kai

-
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



URL encoding issue

2010-06-18 Thread Joel Halbert

Hi Folks,

I have an onSubmit from which i return a URL, which all works fine, 
unless I have a path fragment with certain characters, such a spaces.


So If I return a URL such as:

http://localhost:8080/web/buy/sports tops

I get:


Input string 'sports tops' is not valid; the character ' ' at position 7 
is not valid.

From:
org.apache.tapestry5.internal.services.URLEncoderImpl.decode(URLEncoderImpl.java:143) 




More suprisingly, If I URL encode the path using either + or %20 for 
spaces I get pretty the same e.g.:
Input string 'sports+tops' is not valid; the character '+' at position 7 
is not valid.

From:
org.apache.tapestry5.internal.services.URLEncoderImpl.decode(URLEncoderImpl.java:143) 




Any clues here? I'm using 5.1.0.5
Thx
Joel


Re: URL encoding issue

2010-06-18 Thread Joel Halbert
As far as I understand though, I *could* return a URL, this is perfectly 
valid no?

So I'm kind of curious as to why it doesn't work


On 18/06/10 15:58, Christophe Cordenier wrote:

Hi

You'd better return a Link built via the LinkSource service. So Tapestry
encode the event/page context for you.

2010/6/18 Joel Halbertj...@su3analytics.com

   

Hi Folks,

I have an onSubmit from which i return a URL, which all works fine, unless
I have a path fragment with certain characters, such a spaces.

So If I return a URL such as:

http://localhost:8080/web/buy/sports tops

I get:


Input string 'sports tops' is not valid; the character ' ' at position 7 is
not valid.
From:
org.apache.tapestry5.internal.services.URLEncoderImpl.decode(URLEncoderImpl.java:143)



More suprisingly, If I URL encode the path using either + or %20 for spaces
I get pretty the same e.g.:
Input string 'sports+tops' is not valid; the character '+' at position 7 is
not valid.
From:
org.apache.tapestry5.internal.services.URLEncoderImpl.decode(URLEncoderImpl.java:143)



Any clues here? I'm using 5.1.0.5
Thx
Joel

 



   



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



Page Navigation - Link vs Page when appending a query string to the result

2010-06-18 Thread Joel Halbert
I want to return the user to a page that has a context and some query 
params:


I can do this, using Link:

public Object onSubmit(){
Link link = ls.createPageRenderLinkWithContext(Buy.class, product);
link.addParameter(x, x);
link.addParameter(y, y);
return link;
}

Directs the user to;
http://localhost:8080/web/buy/product?x=1y=2

I want to know if I can easily do the same using Page:

@InjectPage
private Buy buy;
public Object onSubmit() {
buy.setProduct(product)
return buy;
}

And in Buy have an onPassivate to get the correct context
Buy {
String onPassivate90{return product}
}

Whch gets me the URL:
http://localhost:8080/web/buy/product

But what's the easiest way of then tacking on the query string I want?


AribaWeb

2009-12-01 Thread Joel Halbert
Any T5 users ever heard of AribaWeb. Any opinions of it?
http://aribaweb.org/

I'm just curious, I'd never heard of it until today.



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



Re: Add yourself to the Tapestry Users Map

2009-09-03 Thread Joel Halbert
Wow, there are a couple of people who must live in the arctic circle.


-Original Message-
From: Howard Lewis Ship hls...@gmail.com
Reply-To: Tapestry users users@tapestry.apache.org
To: Tapestry users users@tapestry.apache.org
Subject: Add yourself to the Tapestry Users Map
Date: Thu, 3 Sep 2009 10:03:57 -0700

I maintain a map of Google Map of Tapestry users:

http://maps.google.com/maps/ms?ie=UTF8hl=enmsa=0msid=106662057515738259524.0004696f8216ba268b74az=3


It's fun an informative for me, and for others, to see where the
Tapestry users are.  For instance, I can see that Germany is a real
hot-bed of Tapestry activity (a separate discussion would be why there
as opposed to elsewhere?).


Start by clicking the Edit button:


map-edit.png



Next, click the pushpin icon in the upper left corner of the map:


map-toolbar.png



Drag the push-pin to where you live:


map-drop.png



In the popup-bubble, set the Title to your name, add any extra details
you like,
and customize the push-pin icon if you like:


map-details.png





Click OK to dismiss the dialog, then click Done to save your new pushpin
on the global map:


map-done.png


-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!





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



Re: lack of committers

2009-06-22 Thread Joel Halbert
Maybe there are so few committers because everyone is so busy being
productive using this great framework to roll out loads of software? :-)
 

-Original Message-
From: Thiago H. de Paula Figueiredo thiag...@gmail.com
Reply-To: Tapestry users users@tapestry.apache.org
To: Tapestry users users@tapestry.apache.org
Subject: Re: lack of committers
Date: Mon, 22 Jun 2009 09:33:34 -0300

On Sat, Jun 20, 2009 at 9:07 AM, Ivano Lubertilube...@archicoop.it wrote:
 Howard, it seems to me that Tapestry has really few committers and is
 mainly driven by one man.
 It is a shame for a so beautiful piece of software.
 What is the reason ?
 Simply the typical  lack of funding ? Or is a more or less choice made
 by you for whatever reason.

I'm a commiter since February and wrote the URL rewriting support that
Robert Zeigler improved (thanks Robert!). Unfortunately, that's the
single contribution I've done so far (besides contributing some
Brazilian Portuguese translations).
This issue is more about open source development at large than
Tapestry-specific: a few people are paid to work on projects (I wish I
was one of them), but most work on their free time. Some projects have
companies behind them (Hibernate, Spring, JBoss, etc), some of them
quite big (IBM, Sun, etc).
We all here should thank Formos for employing Howard, so he can spend
a lot of his *work* time writing and improving Tapestry. There are
many things I want to do, but I'm too busy now to do them. I can't
speak for other committers, but I guess this happens to them too. My
bigger plans are here:
http://www.nabble.com/-VOTE--Thiago-H.-de-Paula-Figueiredo-as-Tapestry-Committer-td21917887i20.html#a22047791.



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



Re: [Tapestry Central] Why chose Tapestry?

2009-06-18 Thread Joel Halbert
 and
  Julie to share knowledge so that they can understand each other's
  code.
  Even if pairing occurs only part time, it's very effective at
  knowledge
  transfer as well as ordinary coding.
  The idea that mediocre developers should use JSF as it is more
  tolerant of errors is absurd! Tapestry 5 is designed to improve
  productivity for all developers, by streamlining, simplifying, being
  smart and being concise ... not to mention live class reloading and
  best-of-breed exception reporting, which makes it fast to identify
  and
  fix those errors.
  If your doctor tells you to eat less red meat, that doesn't mean you
  should switch to a diet of fried chicken three meals a day!
  Likewise,
  if you have concerns with code quality from your developers, you
  should
  not switch to a less agile, more code-intensive, less supportive
  development model and hope to catch all the bugs in QA. Sweeping
  problems under the rug is never a winning strategy.
  Coming down off my soap box, I should also add that Tapestry 5.1
  works
  a little bit differently than 5.0 in this respect, so it does (in
  fact)
  defer more of the page loading and validation until a link is
  actually
  clicked. This is more for performance reasons than to shield
  developers
  from application problems. Even in 5.0, the loading and validation
  was
  the reach from page A to pages explicitly referenced (usually via
  PageLink during the rendering of page A), so it's a highly unlikely
  case that a single error in a 1000 page application will keep the
  application from starting up, unless the start page of the
  application
  links to all 999 other pages.
  Re-reading the above post I can't emphasize enough: you can't ignore
  quality problems. Quality problems lead to development failures,
  schedule slips, missing functionality, low morale and high turnover.
  Saying we don't have time to fix the quality problem first is to
  ignore the the second law of Thermodynamics. You are expecting a
  miracle, literally writing it into your project plan.
  Formos addresses this issue two ways: First, we use Scrum and
  deliver
  on (typically) 4 week cycles. Thus we set real deadlines and have a
  constant check on quality (we're providing working code
  constantly). We
  don't even try to predict what we'll be doing six months or two
  years
  from now, we just deliver a steady, manageable stream of software.
  Secondly, Formos uses Tapestry because of all the reasons that the
  anonymous developer's organization rejected it, and for many, many
  more
  reasons besides.
 
  --
  Posted By Howard to Tapestry Central at 6/16/2009 03:45:00 PM
 
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org



-- 
Joel Halbert
020 3051 8637
075 2501 0825
j...@su3analytics.com
www.su3analytics.com
www.storequery.com
SU3 Analytics Ltd, The Print House, 18 Ashwin St, London E8 3DL.

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



Re: [Tapestry Central] Why chose Tapestry?

2009-06-18 Thread Joel Halbert
I hear what your saying, I'm still not convinced :-)


On Thursday 18 June 2009 09:57:11 p.stavrini...@albourne.com wrote:
 Hi Joel,

 I understand your argument with Maven, most people at some point have 'felt
 the pain' but with or without maven the devil is in the details, getting
 started is not that hard really, but customizing Tapestry to your
 environment is very often the root cause or configuration constipation, a
 problem which extends from the world of Java where there are so many
 resources, libraries and tools that it can often be a pain to integrate and
 use all of them efficiently. Its widely acknowledged that Java has inherent
 flaws in versioning and dependancy management (if only I had a penny for
 every post I have seen relating back to classpath, and library versioning
 issues), and thats the problem Maven tries to solve. In a small operation
 you can get away with doing dependency management manually, but not for
 enterprise applications or any development of scale.

 regards,
 Peter

 - Original Message -
 From: Joel Halbert j...@su3analytics.com
 To: users@tapestry.apache.org
 Sent: Thursday, 18 June, 2009 11:37:34 GMT +02:00 Athens, Beirut,
 Bucharest, Istanbul Subject: Re: [Tapestry Central] Why chose Tapestry?

 I'm still not convinced that using Maven is a good thing.
 It's fine for those people that use it day to day already, but for those
 people who have no need/interest in picking up another framework and who
 just want to get on with using Tapestry its a real bug bear.

 I've always just downloaded the binaries for whatever project I'm using and
 dropped them into my project. I very rarely have versioning issues (if
 every at all in fact). I'd go so far as to say that this is preferable -
 you know exactly what code your using, and why, because you've put it there
 yourself rather than having some opaque system under the hood doing it for
 you. This would seem to give you a greater degree of control over whats in
 your environment - important when it comes to deploying.

 On Wednesday 17 June 2009 22:15:23 Norman Franke wrote:
  I did, and that worked using jetty on the command line. Eventually,
  following the other instructions, I was able to even get that working
  in Eclipse. However, it is very basic: no hibernate, no security/
  authentication.
 
  I started following the instructions in the tutorial, which do not work.
 
  Norman Franke
  Answering Service for Directors, Inc.
  www.myasd.com
 
  On Jun 17, 2009, at 2:21 PM, Juan E. Maya wrote:
   did u follow the tapestry quickstart in
   http://tapestry.apache.org/tapestry5.1/quickstart/ ? I don't think it
   could get easier than this. U can even run it inside eclipse if u have
   the m2 plugin for maven.
  
   i do agree with u that the documentation could be better, however,
   reading your message somebody could believe that starting a new
   tapestry project is extremely difficult and it's totally the contrary.
  
   On Wed, Jun 17, 2009 at 7:21 PM, Norman Frankenor...@myasd.com
  
   wrote:
   I've been using T4/4.1 for several years and have been quite
   pleased with
   it. I've been using it with Hibernate, and while not perfect, it's
   worked
   pretty well. We've found it much faster to embed a web browser in
   our main
   app and do editing, queries and the like via Tapestry than writing
   native
   code.
  
   I have a new project to replace our aging billing system. I figured
   this
   would be a great way to learn T5. So, I'm migrating me, not an
   app. :-)
  
   I was pondering posting this, but this thread sort of pushed me
   over the
   top. Note that I don't disagree with anything Howard said. However,
   this
   almost became Why I almost dumped Tapestry entirely.
  
   I'm writing this in order to solicit feedback and maybe help
   others. I've
   been using Tomcat (now 6.0.20) and Eclipse (now 3.4.2) for quite
   time time,
   and I'm very productive developing use them (and T4.1) I think this
   is a
   pretty common development environment.
  
   To get started in T5 for a fresh new app, my first thought was to
   follow the
   tutorial at http://tapestry.apache.org/tapestry5.1/tutorial1/.
  
   Chapter 2 just plain didn't work for me. I think part of it is due
   to Maven
   generally being extremely fragile and working less than half of the
   time.
   However, even after working around that, you can't just import the
   project
   into Eclipse. At least not under Eclipse 3.4.2.
  
   No problem, I thought. Maven is annoying anyway. I'll just create a
   Dynamic
   Web project (like I do for T4.1) and download the T5.1 binary
   distribution.
   That's even worse. It comes with no README listing dependencies or
   anything
   useful, and includes tons of libraries that don't appear to be even
   needed.
   Tapestry failed to start up during initialization. Why have a
   binary distro
   that doesn't work?
  
   Back to Maven. After some googling, I found this article:
   http

Re: [Tapestry Central] Why chose Tapestry?

2009-06-18 Thread Joel Halbert
. This is more for performance reasons than to shield developers
  from application problems. Even in 5.0, the loading and validation was
  the reach from page A to pages explicitly referenced (usually via
  PageLink during the rendering of page A), so it's a highly unlikely
  case that a single error in a 1000 page application will keep the
  application from starting up, unless the start page of the application
  links to all 999 other pages.
  Re-reading the above post I can't emphasize enough: you can't ignore
  quality problems. Quality problems lead to development failures,
  schedule slips, missing functionality, low morale and high turnover.
  Saying we don't have time to fix the quality problem first is to
  ignore the the second law of Thermodynamics. You are expecting a
  miracle, literally writing it into your project plan.
  Formos addresses this issue two ways: First, we use Scrum and deliver
  on (typically) 4 week cycles. Thus we set real deadlines and have a
  constant check on quality (we're providing working code constantly). We
  don't even try to predict what we'll be doing six months or two years
  from now, we just deliver a steady, manageable stream of software.
  Secondly, Formos uses Tapestry because of all the reasons that the
  anonymous developer's organization rejected it, and for many, many more
  reasons besides.
 
  --
  Posted By Howard to Tapestry Central at 6/16/2009 03:45:00 PM



-- 
Joel Halbert
020 3051 8637
075 2501 0825
j...@su3analytics.com
www.su3analytics.com
www.storequery.com
SU3 Analytics Ltd, The Print House, 18 Ashwin St, London E8 3DL.

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



Re: How big is the Tapestry community?

2009-06-08 Thread Joel Halbert
this is probably a better proxy:

http://www.google.com/trends?q=java+tapestry+%2C+java+struts%2C+ruby
+rails+ctab=0geo=alldate=allsort=0

-Original Message-
From: Joel Halbert j...@su3analytics.com
Reply-To: Tapestry users users@tapestry.apache.org
To: Tapestry users users@tapestry.apache.org
Subject: Re: How big is the Tapestry community?
Date: Mon, 08 Jun 2009 10:07:26 +0100

Google Trends is often useful as a proxy:

http://www.google.com/trends?q=tapestry%2C+ruby+on+rails%2C
+strutsctab=0geo=alldate=allsort=0

(I think that the high level of stuts usage in India is due to the
outsourced enterprise community there) 

-Original Message-
From: hari ks hari_...@yahoo.com
Reply-To: Tapestry users users@tapestry.apache.org
To: Tapestry users users@tapestry.apache.org
Subject: Re: How big is the Tapestry community?
Date: Mon, 8 Jun 2009 01:54:42 -0700 (PDT)

From indian job sites- naukri.com/timesjobs.com - one or two companies want 
tapestry developers(along with JSF knowledge). Most companies want 
jsf/struts/spring mvc/wicket(primarily JSF). 
Previously(1-2 yr back) companies like verizon telecom were asking for core 
tapestry developers in chennai.

There seems need for another book that explains tapestry 5 internals(a 1000 
page book). The book- developing web applications with tapestry doesn't 
explain tapestry internals as good as the tapestry web site links.


-Hari Sujathan
http://www.nomarriage.com 






--- On Sat, 6/6/09, Howard Lewis Ship hls...@gmail.com wrote:

 From: Howard Lewis Ship hls...@gmail.com
 Subject: How big is the Tapestry community?
 To: Tapestry users users@tapestry.apache.org
 Date: Saturday, June 6, 2009, 9:30 PM
 Here's a question: how many people
 are using Tapestry?  And how do you
 figure out how many people are using Tapestry?
 
 When asked, I answer what I think is an honest answer:
 there's
 probably 1000 - 2000 teams using Tapestry ... but mostly I
 pulled that
 number out of the air. That would be one team for every
 five copies of
 Tapestry in Action sold, but that's now an old book.
 There's at
 least an order of magnitude from Tapestry to Struts. I
 wonder how T5
 compares to SpringMVC or Grails?
 
 So, what would be YOUR estimate and YOUR methodology for
 determining
 the number of Tapestry coders out there?
 
 -- 
 Howard M. Lewis Ship
 
 Creator of Apache Tapestry
 Director of Open Source Technology at Formos
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
 
 


  

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



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



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



RE: T5: Passing named/structured-type params in URLs?

2009-05-13 Thread Joel Halbert

 I have a desire to use a context where the delimeter for one of the values is 
 itself a '/'. For example:
 
   /docs/my/path/to/doc/document1/param1/param2

Do you mean that one of the parameters is the value document/, if so will T5 
not URL encode this to the value document%2F ? (although StringValueEncoder, 
v5.0.18, does not appear to)

If it doesn't then presumably you can so that you end up with:

/docs/my/path/to/doc/document1%2F/param1/param2


I might have misunderstood what you are trying to do though.

-Original Message-
From: Alfie Kirkpatrick alfie.kirkpatr...@ioko.com
Reply-To: Tapestry users users@tapestry.apache.org
To: Tapestry users users@tapestry.apache.org
Subject: RE: T5: Passing named/structured-type params in URLs?
Date: Wed, 13 May 2009 12:53:31 +0100

I've been following this thread with interest and have a somewhat different 
requirement. I have a desire to use a context where the delimeter for one of 
the values is itself a '/'. For example:

/docs/my/path/to/doc/document1/param1/param2

I can do this by hand in a page by having onActivate(EventContext ctx) and 
iterating the elements of the path. However, what if param2 is optional? Also, 
it means I have to do this work manually on every page.

I realise that to make this work more generally I'd need to have another kind 
of separator in there, eg:

/docs/my/path/to/doc/document1/-/param1/param2

I'd might then have a signature like:

void onActivate(DocPath path, Object param1, Object param2)

and have the T5 machinery encode/decode urls accordingly.

Is this possible or am I asking too much? This is all in a drive to having nice 
looking URLs...

A simpler alternative might be to simply use a different context value 
separater, eg. '-' for apps where the context values are themselves meaningful 
paths. Is this possible? This would lead to a url like:

/docs/my/path/to/doc/document1-param1-param2

Which kind of works for me.

Thanks!
Alfie.

-Original Message-
From: Joel Halbert [mailto:j...@su3analytics.com] 
Sent: 12 May 2009 17:51
To: Tapestry users
Subject: Re: T5: Passing named/structured-type params in URLs?

Hi Andy,

The same Encoder could indeed be used across multiple pages.

Some pointers:

You need to create one of these:
http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry/ValueEncoder.html
Look at the source for one of the existing implementation for ideas, e.g. 
StringEncoder

[snip]


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



Re: Solving the T5 Documentation Dilemma

2009-05-13 Thread Joel Halbert
ditto.
-1 forum

-Original Message-
From: Christian Edward Gruber christianedwardgru...@gmail.com
Reply-To: Tapestry users users@tapestry.apache.org
To: Tapestry users users@tapestry.apache.org
Subject: Re: Solving the T5 Documentation Dilemma
Date: Wed, 13 May 2009 09:29:10 -0400

-1 on forum for the same reasons.

On 13-May-09, at 07:36 , Alfie Kirkpatrick wrote:

 -1 for a forum. I like the fact I can choose between users and users- 
 digest, and I can use nabble or markmail to browse the archive.  
 Unless the proposal is to stop the mailing list, I feel that a forum  
 will simply act to fragment discussions which are an invaluable  
 information source.

 Best regards, Alfie.

 -Original Message-
 From: liigo [mailto:com.li...@gmail.com]
 Sent: 13 May 2009 03:02
 To: Tapestry users
 Subject: Re: Solving the T5 Documentation Dilemma

 +1 for Official docs and User docs, and +1 for tapestry forum

Christian Edward Gruber
e-mail: christianedwardgru...@gmail.com
weblog: http://www.geekinasuit.com/


-
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: Passing named/structured-type params in URLs?

2009-05-12 Thread Joel Halbert
Hi Andy,

The same Encoder could indeed be used across multiple pages.

Some pointers:

You need to create one of these:
http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry/ValueEncoder.html
Look at the source for one of the existing implementation for ideas,
e.g. StringEncoder

I've attached an example implementation of a MapValueEncoder.java


You will then need to configure your Tap App to use your encoder e.g.

public static void
contributeValueEncoderSource(MappedConfigurationClass,
ValueEncoderFactory configuration)  { 
configuration.add(Map.class, new 
GenericValueEncoderFactoryMap(new
MapValueEncoder())); 
} 



You can then have activation context's that take a Map e.g.

protected boolean onActivate(Map params) {  
  id =  params.get(id);
}


I'm sure there is a doc page for encoders, although I cann't seem to dig
it out.


-Original Message-
From: Andy Buckley andy.buck...@durham.ac.uk
Reply-To: Tapestry users users@tapestry.apache.org
To: Tapestry users users@tapestry.apache.org
Subject: Re: T5: Passing named/structured-type params in URLs?
Date: Tue, 12 May 2009 16:07:06 +0100

Joel Halbert wrote:
 There was a jira feature request raised for named params some time ago:
 https://issues.apache.org/jira/browse/TAP5-264
 
 
 Andy - in the meantime, another alternative is to create a custom
 ValueEncoder for activation contexts which can encode and decode a map.
 You could then encode the map context using a scheme which uses, for
 example, underscores as delimiters, such as:
 
 /mypage/name1_value1_name2_value2
 (i.e. /mypage/context)
 
 This would allow you to access params by name from an activation
 context.
 
 This works well enough so long as you do not care about using the
 correct http request syntax for query strings
 (?name1=value1name2=value2).

I've ended up essentially doing this, but more manually via the
onActivate() method of the page. Can you point me at any documentation
on how to do this with a custom ValueEncoder as you've suggested, and
what the benefits would be of doing it that way? (e.g. would this make
it easy to use the same param value encoding scheme on multiple pages?)

Cheers,
Andy

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;

import org.apache.commons.collections.map.ListOrderedMap;
import org.apache.log4j.Logger;
import org.apache.tapestry5.ValueEncoder;

public class MapValueEncoder implements ValueEncoder {

	static final Logger log = Logger.getLogger(MapValueEncoder.class);
	
	private static final String DELIM = _;

	@Override
	public String toClient(Object value) {
		String res = ;
		IteratorString it = null;
		MapString,Object map = (MapString, Object) value;
		
		if (value instanceof ListOrderedMap) {
			ListOrderedMap lomap = (ListOrderedMap) value;
			it = lomap.keyList().iterator();
			
		} else {
			it = map.keySet().iterator();
		
		}
		
		while(it.hasNext()) {
			String key = it.next();
			Object val = map.get(key);
			if (val != null) {
if (res.length()  0) {
	res += DELIM;
}
res += key + DELIM + escapeString(val.toString());	
			}
		}
		

		return res;
	}

	@Override
	public Object toValue(String clientValue) {
		String[] tokens = clientValue.split(DELIM);
		ListOrderedMap res = new ListOrderedMap();
		boolean tokIsKey = true;
		String currKey = null;
		for (int i = 0; i  tokens.length; i++) {
			String tok = tokens[i];
			if (tokIsKey) {
currKey = tok;

			} else {
res.put(currKey, descapeString(tok));

			}
			
			tokIsKey = !tokIsKey;
		}
		
		return res;
	}
	
	public static String escapeString(String string) {
		try {
			return URLEncoder.encode(string, UTF-8);
			
		} catch (UnsupportedEncodingException e) {
			log.error(unable to encode :  + string, e);
			return ;
		}
	}

	public static String descapeString(String string) {
		try {
			return URLDecoder.decode(string, UTF-8);
		} catch (UnsupportedEncodingException e) {
			log.error(unable to descape :  + string, e);
			return ;
		}
	}
	
}


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

Re: T5: Passing named/structured-type params in URLs?

2009-05-11 Thread Joel Halbert
There was a jira feature request raised for named params some time ago:
https://issues.apache.org/jira/browse/TAP5-264


Andy - in the meantime, another alternative is to create a custom
ValueEncoder for activation contexts which can encode and decode a map.
You could then encode the map context using a scheme which uses, for
example, underscores as delimiters, such as:

/mypage/name1_value1_name2_value2
(i.e. /mypage/context)

This would allow you to access params by name from an activation
context.

This works well enough so long as you do not care about using the
correct http request syntax for query strings
(?name1=value1name2=value2).



-Original Message-
From: Carl Crowder carl.crow...@taptu.com
Reply-To: Tapestry users users@tapestry.apache.org
To: Tapestry users users@tapestry.apache.org
Subject: Re: T5: Passing named/structured-type params in URLs?
Date: Sat, 09 May 2009 12:05:28 +0100

I did actually try writing something like this a while ago. The problem 
is that you need to specify more than just the name of the parameter, 
you need to know which component it's part of.

I ended up with urls like:

/page?component1.component2.param=somevaluecomponent1.component3.param2=somevalue

So as you can see, they quickly become very large.

You could mandate that only top-level components (ie, pages) can use 
that persistence strategy, but that seems to be counter-intuitive.

I toyed with the idea of mapping those names to some smaller IDs - a 
service which simply converts p1 to component1.component2.param so 
you could have urls looking like:

/page?p1=somevaluep2=somevalue

The problem then is it's hard to work out what the params actually are 
for the user/developer. Also, how do you populate that map to start 
with? You'd have to load each page and component class at startup.

I didn't ever finish this code as I worked out how to do what I wanted 
with vanilla PageActicationContext in the end.

Robert Zeigler wrote:
 That should work.
 I think it could be interesting, though, if tapestry provided an 
 additional persistence mechanism, ala:
 
 @Persist(PersistenceConstants.QUERY_PARAMETER)
 private String p;
 
 @Persist(PersistenceConstants.QUERY_PARAMETR)
 private Integer irn;
 
 which would then take the values in p and irn and stash them in the url, 
 like:
 p=valueEncodedValueirn=valueEncodedValue
 
 Obviously this wouldn't be appropriate to use everywhere; if you're 
 concerned about users tampering with URLs, you'd want to avoid it.
 But in cases like that presented below, where you expressly want users 
 to be able to muck about with parameters, it would be useful.
 
 Note that this is similar to the current client-side persistence 
 mechanism, except that mechanism a) rolls all persisted values into a 
 single parameter and b) base64 encodes the parameter.
 
 As long as you've got the basic mechanism for doing the above, you could 
 translate it into a pretty url via url rewriting without too much 
 trouble.
 
 Thoughts?
 
 Robert
 
 On May 8, 2009, at 5/83:59 PM , Thiago H. de Paula Figueiredo wrote:
 
 Em Fri, 08 May 2009 17:39:07 -0300, Andy Buckley 
 andy.buck...@durham.ac.uk escreveu:

 So, is there a Tapestry meachnism for doing something like this? I 
 can do it right now, but I'd rather not have to fight the system. I 
 would expect Tapestry to do it a bit prettier than what I've shown, 
 maybe *something* like
 .../view/irn/12349876/d/1,2,4
 (yes, there are issues with telling what's a param name and what's a 
 value... I just mean this schematically) But right now I don't even 
 know where to start looking! Help, please!? ;)

 Just use a List as the activation context value. For each named 
 parameter one want, add the name first, the value second.
 The above URL would be constructed by Tapestry if you returned a List 
 populated like this:

 List list = new ArrayList();
 list.add(irn);
 list.add(1245569);
 list.add(d);
 list.add(1,2,4);

 Then, declare a onActivate(EventContext context) method and 
 reconstruct the pairs:

 for (int i = 0; i  context.getCount() / 2; i++) {
 String name = context.get(String.class, i * 2);
 String value = context.get(String.class, i * 2 + 1) // instead of 
 String, you could use any type here
 }

 I have not tested this code, but I guess you get the idea. ;)

 -- 
 Thiago H. de Paula Figueiredo
 Independent Java consultant, developer, and instructor
 http://www.arsmachina.com.br/thiago

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

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

Re: Solving the T5 Documentation Dilemma

2009-05-01 Thread Joel Halbert
The primary concern, at the moment, seems to be encouraging people to
contribute documentation, tutorials and examples. Making the adding,
updating and extension of docs as open (so anyone can do it) and simple
(so it is not an arduous task) is the key to this. Howard's suggestion
of using the confluence Wiki  - and taking snapshots of  docs whenever a
new release is done makes sense. I would encourage anyone to contribute,
and I'm sure that the regular reviewers will compensate for occasional
inaccuracies. Anything more cumbersome will put people off. I don't like
the idea of tying it into Maven. I for one don't use Maven, and the
perceived additional complexity may put others off experimenting  using
Tap.

-Original Message-
From: Otho taa...@googlemail.com
Reply-To: Tapestry users users@tapestry.apache.org
To: Tapestry users users@tapestry.apache.org
Subject: Re: Solving the T5 Documentation Dilemma
Date: Fri, 1 May 2009 08:43:30 +0200

I would suggest splitting the documentation.

There should be the reference documentation by the creators/commiters of the
project, whis is organized like a book covering all the different aspects of
tapestry 5 in a reference manner eg like spring or hibernate docs. These are
tied to the release version, too.

And then there should be the community docs with tutorials, howto's, recipes
and so on on a wiki. There should be a pattern in the templates which
requires or at least pushes you, to mention the version of Tapestry you are
using.

And lastly I would suggest setting up a forum. Information is more easily
organized there and searching is more convenient than wíth a mailing list
alone. I would think that the barrier of contributing to a forum is lower
than that of contributing to / asking on a mailinglist. Well, the latter can
also be seen as a feature in a way, but publicity and visibility never
really hurt IMO.

2009/4/30 Piero Sartini p...@sartini-its.com

  I don't think Tapestry's wiki, http://wiki.apache.org/tapestry, is up
  to the task.

 Confluence is available with apache as well. There is already a space
 available at http://cwiki.apache.org/TAPESTRY/ ... maybe its just a matter
 of
 adding content to it?

 Anyway.. on Tapestry360 someone would not need to sign a CLA to contribute
 to
 the documentation.

Piero

 -
 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: once-only onActivate method

2009-04-20 Thread Joel Halbert
This might help... PageLoaded ... 
http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/annotations/PageLoaded.html



-Original Message-
From: Bryan Lewis jbryanle...@gmail.com
Reply-To: Tapestry users users@tapestry.apache.org
To: users@tapestry.apache.org
Subject: once-only onActivate method
Date: Sun, 19 Apr 2009 22:18:10 -0400

I need a method that will get called exactly once when a page is first
invoked, and not again when a form in the page is submitted.  In Tapestry 4
the activateExternalPage() method was good for that.  I don't think the new
onActivate() method is a replacement, nor is the SetupRender-annotated
method.  For example, they get called when an autocomplete textfield is used
in mid-form.  How do I do this in Tap 5?  (My intent is to clear any stale
changes in my Cayenne DataContext.)

Thanks.

-- 
Joel Halbert
020 3051 8637
075 2501 0825
j...@storequery.com
www.storequery.com
SU3 Analytics Ltd, The Print House, 18 Ashwin St, London E8 3DL.


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



Re: [T5] problem with CSS in tml.

2009-04-19 Thread Joel Halbert
.ioc.services.CoercionTuple$CoercionWrapper.coerce(CoercionTuple.java:51)
at
org.apache.tapestry5.ioc.internal.services.TypeCoercerImpl.coerce(TypeCoercerImpl.java:127)
... 55 more

For example I have one page and on that page i have PageLink component with
context type long:
t:pagelink t:page=AlbumDetails t:context=currentSong.id 
${currentSong.album}
/t:pagelink
As you can see when i click on page it loads AlbumDetails with context. Now
this parameter is what is causing exceptions (i think). The page loads fine
but I cannot see any images, just colors and text is formatted as CSS. What
could be the problem?

Thanks

-- 
Joel Halbert
020 3051 8637
075 2501 0825
j...@storequery.com
www.storequery.com
SU3 Analytics Ltd, The Print House, 18 Ashwin St, London E8 3DL.


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



Re: [T5] problem with CSS in tml.

2009-04-19 Thread Joel Halbert
looks like you have a badly anchored image somewhere on your page..

Something is being generated like img src=images/bla.png /

the incorrectly rooted images path causes tap to think this resource is
page local and tries to call onActivate on the current page passing in
the images string as an argument.

Check that all your images are correctly anchored.


Coercion of images to type
java.lang.Long (via String -- Long) failed: For input string: images
org.apache.tapestry5.runtime.ComponentEventException: Exception in
method
org.goran.mstore.pages.ArtistDetails.onActivate(long) (at
ArtistDetails.java:34), parameter #1: Coercion of images to type
java.lang.Long (via String -- Long) failed: For input string: images




-Original Message-
From: Entheogen gor...@gmail.com
Reply-To: Tapestry users users@tapestry.apache.org
To: users@tapestry.apache.org
Subject: [T5] problem with CSS in tml.
Date: Sun, 19 Apr 2009 08:32:19 -0700 (PDT)

Hi, I just started learning tapestry and i'm having some trouble with CSS
integration. I added style sheet directly into tml with style/style tag
because external CSS didn't work. Anyway when I'm trying to load a page
which has a context i get some exceptions:

 [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
with uncaught exception: Exception in method
org.goran.mstore.pages.ArtistDetails.onActivate(long) (at
ArtistDetails.java:34), parameter #1: Coercion of images to type
java.lang.Long (via String -- Long) failed: For input string: images
org.apache.tapestry5.runtime.ComponentEventException: Exception in method
org.goran.mstore.pages.ArtistDetails.onActivate(long) (at
ArtistDetails.java:34), parameter #1: Coercion of images to type
java.lang.Long (via String -- Long) failed: For input string: images
at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1076)
at
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:52)
at
org.apache.tapestry5.services.TapestryModule$35.handle(TapestryModule.java:1779)
at
$PageRenderRequestHandler_120bef7fba6.handle($PageRenderRequestHandler_120bef7fba6.java)
at
$PageRenderRequestHandler_120bef7fb99.handle($PageRenderRequestHandler_120bef7fb99.java)
at
org.apache.tapestry5.internal.services.PageRenderDispatcher.process(PageRenderDispatcher.java:92)
at
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:71)
at $Dispatcher_120bef7fb9f.dispatch($Dispatcher_120bef7fb9f.java)
at $Dispatcher_120bef7fb92.dispatch($Dispatcher_120bef7fb92.java)
at
org.apache.tapestry5.services.TapestryModule$17.service(TapestryModule.java:1029)
at
org.apache.tapestry5.internal.services.LocalizationFilter.service(LocalizationFilter.java:42)
at $RequestHandler_120bef7fb93.service($RequestHandler_120bef7fb93.java)
at
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
at $RequestHandler_120bef7fb93.service($RequestHandler_120bef7fb93.java)
at
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:621)
at $RequestHandler_120bef7fb93.service($RequestHandler_120bef7fb93.java)
at
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:611)
at $RequestHandler_120bef7fb93.service($RequestHandler_120bef7fb93.java)
at
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
at $RequestHandler_120bef7fb93.service($RequestHandler_120bef7fb93.java)
at org.goran.mstore.services.AppModule$1.service(AppModule.java:85)
at $RequestFilter_120bef7fb8d.service($RequestFilter_120bef7fb8d.java)
at $RequestHandler_120bef7fb93.service($RequestHandler_120bef7fb93.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_120bef7fb93.service($RequestHandler_120bef7fb93.java)
at $RequestHandler_120bef7fb89.service($RequestHandler_120bef7fb89.java)
at
org.apache.tapestry5.services.TapestryModule$16.service(TapestryModule.java:1007)
at
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at
$HttpServletRequestFilter_120bef7fb88.service($HttpServletRequestFilter_120bef7fb88.java)
at
$HttpServletRequestHandler_120bef7fb8a.service($HttpServletRequestHandler_120bef7fb8a.java)
at

T5 jsession id in url crashing tap URLEncoder

2009-03-17 Thread Joel Halbert
I am seeing bot requests to our site which have the session id encoded
in the request url because they are not using cookies:

e.g.

66.249.70.177 - - [17/Mar/2009:08:43:23 +] GET /store/product/2799%
3Bjsessionid=1660715C3C8E125693B0B98550FFEC87 HTTP/1.1 500 3931 -
Mozilla/
5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)


This is resulting in an exception in T5.0.18


2009-03-17 08:43:23,937 [TP-Processor2] ERROR
org.apache.tapestry5.services.TapestryModule.RequestExceptionHandler -
Processing of request failed with uncau
ght exception: Input string
'2799;jsessionid=1660715C3C8E125693B0B98550FFEC87' is not valid; the
character ';' at position 5 is not valid.
 java.lang.IllegalArgumentException: Input string
'2799;jsessionid=1660715C3C8E125693B0B98550FFEC87' is not valid; the
character ';' at position 5 is not val
id.
at
org.apache.tapestry5.internal.services.URLEncoderImpl.decode(URLEncoderImpl.java:143)
at $URLEncoder_120118ad084.decode($URLEncoder_120118ad084.java)
at
org.apache.tapestry5.internal.services.ContextPathEncoderImpl.decodePath(ContextPathEncoderImpl.java:70)



Should the URLEncoder not be able to correctly decode a request with an
encoded session id? Or this this symptomatic of some other issue?

Thank,
Joel
   


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



T5: Construction of service 'Alias' has failed due to recursion: the service depends on itself in some way. Please check.

2008-11-26 Thread Joel Halbert
Hi,

I get the following:

Caused by: java.lang.IllegalStateException: Construction of service
'Alias' has failed due to recursion: the service depends on itself in
some way. Please check
org.apache.tapestry5.services.TapestryModule.buildAlias(Logger, String,
AliasManager, Collection) (at TapestryModule.java:217) for references to
another service that is itself dependent on service 'Alias'.

When contributing the following alias:

public static void contributeAlias(
ConfigurationAliasContributionMarkupWriterFactory
configuration, 
@Inject @Symbol(SymbolConstants.CHARSET) final String
applicationCharset) {


configuration.add(AliasContribution.create(MarkupWriterFactory.class,
new
XhtmlMarkupWriterFactoryImpl(applicationCharset)));
}


as per http://wiki.apache.org/tapestry/Tapestry5HowToXhtml


I've seen the other threads on this issue but they haven't helped.

Any ideas?

THanks,
Joel


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Construction of service 'Alias' has failed due to recursion: the service depends on itself in some way. Please check.

2008-11-26 Thread Joel Halbert
the problem appears to be related to another conitribution method:

public void contributeApplicationDefaults(
MappedConfigurationString, String configuration,
@Inject
ApplicationGlobals applicationGlobals,
@Inject 
SymbolSource symbolSource
) {
.
.

when this is commented out it no longer throws the error, I guess the
double dependency on SymbolSource is causing the problem...?



On Wed, 2008-11-26 at 09:06 -0800, Howard Lewis Ship wrote:
 5.0.16 introduces much improved logging to the console when this
 happens, it should help you diagnost what happened.  What I see looks
 correct, but there may be something else going on that we can't see.
 
 On Wed, Nov 26, 2008 at 8:58 AM, Joel Halbert [EMAIL PROTECTED] wrote:
  Hi,
 
  I get the following:
 
  Caused by: java.lang.IllegalStateException: Construction of service
  'Alias' has failed due to recursion: the service depends on itself in
  some way. Please check
  org.apache.tapestry5.services.TapestryModule.buildAlias(Logger, String,
  AliasManager, Collection) (at TapestryModule.java:217) for references to
  another service that is itself dependent on service 'Alias'.
 
  When contributing the following alias:
 
  public static void contributeAlias(
 ConfigurationAliasContributionMarkupWriterFactory
  configuration,
 @Inject @Symbol(SymbolConstants.CHARSET) final String
  applicationCharset) {
 
 
  configuration.add(AliasContribution.create(MarkupWriterFactory.class,
 new
  XhtmlMarkupWriterFactoryImpl(applicationCharset)));
 }
 
 
  as per http://wiki.apache.org/tapestry/Tapestry5HowToXhtml
 
 
  I've seen the other threads on this issue but they haven't helped.
 
  Any ideas?
 
  THanks,
  Joel
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Construction of service 'Alias' has failed due to recursion: the service depends on itself in some way. Please check.

2008-11-26 Thread Joel Halbert
For the time being I'm going to solve the problem by simply hardiwing
the  charset


On Wed, 2008-11-26 at 17:35 +, Joel Halbert wrote:
 the problem appears to be related to another conitribution method:
 
   public void contributeApplicationDefaults(
   MappedConfigurationString, String configuration,
   @Inject
   ApplicationGlobals applicationGlobals,
   @Inject 
   SymbolSource symbolSource
   ) {
 .
 .
 
 when this is commented out it no longer throws the error, I guess the
 double dependency on SymbolSource is causing the problem...?
 
 
 
 On Wed, 2008-11-26 at 09:06 -0800, Howard Lewis Ship wrote:
  5.0.16 introduces much improved logging to the console when this
  happens, it should help you diagnost what happened.  What I see looks
  correct, but there may be something else going on that we can't see.
  
  On Wed, Nov 26, 2008 at 8:58 AM, Joel Halbert [EMAIL PROTECTED] wrote:
   Hi,
  
   I get the following:
  
   Caused by: java.lang.IllegalStateException: Construction of service
   'Alias' has failed due to recursion: the service depends on itself in
   some way. Please check
   org.apache.tapestry5.services.TapestryModule.buildAlias(Logger, String,
   AliasManager, Collection) (at TapestryModule.java:217) for references to
   another service that is itself dependent on service 'Alias'.
  
   When contributing the following alias:
  
   public static void contributeAlias(
  ConfigurationAliasContributionMarkupWriterFactory
   configuration,
  @Inject @Symbol(SymbolConstants.CHARSET) final String
   applicationCharset) {
  
  
   configuration.add(AliasContribution.create(MarkupWriterFactory.class,
  new
   XhtmlMarkupWriterFactoryImpl(applicationCharset)));
  }
  
  
   as per http://wiki.apache.org/tapestry/Tapestry5HowToXhtml
  
  
   I've seen the other threads on this issue but they haven't helped.
  
   Any ideas?
  
   THanks,
   Joel
  
  
   -
   To unsubscribe, e-mail: [EMAIL PROTECTED]
   For additional commands, e-mail: [EMAIL PROTECTED]
  
  
  
  
  
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Construction of service 'Alias' has failed due to recursion: the service depends on itself in some way. Please check.

2008-11-26 Thread Joel Halbert
damn, my last email was sent before i'd finished...

.
.

For the time being I'm going to solve the problem by hardwiring the
charset

public static void contributeAlias(
ConfigurationAliasContributionMarkupWriterFactory
configuration
) {

configuration.add(AliasContribution.create(MarkupWriterFactory.class,
new XhtmlMarkupWriterFactoryImpl(UTF-8)));

} 


I should not imaging that injecting services into the alias contribution
is something that will be required much  anyway


On Wed, 2008-11-26 at 17:42 +, Joel Halbert wrote:
 For the time being I'm going to solve the problem by simply hardiwing
 the  charset
 
 
 On Wed, 2008-11-26 at 17:35 +, Joel Halbert wrote:
  the problem appears to be related to another conitribution method:
  
  public void contributeApplicationDefaults(
  MappedConfigurationString, String configuration,
  @Inject
  ApplicationGlobals applicationGlobals,
  @Inject 
  SymbolSource symbolSource
  ) {
  .
  .
  
  when this is commented out it no longer throws the error, I guess the
  double dependency on SymbolSource is causing the problem...?
  
  
  
  On Wed, 2008-11-26 at 09:06 -0800, Howard Lewis Ship wrote:
   5.0.16 introduces much improved logging to the console when this
   happens, it should help you diagnost what happened.  What I see looks
   correct, but there may be something else going on that we can't see.
   
   On Wed, Nov 26, 2008 at 8:58 AM, Joel Halbert [EMAIL PROTECTED] wrote:
Hi,
   
I get the following:
   
Caused by: java.lang.IllegalStateException: Construction of service
'Alias' has failed due to recursion: the service depends on itself in
some way. Please check
org.apache.tapestry5.services.TapestryModule.buildAlias(Logger, String,
AliasManager, Collection) (at TapestryModule.java:217) for references to
another service that is itself dependent on service 'Alias'.
   
When contributing the following alias:
   
public static void contributeAlias(
   ConfigurationAliasContributionMarkupWriterFactory
configuration,
   @Inject @Symbol(SymbolConstants.CHARSET) final String
applicationCharset) {
   
   
configuration.add(AliasContribution.create(MarkupWriterFactory.class,
   new
XhtmlMarkupWriterFactoryImpl(applicationCharset)));
   }
   
   
as per http://wiki.apache.org/tapestry/Tapestry5HowToXhtml
   
   
I've seen the other threads on this issue but they haven't helped.
   
Any ideas?
   
THanks,
Joel
   
   
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
   
   
   
   
   
  
  
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [T5] Persistent fields may not be updated until after the page has finished loading

2008-11-22 Thread Joel Halbert
in relation to this thread - and specifically in relation to using
pageAttached() to initialise p[age fields - I raised the following
possible bug the other day,
https://issues.apache.org/jira/browse/TAP5-374

I was wondering if this was something anyone else had
noticed/reproduced?



On Fri, 2008-11-21 at 12:32 -0800, Eric Ma wrote:
 Thanks for your reply.  I have a follow up question:
 
 For @Persist field, when and how does variable binding (from HTTP
 session-cached value) happen?  
 
 Let me explain:
 
 Previously, when I use inline (or constructor-based) variable
 initialization, although I don't know how the magic works, I am guaranteed
 that only the first time a component/page object is instantiated, the
 @Persist field is populated with the initial value.  Subsequently when the
 component/page object is retrieved from the object pool and re-used, it is
 not the initial value, but the session-cached value, that is associated with
 the variable.  This is important because the field value might have changed
 due to user action between the object instantiation and re-use.
 
 If I have to assign value explicitly in @SetupRender, since that method is
 always called by Tapestry whether this is a new or re-used object instance,
 to ensure the session-cached value is bound to the filed, do I have to do
 (can we assume this is how T5 actually work behind the scene)?
 
 @SetupRender () {
 void initializeField() {
 if(session.getAttribute(persistedFieldName) == null) {
 myPersistedField = some initial value;
 }
 }
 
 , which has 2 major problems:
 
 1. I have to touch HttpSession, something that T5 makes every effort to hide
 from me.
 2. Can I assume the session key is actually the session key.  What if the T5
 internal implementation changes tomorrow?
 
 
 
 Marcel Sammut wrote:
  
  I had the same problem when moving to 5.0.16.  It was pretty simple for
  me, since what I was doing was initializing my persistant variables in the
  declaration.  What I did was move the initialization to the SetupRender
  phase of the cycle.
  
  For example:
  @Persist
  private int count = 0;
  
  became:
  @Persist
  private int count;
  @SetupRender
  void setupRender() {
  count = 0;
  }
  
  Hope that works for you too.
  Cheers,
  Marcel
  
  
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: page lifecle methods persistent fields : bug or expected behaviour?

2008-11-20 Thread Joel Halbert
I'm going to raise this as a bug in JIRA, unless anyone thinks it
shouldn't be.

On Wed, 2008-11-19 at 16:07 +, Joel Halbert wrote:
 Hi,
 
 I am seeing unexpected behaviour when using persistent fields and the
 page lifecycle method, pageAttached(), (T 5.0.15).
 
 I have a persistent field,
 
 @Persist
 private Map myMap;
 
 I also have a page lifecycle method,
 
 void pageAttached() {
   if (myMap == null){
   myMap = new HashMap();
}
 }
 
 
 I expect that when the page first loads and myMap is null then myMap
 will be initialised to an empty map, thereafter I expect anything I put
 into the map to persist across requests.
 
 What I actually see is that, if the above pageAttached method is present
 then any data that I put into myMap does not persist across requests
 (the map is always empty).
 
 I was not expecting this at all.
 
 By design or bug?
 
 Rgs,
 Joel
   
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: page lifecle methods persistent fields : bug or expected behaviour?

2008-11-20 Thread Joel Halbert

https://issues.apache.org/jira/browse/TAP5-374


On Thu, 2008-11-20 at 09:15 +, Joel Halbert wrote:
 I'm going to raise this as a bug in JIRA, unless anyone thinks it
 shouldn't be.
 
 On Wed, 2008-11-19 at 16:07 +, Joel Halbert wrote:
  Hi,
  
  I am seeing unexpected behaviour when using persistent fields and the
  page lifecycle method, pageAttached(), (T 5.0.15).
  
  I have a persistent field,
  
  @Persist
  private Map myMap;
  
  I also have a page lifecycle method,
  
  void pageAttached() {
if (myMap == null){
  myMap = new HashMap();
 }
  }
  
  
  I expect that when the page first loads and myMap is null then myMap
  will be initialised to an empty map, thereafter I expect anything I put
  into the map to persist across requests.
  
  What I actually see is that, if the above pageAttached method is present
  then any data that I put into myMap does not persist across requests
  (the map is always empty).
  
  I was not expecting this at all.
  
  By design or bug?
  
  Rgs,
  Joel
  
  
  
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
  
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Improvements to Loop

2008-11-19 Thread Joel Halbert
Hi,
I just tried implementing the suggestion below - to inject the Loop to
access it's index so i need not define my own - however index in Loop is
package private, thus I can not read it. Am I missing something here?

Thx,
Joel

On Tue, 2008-11-11 at 08:43 -0800, Howard Lewis Ship wrote:
 If you inject the Loop component and make it a property, you can refer
 to loop.index, which saves you from having to create an index
 property.
 
 On Tue, Nov 11, 2008 at 2:55 AM, Joel Halbert [EMAIL PROTECTED] wrote:
  Hi,
 
  Thoughts please on the following enhancements to Loop:
 
 
  a) utility parameters/methods for isFirst and isLast iteration, maybe
  something like:
 
  t:loop  
 t:parameter name=isFirst
 // hello!
 /t:paramter
 t:parameter name=isLast
 // bye!
 /t:paramter
  /t:loop
 
  b) easy access to the current index value, without having to provide
  your own. Although you can provide your own index, this gets messy when
  using inner loops, since you need to reset the inner loop index on every
  iteration of the outer loop. This seems like boiler plate that could be
  incorporated into the framework.
 
 
  If there are already nice patterns for doing the above please shout, if
  not then let us know your thoughts on making these part of the framework
 
  Rgs,
 
  Joel
 
 
  --
  SU3 Analytics Ltd
  The Print House
  18 Ashwin Street
  E8 3DL
  London
 
  Tel: +44 (0) 20 3051 8637
  Fax: +44 (0) 20 8196 2215
  Mob: +44 (0) 79 7431 0685
  www.su3analytics.com
 
  SU3 Analytics Ltd is a company registered in England and Wales under
  company number 06639473 at registered address 61b Oxford Gardens, London
  W10 5UJ, United Kingdom.
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



T5: page lifecle methods persistent fields : bug or expected behaviour?

2008-11-19 Thread Joel Halbert
Hi,

I am seeing unexpected behaviour when using persistent fields and the
page lifecycle method, pageAttached(), (T 5.0.15).

I have a persistent field,

@Persist
private Map myMap;

I also have a page lifecycle method,

void pageAttached() {
  if (myMap == null){
myMap = new HashMap();
   }
}


I expect that when the page first loads and myMap is null then myMap
will be initialised to an empty map, thereafter I expect anything I put
into the map to persist across requests.

What I actually see is that, if the above pageAttached method is present
then any data that I put into myMap does not persist across requests
(the map is always empty).

I was not expecting this at all.

By design or bug?

Rgs,
Joel



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Improvements to Loop

2008-11-19 Thread Joel Halbert
no, the error is at runtime, index is not visible.

On Wed, 2008-11-19 at 10:51 -0600, Steven Woolley wrote:
 I guessing it's a synthetic property (has getter added at runtime) so
 you probably can't access it in java code, but can access it from the
 template using ${loop.index}. That's just a hunch though.
 Steve  
 
 On Wed, Nov 19, 2008 at 9:03 AM, Joel Halbert [EMAIL PROTECTED]
 wrote:
 Hi,
 I just tried implementing the suggestion below - to inject the
 Loop to
 access it's index so i need not define my own - however index
 in Loop is
 package private, thus I can not read it. Am I missing
 something here?
 
 Thx,
 Joel
 
 On Tue, 2008-11-11 at 08:43 -0800, Howard Lewis Ship wrote:
 
 
  If you inject the Loop component and make it a property, you
 can refer
  to loop.index, which saves you from having to create an
 index
  property.
 
  On Tue, Nov 11, 2008 at 2:55 AM, Joel Halbert
 [EMAIL PROTECTED] wrote:
   Hi,
  
   Thoughts please on the following enhancements to Loop:
  
  
   a) utility parameters/methods for isFirst and isLast
 iteration, maybe
   something like:
  
   t:loop  
  t:parameter name=isFirst
  // hello!
  /t:paramter
  t:parameter name=isLast
  // bye!
  /t:paramter
   /t:loop
  
   b) easy access to the current index value, without having
 to provide
   your own. Although you can provide your own index, this
 gets messy when
   using inner loops, since you need to reset the inner loop
 index on every
   iteration of the outer loop. This seems like boiler plate
 that could be
   incorporated into the framework.
  
  
   If there are already nice patterns for doing the above
 please shout, if
   not then let us know your thoughts on making these part of
 the framework
  
   Rgs,
  
   Joel
  
  
   --
   SU3 Analytics Ltd
   The Print House
   18 Ashwin Street
   E8 3DL
   London
  
   Tel: +44 (0) 20 3051 8637
   Fax: +44 (0) 20 8196 2215
   Mob: +44 (0) 79 7431 0685
   www.su3analytics.com
  
   SU3 Analytics Ltd is a company registered in England and
 Wales under
   company number 06639473 at registered address 61b Oxford
 Gardens, London
   W10 5UJ, United Kingdom.
  
  
  
 -
   To unsubscribe, e-mail:
 [EMAIL PROTECTED]
   For additional commands, e-mail:
 [EMAIL PROTECTED]
  
  
 
 
 
 
 
 --
 SU3 Analytics Ltd
 The Print House
 18 Ashwin Street
 E8 3DL
 London
 
 Tel: +44 (0) 20 3051 8637
 Fax: +44 (0) 20 8196 2215
 Mob: +44 (0) 79 7431 0685
 www.su3analytics.com
 
 SU3 Analytics Ltd is a company registered in England and Wales
 under
 company number 06639473 at registered address 61b Oxford
 Gardens, London
 W10 5UJ, United Kingdom.
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail:
 [EMAIL PROTECTED]
 
 
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Improvements to Loop

2008-11-13 Thread Joel Halbert
Would anyone find feature (a) outlined below (adding isFirst and isLast
parameters to loop, along the lines of
https://issues.apache.org/jira/browse/TAP5-205) useful?
If there is any interest I will raise a ticket and people can vote on
it.


On Tue, 2008-11-11 at 10:55 +, Joel Halbert wrote:
 Hi,
 
 Thoughts please on the following enhancements to Loop:
 
 
 a) utility parameters/methods for isFirst and isLast iteration, maybe
 something like:
 
 t:loop  
 t:parameter name=isFirst
   // hello!
 /t:paramter
 t:parameter name=isLast
   // bye!
 /t:paramter
 /t:loop
 
 b) easy access to the current index value, without having to provide
 your own. Although you can provide your own index, this gets messy when
 using inner loops, since you need to reset the inner loop index on every
 iteration of the outer loop. This seems like boiler plate that could be
 incorporated into the framework.
 
 
 If there are already nice patterns for doing the above please shout, if
 not then let us know your thoughts on making these part of the framework
 
 Rgs,
 
 Joel
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Improvements to Loop

2008-11-12 Thread Joel Halbert
that's nice and elegant, thanks.


On Tue, 2008-11-11 at 08:43 -0800, Howard Lewis Ship wrote:
 If you inject the Loop component and make it a property, you can refer
 to loop.index, which saves you from having to create an index
 property.
 
 On Tue, Nov 11, 2008 at 2:55 AM, Joel Halbert [EMAIL PROTECTED] wrote:
  Hi,
 
  Thoughts please on the following enhancements to Loop:
 
 
  a) utility parameters/methods for isFirst and isLast iteration, maybe
  something like:
 
  t:loop  
 t:parameter name=isFirst
 // hello!
 /t:paramter
 t:parameter name=isLast
 // bye!
 /t:paramter
  /t:loop
 
  b) easy access to the current index value, without having to provide
  your own. Although you can provide your own index, this gets messy when
  using inner loops, since you need to reset the inner loop index on every
  iteration of the outer loop. This seems like boiler plate that could be
  incorporated into the framework.
 
 
  If there are already nice patterns for doing the above please shout, if
  not then let us know your thoughts on making these part of the framework
 
  Rgs,
 
  Joel
 
 
  --
  SU3 Analytics Ltd
  The Print House
  18 Ashwin Street
  E8 3DL
  London
 
  Tel: +44 (0) 20 3051 8637
  Fax: +44 (0) 20 8196 2215
  Mob: +44 (0) 79 7431 0685
  www.su3analytics.com
 
  SU3 Analytics Ltd is a company registered in England and Wales under
  company number 06639473 at registered address 61b Oxford Gardens, London
  W10 5UJ, United Kingdom.
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Using an annotation to define which is the page activation context / onActivate method ?

2008-11-11 Thread Joel Halbert
Unfortunately PageAttached is called before onActivate methods are
called, and thus no use for initialising/validating models which was my
intention.


On Tue, 2008-11-11 at 11:43 +, Lance Java wrote:
 You could use pageAttached
 http://tapestry.apache.org/tapestry5/tapestry-core/guide/lifecycle.html
 
 
 2008/11/8 Joel Halbert [EMAIL PROTECTED]
 
  just realised that the order of invocation of onActivate methods is the
  other way around to that which i thought it was:
  http://markmail.org/message/7o52hrmcvli3jsje
 
  This does pose the question though: how can I invoke base functionality
  after subclasses have been initialised, but before PageRender?
 
  hmmm (being Saturday I've very likely missed something here)
 
  On Sat, 2008-11-08 at 14:40 +, Joel Halbert wrote:
   Hi,
  
   Is it possible to use an annotation to define which method should be
   used to set the page activation context?
   i.e. I would like to define an onActivate() method, but have it called
   something else, e.g. onActivateX().
  
   A reason for wanting to do so is to ensure that i may have a single
   onActivate method in a base class which is always called regardless of
   wether there are onActivate methods in subclasses (that might otherwise
   override it and not call super.onActivate()).
  
   Thx
   Joel
  
  
 
 
  --
  SU3 Analytics Ltd
  The Print House
  18 Ashwin Street
  E8 3DL
  London
 
  Tel: +44 (0) 20 3051 8637
  Fax: +44 (0) 20 8196 2215
  Mob: +44 (0) 79 7431 0685
  www.su3analytics.com
 
  SU3 Analytics Ltd is a company registered in England and Wales under
  company number 06639473 at registered address 61b Oxford Gardens, London
  W10 5UJ, United Kingdom.
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Improvements to Loop

2008-11-11 Thread Joel Halbert
Hi,

Thoughts please on the following enhancements to Loop:


a) utility parameters/methods for isFirst and isLast iteration, maybe
something like:

t:loop  
t:parameter name=isFirst
// hello!
/t:paramter
t:parameter name=isLast
// bye!
/t:paramter
/t:loop

b) easy access to the current index value, without having to provide
your own. Although you can provide your own index, this gets messy when
using inner loops, since you need to reset the inner loop index on every
iteration of the outer loop. This seems like boiler plate that could be
incorporated into the framework.


If there are already nice patterns for doing the above please shout, if
not then let us know your thoughts on making these part of the framework

Rgs,

Joel


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Rationale behind all possible onActivate methods invoked when context is supplied

2008-11-10 Thread Joel Halbert
On Mon, 2008-11-10 at 14:31 +, Peter Stavrinides wrote:

 The trouble is when multiple onActivate methods are required, it
always requires a little more thought to get the page handling perfect. 
 Since this pattern gets repeated a lot, you often end up with hundreds
of these onActivate 
 methods ...its a lot of boilerplate code that could be optimized.

I think i would agree with that.



 Maybe the best way to deal with different onActivate methods is to have a  
 single one receiving an EventContext object  
 If it can be done this way then definitely a better solution IMHO, and less 
 error prone too... onActivate is not 'Tapestry simple' yet.
 
 What I like most about the onActivate event concept is that you can code 
 defensively, i.e.: the ability to return an object if you so choose. I find 
 this useful for instance when incorrect parameters are supplied to a page you 
 can simply return another page, instead of displaying an ugly error to the 
 end user. The trouble is when multiple onActivate methods are required, it 
 always requires a little more thought to get the page handling perfect. Since 
 this pattern gets repeated a lot, you often end up with hundreds of these 
 onActivate methods ...its a lot of boilerplate code that could be optimized.
 
 cheers,
 Peter
 
 Em Sat, 08 Nov 2008 13:05:50 -0300, Joel Halbert [EMAIL PROTECTED]  
 escreveu:
 
  I'd be interested to hear how others handle this, and what the merit of  
  having all available onActivate methods
  invoked is when the full context is supplied.
 
 Maybe the best way to deal with different onActivate methods is to have a  
 single one receiving an EventContext object  
 http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/EventContext.html
   
 and then use its getCount() method to find out how many parameters were  
 passed in the activation context.
 



-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


T5: Page instance variable default values

2008-11-10 Thread Joel Halbert
Hi,

With reference to:
http://tapestry.apache.org/tapestry5/guide/lifecycle.html

Tapestry takes special care to purge all instance variables back to
their default value at the end of each request.


How is the default value determined?

I have noticed that if I declare a class variable on my page, like so:


private HashSetString myVar = new HashSetString();


It's state will persist across requests i.e. if on one page request I
populate it, the populated state will be visible to the next request,
whereas I was expecting an empty Set.

Is this expected, I can initialise my variable within onActivate or a
@SetupRender method instead,  but I want to check in to see what the
documented behaviour should be.

(Note that the variable has not been marked @Persist in any way, I am
using 5.0.15)

Rgs,
Joel


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



T5: Using an annotation to define which is the page activation context / onActivate method ?

2008-11-08 Thread Joel Halbert
Hi,

Is it possible to use an annotation to define which method should be
used to set the page activation context?
i.e. I would like to define an onActivate() method, but have it called
something else, e.g. onActivateX().

A reason for wanting to do so is to ensure that i may have a single
onActivate method in a base class which is always called regardless of
wether there are onActivate methods in subclasses (that might otherwise
override it and not call super.onActivate()). 

Thx
Joel


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Using an annotation to define which is the page activation context / onActivate method ?

2008-11-08 Thread Joel Halbert
just realised that the order of invocation of onActivate methods is the
other way around to that which i thought it was: 
http://markmail.org/message/7o52hrmcvli3jsje

This does pose the question though: how can I invoke base functionality
after subclasses have been initialised, but before PageRender?

hmmm (being Saturday I've very likely missed something here)

On Sat, 2008-11-08 at 14:40 +, Joel Halbert wrote:
 Hi,
 
 Is it possible to use an annotation to define which method should be
 used to set the page activation context?
 i.e. I would like to define an onActivate() method, but have it called
 something else, e.g. onActivateX().
 
 A reason for wanting to do so is to ensure that i may have a single
 onActivate method in a base class which is always called regardless of
 wether there are onActivate methods in subclasses (that might otherwise
 override it and not call super.onActivate()). 
 
 Thx
 Joel
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Rationale behind all possible onActivate methods invoked when context is supplied

2008-11-08 Thread Joel Halbert
Hi,

I've been thinking about how onActivate methods are called...

If i have a page with two onActivate methods:


MyPage.onActivate(int modelId1, int modelId2);
MyPage.onActivate(int modelId1, int modelId2, int modelId3);

and if i have a link to this page which supplies the full 3 argument
context, (e.g. http://bla.com/MyPage/1/2/3) then T5 will invoke the
second method and then the first.

What is the rational behind thiinvoking both onActivate methods for the
same context?

If onActivate methods are an opportunity to intialise models (in this
case by looking up the model based on the supplied id) then having both
methods invoked requires us to be defensive about initialisation, if we
want to avoid unecessary model intialisation and data access:

e.g. i need to write something like this in the first of the above two
methods:

onActivate(int modelId1, int modelId2){
if (model1 != null) {
model1 = model1Dao.getById(model1Id);
}

if (model2 != null) {
model2 = model2Dao.getById(model1Id);
}
}

(I'm not presuming to have model caching, which i do, but this is incidental to 
the problem illustrated)

I'd be interested to hear how others handle this, and what the merit of having 
all available onActivate methods 
invoked is when the full context is supplied. 

Rgs,

Joel

-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Rationale behind all possible onActivate methods invoked when context is supplied

2008-11-08 Thread Joel Halbert
i knew i was missing something, thanks!
(I must try and remember what i read in the docs)

On Sat, 2008-11-08 at 08:23 -0800, Martin Papy wrote:
 You can short cut the second call if the first method return a boolean. (
 false I believe )...
 
 Martin
 
 
 Joel Halbert-2 wrote:
  
  Hi,
  
  I've been thinking about how onActivate methods are called...
  
  If i have a page with two onActivate methods:
  
  
  MyPage.onActivate(int modelId1, int modelId2);
  MyPage.onActivate(int modelId1, int modelId2, int modelId3);
  
  and if i have a link to this page which supplies the full 3 argument
  context, (e.g. http://bla.com/MyPage/1/2/3) then T5 will invoke the
  second method and then the first.
  
  What is the rational behind thiinvoking both onActivate methods for the
  same context?
  
  If onActivate methods are an opportunity to intialise models (in this
  case by looking up the model based on the supplied id) then having both
  methods invoked requires us to be defensive about initialisation, if we
  want to avoid unecessary model intialisation and data access:
  
  e.g. i need to write something like this in the first of the above two
  methods:
  
  onActivate(int modelId1, int modelId2){
  if (model1 != null) {
  model1 = model1Dao.getById(model1Id);
  }
  
  if (model2 != null) {
  model2 = model2Dao.getById(model1Id);
  }
  }
  
  (I'm not presuming to have model caching, which i do, but this is
  incidental to the problem illustrated)
  
  I'd be interested to hear how others handle this, and what the merit of
  having all available onActivate methods 
  invoked is when the full context is supplied. 
  
  Rgs,
  
  Joel
  
  -- 
  SU3 Analytics Ltd 
  The Print House 
  18 Ashwin Street
  E8 3DL 
  London 
  
  Tel: +44 (0) 20 3051 8637
  Fax: +44 (0) 20 8196 2215
  Mob: +44 (0) 79 7431 0685 
  www.su3analytics.com 
  
  SU3 Analytics Ltd is a company registered in England and Wales under
  company number 06639473 at registered address 61b Oxford Gardens, London
  W10 5UJ, United Kingdom.
  
  
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
  
  
  
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Making runtime Services (e.g. Request) available in a custom binding

2008-11-08 Thread Joel Halbert
How neat. That works a treat.


On Fri, 2008-11-07 at 10:22 -0800, Howard Lewis Ship wrote:
 Tapestry has a Request service that is a property shadow of
 RequestGlobals.request.  That means that you can inject Request and
 any method you invoke on it is forwarded to the current per-thread
 Request object.
 
 The end result is you can treat Request as you like ... as the current
 Request ... even though it is a shared global object.
 
 
 On Fri, Nov 7, 2008 at 10:05 AM, Joel Halbert [EMAIL PROTECTED] wrote:
  Hi,
 
  I want to create a binding which is dependent on data within the user
  session.
  How can runtime information such as the request/session be made available to
  the Binding?
 
  In other bindings I have written I have injected any services I needed into
  the BindingFactory - but BindingFactory is created once, when the app loads,
  and so can not not know about the current runtime.
 
  Thanks,
  Joel
 
  --
  SU3 Analytics Ltd
  61b Oxford Gardens
  W10 5UJ
  London
 
  Tel: +44 20 8960 2634
  Mob: +44 75 2501 0825
  www.su3analytics.com
 
  SU3 Analytics Ltd is a company registered in England and Wales under company
  number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ,
  United Kingdom.
 
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
 


-- 
SU3 Analytics Ltd 
The Print House 
18 Ashwin Street
E8 3DL 
London 

Tel: +44 (0) 20 3051 8637
Fax: +44 (0) 20 8196 2215
Mob: +44 (0) 79 7431 0685 
www.su3analytics.com 

SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens, London
W10 5UJ, United Kingdom.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Making runtime Services (e.g. Request) available in a custom binding

2008-11-07 Thread Joel Halbert

Hi,

I want to create a binding which is dependent on data within the user 
session.
How can runtime information such as the request/session be made 
available to the Binding?


In other bindings I have written I have injected any services I needed 
into the BindingFactory - but BindingFactory is created once, when the 
app loads, and so can not not know about the current runtime.


Thanks,
Joel

--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Support for external assets ?

2008-11-03 Thread Joel Halbert

Hi,

Can an asset reference an external resource?
e.g.
@IncludeJavaScriptLibrary(value={url:http://www.myurl.com/resource.js})

If it's not supported was there a reason for this? (If there's no 
particular reason I might raise a ticket)


Thx,
Joel

--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Support for external assets ?

2008-11-03 Thread Joel Halbert

Just realised that you can use: RenderSupport.addScriptLink(String url)

Joel Halbert wrote:

Hi,

Can an asset reference an external resource?
e.g.
@IncludeJavaScriptLibrary(value={url:http://www.myurl.com/resource.js})

If it's not supported was there a reason for this? (If there's no 
particular reason I might raise a ticket)


Thx,
Joel



--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Access to T5 Services - how to get a handle on to Registry?

2008-11-03 Thread Joel Halbert

Hi,

I am writing a binding for looking up symbols. In my binding factory I 
need access to the SymbolSource service.


How can you access a T5 Service within a class that is not managed by 
Tap IoC (thus the dependency can not  be injected) and does not have 
access to the ServletContext (thus the dependency can not be looked up 
manually from the Registry (the registry is set as a servlet context 
parameter)) ?


Thx
Joel

--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Access to T5 Services - how to get a handle on to Registry?

2008-11-03 Thread Joel Halbert
OK, i figured it out, I didn;t realise you can inject services into the 
contribute methods:


something like...

   public static void contributeBindingSource(
   MappedConfigurationString, BindingFactory 
configuration,

   BindingSource bindingSource,
   @InjectService(SymbolSource)
   SymbolSource symbolSource
   ) {
   configuration.add(list, new ListBindingFactory(bindingSource));
   configuration.add(symb, new SymbolBindingFactory(symbolSource));
   }


(IoC on steroids !!)


Joel Halbert wrote:

Hi,

I am writing a binding for looking up symbols. In my binding factory I 
need access to the SymbolSource service.


How can you access a T5 Service within a class that is not managed by 
Tap IoC (thus the dependency can not  be injected) and does not have 
access to the ServletContext (thus the dependency can not be looked up 
manually from the Registry (the registry is set as a servlet context 
parameter)) ?


Thx
Joel



--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5 arguments to methods in expressions

2008-10-28 Thread Joel Halbert

Sounds good.

With respect to expressions, although having a lot of logic in the page 
can quickly become unwieldy, the ability to use simple ternaries and 
evaluate functions with arguments is certainly appealing and allow for 
more concise code.




Howard Lewis Ship wrote:

On Mon, Oct 27, 2008 at 11:26 AM, Joel Halbert [EMAIL PROTECTED] wrote:
  

Hi,

Does T5 support arguments to methods in expressions?

e.g. something like the argument to the inner loop source below:


  tr t:type=loop t:source=promotedRows value=var:index
  td t:type=loop t:source=promotedCols(${var:index})item
${var:index}/td



I expect to revamp the property expression language in 5.1 (or perhaps
5.2, depending on priorities) to support this, almost. Unless I get
very clever, I don't think we'll see ${var:index} allowed ... you'll
have to use a real property, not a var: psuedo-property, but then it
will look lke:

  t:source=promotedCols(index)

I also expect to add some ternary operator (test ? expr1 : expr2), a
smart dereference ([ expr ] that can be applied to arrays, Lists
and Maps), and maybe some simple filtering / projection operators,
along with method invocation.



  

  /tr

Is this allowed? I ask because the above code does not throw an exception,
however the promotedCols(int) method is NEVER invoked although the inner
loop iterates exactly ONCE (although it should be more times).

Is this behaviour is a bug?

Thanks,
Joel

--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ,
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]







  


--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Page lifecycle method called after onActivate but before event handling and page rendering methods?

2008-10-28 Thread Joel Halbert
Well, typically loading model data, which I would want to do from a 
single place, once the onActivate method(s) had been called.


Thiago H. de Paula Figueiredo wrote:
Em Sun, 26 Oct 2008 11:24:52 -0300, Joel Halbert 
[EMAIL PROTECTED] escreveu:


Is there a lifecycle method which is called after onActivate but 
before any of the event handling methods or page rendering methods?


The answer depends on what are you trying to accomplish. :) Could you 
give an example or elaborate more?




--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Modifying default HTML templates for form validation messages

2008-10-28 Thread Joel Halbert
Is it at all possible to override the default HTML templates for form 
validation error messages, and if so, are there any pointers on the web?


Thanks,

Joel

--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Modifying default HTML templates for form validation messages

2008-10-28 Thread Joel Halbert
I want to change the template itself, there is only so much I can change 
with the css.


Ulrich Stärk wrote:
What exactly are you trying to achieve? Overriding the default 
messages is a matter of putting a properties file into the right 
package in your classpath, see the wiki. Formatting should be possible 
using css.


Uli

Joel Halbert schrieb:
Is it at all possible to override the default HTML templates for form 
validation error messages, and if so, are there any pointers on the web?


Thanks,

Joel




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Modifying default HTML templates for form validation messages

2008-10-28 Thread Joel Halbert

OK, thanks.


Ulrich Stärk wrote:
There is no such thing such as a template for error messages. The 
validation errors come from a ValidationDecorator that writes out all 
HTML. You should be able to overwrite this service with your own 
implementation. I never digged deeper into this so there is nothing 
more I can tell you.


Uli

Joel Halbert schrieb:
I want to change the template itself, there is only so much I can 
change with the css.


Ulrich Stärk wrote:
What exactly are you trying to achieve? Overriding the default 
messages is a matter of putting a properties file into the right 
package in your classpath, see the wiki. Formatting should be 
possible using css.


Uli

Joel Halbert schrieb:
Is it at all possible to override the default HTML templates for 
form validation error messages, and if so, are there any pointers 
on the web?


Thanks,

Joel




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: reference pages by logical id (rather than by path)

2008-10-27 Thread Joel Halbert

I like using classes, as you say it makes it re-factor proof.
This is in-fact what Wicket does too.

Thiago H. de Paula Figueiredo wrote:
Em Sun, 26 Oct 2008 06:39:21 -0300, Joel Halbert 
[EMAIL PROTECTED] escreveu:


Is possible to reference pages by logical id rather than by path? 
i.e. I would like to be able to reference a page like this: 
t:page=name:editimages rather than 
t:page=manage/inventory/images/Edit


I don't think so. Other option would be the page paramameter from 
PageLink to also accept Class instances. We would have 
refactoring-proof PageLink usage. It would be something like this:


t:page=prop:nextPage

public Class getNextPage() {
return NextPage.class;
}

You can easily add a new name parameter binding to do what you want. 
You can follow this example from the Tapestry wiki: 
http://wiki.apache.org/tapestry/Tapestry5HowToAddMapBindingPrefix and 
use a properties file to store the name/page mappings.


Hurray for Tapestry flexibility! :)



--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



T5 arguments to methods in expressions

2008-10-27 Thread Joel Halbert

Hi,

Does T5 support arguments to methods in expressions?

e.g. something like the argument to the inner loop source below:


   tr t:type=loop t:source=promotedRows value=var:index
   td t:type=loop 
t:source=promotedCols(${var:index})item ${var:index}/td

   /tr

Is this allowed? I ask because the above code does not throw an 
exception, however the promotedCols(int) method is NEVER invoked 
although the inner loop iterates exactly ONCE (although it should be 
more times).


Is this behaviour is a bug?

Thanks,
Joel

--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



reference pages by logical id (rather than by path)

2008-10-26 Thread Joel Halbert
Is possible to reference pages by logical id rather than by path? i.e. I 
would like to be able to reference a page like this: 
t:page=name:editimages rather than t:page=manage/inventory/images/Edit


You would of course need to maintain the mapping from logical page id to 
physical path,  but at least this would then be done in a single place, 
rather than in various tml files.


Cheers,
Joel

--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Changing the default client side CSS

2008-10-26 Thread Joel Halbert

Hi,

Is it possible to override the default CSS that is used for client side 
form field validation error messages?


Thx,
Joel

--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Changing the default client side CSS

2008-10-26 Thread Joel Halbert
OK, that was pretty dim of me, since changing the css is as simple as 
overriding the css in  /app/assets/5.0.15/tapestry/default.css


Another question then: is it possible to change the HTML template used 
globally for all error messages ? 




Joel Halbert wrote:

Hi,

Is it possible to override the default CSS that is used for client 
side form field validation error messages?


Thx,
Joel



--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



T5: Page lifecycle method called after onActivate but before event handling and page rendering methods?

2008-10-26 Thread Joel Halbert
Is there a lifecycle method which is called after onActivate but before 
any of the event handling methods or page rendering methods?


--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London

Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com

SU3 Analytics Ltd is a company registered in England and Wales under company 
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ, 
United Kingdom.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



  1   2   >