You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Howard Lewis Ship <hl...@gmail.com> on 2009/04/03 01:41:51 UTC

[ANNOUNCE] Tapestry 5.1.0.2

The latest alpha release of Tapestry 5.1, Tapestry 5.1.0.2, is now
available for download and via Maven.

Please download it and give it a try; we're especially interested in
any problems related to the upgrade from 5.0.18 to 5.1.0.2.

Big features added in 5.1.0.2 include automatic combining of
JavaScript files, a new client-side JavaScript console based on
Blackbird, and the ability to have a single Ajax response update
multiple client-side Zones.

We are now stabilizing Tapestry 5.1 for a beta release and, if all
goes according to plan, a short period until a stable 5.1 release.

-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

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


Re: [ANNOUNCE] Tapestry 5.1.0.2

Posted by Howard Lewis Ship <hl...@gmail.com>.
Have you added a bug?

On Fri, Apr 3, 2009 at 2:05 AM, Blower, Andy <An...@proquest.co.uk> wrote:
> I'm having two issues stopping me with 5.1.0.2, the first I mailed the list about a few days ago but I've had no response so far. (http://www.nabble.com/T5.1.0.2-problem-with-TestableRequestImpl-td22805378.html)
>
> The second issue I've not raised before because we always have problems with the T5 rsync repository, Ivy doesn't resolve dependencies from there so I always have to manually install dependencies locally until a release is pushed to the public maven repositories. When I was doing this I had a problem with the stax2 dependency finding an invalid sha1 checksum, unfortunately I'm still getting this now that T5.1.0.2 is being resolved and retrieved by Ivy.
>
> [ivy:install]   public: downloading http://repo1.maven.org/maven2/org/codehaus/woodstox/stax2-api/3.0.1/stax2-api-3.0.1.jar.sha1
> [ivy:install] .. (0kB)
> [ivy:install] WARN:     [FAILED     ] org.codehaus.woodstox#stax2-api;3.0.1!stax2-api.jar: invalid sha1: expected=88985bfab2394cf8e56fcbd97cd44f7cac7bf8ca computed=12393455d7d25eab09bb9b2043b6df13406ec70d (3261ms)
>
> What is this stax2 thingy and why does Tapestry 5.1 need it? Does anyone using maven get this problem? Is there anything we can do to fix this?
>
> Thanks,
>
> Andy
>
>> -----Original Message-----
>> From: Howard Lewis Ship [mailto:hlship@gmail.com]
>> Sent: 03 April 2009 00:42
>> To: Tapestry users
>> Subject: [ANNOUNCE] Tapestry 5.1.0.2
>>
>> The latest alpha release of Tapestry 5.1, Tapestry 5.1.0.2, is now
>> available for download and via Maven.
>>
>> Please download it and give it a try; we're especially interested in
>> any problems related to the upgrade from 5.0.18 to 5.1.0.2.
>>
>> Big features added in 5.1.0.2 include automatic combining of
>> JavaScript files, a new client-side JavaScript console based on
>> Blackbird, and the ability to have a single Ajax response update
>> multiple client-side Zones.
>>
>> We are now stabilizing Tapestry 5.1 for a beta release and, if all
>> goes according to plan, a short period until a stable 5.1 release.
>>
>> --
>> Howard M. Lewis Ship
>>
>> Creator Apache Tapestry and Apache HiveMind
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

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


Re: [ANNOUNCE] Tapestry 5.1.0.2

Posted by Joachim Van der Auwera <jo...@progs.be>.
Inge Solvoll wrote:
> My biggest problem was that equanda haven't released something that is
> compatible with 5.1. I guess I'll have to wait for them to catch up, or use
> other components, my equanda usage is very limited.
>   
equanda head is compatible with 5.1. I have indeed not released a new 
version just yet. There are some other things in the pipeline for other 
parts of equanda which have delayed this.
The current snapshot also contains a new aut-aexpending textarea 
component which could be of interest.

Kind regards,
Joachim

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


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


Re: [ANNOUNCE] Tapestry 5.1.0.2

Posted by Inge Solvoll <in...@gmail.com>.
My biggest problem was that equanda haven't released something that is
compatible with 5.1. I guess I'll have to wait for them to catch up, or use
other components, my equanda usage is very limited.

I'm amazed at how T5 keeps addressing my key concerns :)

Problem: I had to duplicate tml content in my subclassed components.
Solution: T5 suddenly comes with a feature of overriding specific parts.

Problem: I was annoyed that I had to do plumbing/copy-paste on encoders in
loops. The loop encoder concept is IMHO one of the more non-intuitive parts
of the framework, which I had to spend some time teaching my colleagues, and
they still need a recipe to do it.
Solution: T5 plans(?) to eliminate this by providing encoders as
contributions in IOC. Hope this comes through! :)

Inge

On Fri, Apr 3, 2009 at 11:38 AM, Blower, Andy <An...@proquest.co.uk>wrote:

> So, is Maven ignoring the sha1 problem or is Ivy miscalculating this one
> for some reason?
>
> Regarding the dependencies, I also have an issue that I'd not spotted
> before. Ivy can't find javassist-3.9.0.GA.jar in the maven2 repositories. I
> can't find it with a browser either. (e.g.
> http://repo1.maven.org/maven2/javassist/javassist/) So, that's breaking my
> build too.
>
>
> > -----Original Message-----
> > From: Massimo Lusetti [mailto:mlusetti@gmail.com]
> > Sent: 03 April 2009 10:18
> > To: Tapestry users
> > Subject: Re: [ANNOUNCE] Tapestry 5.1.0.2
> >
> > On Fri, Apr 3, 2009 at 11:05 AM, Blower, Andy
> > <An...@proquest.co.uk> wrote:
> >
> > > I'm having two issues stopping me with 5.1.0.2, the first I mailed
> > the list about a few days ago but I've had no response so far.
> > (http://www.nabble.com/T5.1.0.2-problem-with-TestableRequestImpl-
> > td22805378.html)
> >
> > Yep... i must admit that i too have run into this, also with tests for
> > the chenillekit-access module, fortunately I've switched to use
> > selenium before,  but you're right, there's an issue with PageTester.
> >
> > > What is this stax2 thingy and why does Tapestry 5.1 need it? Does
> > anyone using maven get this problem? Is there anything we can do to fix
> > this?
> >
> > stax2 use new api for XML processing which 5.1 dom processing
> > leverage. I don't had any issue i remember and using maven 2.0.9 here
> >
> > --
> > Massimo
> > http://meridio.blogspot.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: [ANNOUNCE] Tapestry 5.1.0.2

Posted by "Filip S. Adamsen" <fs...@fsadev.com>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Andy,

Javassist is in the JBoss Maven 2 repository:
http://repository.jboss.com/maven2/javassist/javassist/

At least that's where I get it from. :)

/Filip

On 2009-04-03 11:38, Blower, Andy wrote:
> Regarding the dependencies, I also have an issue that I'd not spotted before. Ivy can't find javassist-3.9.0.GA.jar in the maven2 repositories. I can't find it with a browser either. (e.g. http://repo1.maven.org/maven2/javassist/javassist/) So, that's breaking my build too.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iQEcBAEBAgAGBQJJ1eogAAoJEEfiH7PpjaMnJO0IAJTUZknrTokFBroyv+TqLRc4
lbK/I8rKV+Qt9/Rn/yYHNoUEmc0ZDidoPizC7Kw0PAJ3psmlIQKWUDeehXsN6c4X
yfiSeddSjZwxteg73Uq0KfSDhdLK+esb4ReuAGpAV+iUdKhs6Mnw5zX06BHE81d7
5VxBMBtyFnzLW0cetdKwhDSrMTphg+kEGfH2pRlqVQxOZE/Erm45ENDs8NKITITT
FvAvPKtPG+62OQdcN06reS8resdzLIp87Y9pRyuqNBK0bPM6nBvjXuJ93tgAA4gJ
6rlkbgedwMSQq/+EfTPmER7Qc6p6AJANurR4XlX0oTdj35CJcoXYhSDdgzEWZ7k=
=Mpj7
-----END PGP SIGNATURE-----

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


Re: [ANNOUNCE] Tapestry 5.1.0.2

Posted by Robin Helgelin <lo...@gmail.com>.
On Fri, Apr 3, 2009 at 11:38, Blower, Andy <An...@proquest.co.uk> wrote:
> So, is Maven ignoring the sha1 problem or is Ivy miscalculating this one for some reason?

Plain command line Maven is also having this problem, however, it
doesn't block the build.

-- 
        regards,
        Robin

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


RE: [ANNOUNCE] Tapestry 5.1.0.2

Posted by "Blower, Andy" <An...@proquest.co.uk>.
So, is Maven ignoring the sha1 problem or is Ivy miscalculating this one for some reason?

Regarding the dependencies, I also have an issue that I'd not spotted before. Ivy can't find javassist-3.9.0.GA.jar in the maven2 repositories. I can't find it with a browser either. (e.g. http://repo1.maven.org/maven2/javassist/javassist/) So, that's breaking my build too.


> -----Original Message-----
> From: Massimo Lusetti [mailto:mlusetti@gmail.com]
> Sent: 03 April 2009 10:18
> To: Tapestry users
> Subject: Re: [ANNOUNCE] Tapestry 5.1.0.2
> 
> On Fri, Apr 3, 2009 at 11:05 AM, Blower, Andy
> <An...@proquest.co.uk> wrote:
> 
> > I'm having two issues stopping me with 5.1.0.2, the first I mailed
> the list about a few days ago but I've had no response so far.
> (http://www.nabble.com/T5.1.0.2-problem-with-TestableRequestImpl-
> td22805378.html)
> 
> Yep... i must admit that i too have run into this, also with tests for
> the chenillekit-access module, fortunately I've switched to use
> selenium before,  but you're right, there's an issue with PageTester.
> 
> > What is this stax2 thingy and why does Tapestry 5.1 need it? Does
> anyone using maven get this problem? Is there anything we can do to fix
> this?
> 
> stax2 use new api for XML processing which 5.1 dom processing
> leverage. I don't had any issue i remember and using maven 2.0.9 here
> 
> --
> Massimo
> http://meridio.blogspot.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 



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


Re: [ANNOUNCE] Tapestry 5.1.0.2

Posted by Massimo Lusetti <ml...@gmail.com>.
On Fri, Apr 3, 2009 at 11:05 AM, Blower, Andy
<An...@proquest.co.uk> wrote:

> I'm having two issues stopping me with 5.1.0.2, the first I mailed the list about a few days ago but I've had no response so far. (http://www.nabble.com/T5.1.0.2-problem-with-TestableRequestImpl-td22805378.html)

Yep... i must admit that i too have run into this, also with tests for
the chenillekit-access module, fortunately I've switched to use
selenium before,  but you're right, there's an issue with PageTester.

> What is this stax2 thingy and why does Tapestry 5.1 need it? Does anyone using maven get this problem? Is there anything we can do to fix this?

stax2 use new api for XML processing which 5.1 dom processing
leverage. I don't had any issue i remember and using maven 2.0.9 here

-- 
Massimo
http://meridio.blogspot.com

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


RE: [ANNOUNCE] Tapestry 5.1.0.2

Posted by "Blower, Andy" <An...@proquest.co.uk>.
I'm having two issues stopping me with 5.1.0.2, the first I mailed the list about a few days ago but I've had no response so far. (http://www.nabble.com/T5.1.0.2-problem-with-TestableRequestImpl-td22805378.html)

The second issue I've not raised before because we always have problems with the T5 rsync repository, Ivy doesn't resolve dependencies from there so I always have to manually install dependencies locally until a release is pushed to the public maven repositories. When I was doing this I had a problem with the stax2 dependency finding an invalid sha1 checksum, unfortunately I'm still getting this now that T5.1.0.2 is being resolved and retrieved by Ivy.

[ivy:install]   public: downloading http://repo1.maven.org/maven2/org/codehaus/woodstox/stax2-api/3.0.1/stax2-api-3.0.1.jar.sha1
[ivy:install] .. (0kB)
[ivy:install] WARN:     [FAILED     ] org.codehaus.woodstox#stax2-api;3.0.1!stax2-api.jar: invalid sha1: expected=88985bfab2394cf8e56fcbd97cd44f7cac7bf8ca computed=12393455d7d25eab09bb9b2043b6df13406ec70d (3261ms)

What is this stax2 thingy and why does Tapestry 5.1 need it? Does anyone using maven get this problem? Is there anything we can do to fix this?

Thanks,

Andy

> -----Original Message-----
> From: Howard Lewis Ship [mailto:hlship@gmail.com]
> Sent: 03 April 2009 00:42
> To: Tapestry users
> Subject: [ANNOUNCE] Tapestry 5.1.0.2
> 
> The latest alpha release of Tapestry 5.1, Tapestry 5.1.0.2, is now
> available for download and via Maven.
> 
> Please download it and give it a try; we're especially interested in
> any problems related to the upgrade from 5.0.18 to 5.1.0.2.
> 
> Big features added in 5.1.0.2 include automatic combining of
> JavaScript files, a new client-side JavaScript console based on
> Blackbird, and the ability to have a single Ajax response update
> multiple client-side Zones.
> 
> We are now stabilizing Tapestry 5.1 for a beta release and, if all
> goes according to plan, a short period until a stable 5.1 release.
> 
> --
> Howard M. Lewis Ship
> 
> Creator Apache Tapestry and Apache HiveMind
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 



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


Re: [ANNOUNCE] Tapestry 5.1.0.2 - "failed due to recursion"

Posted by Howard Lewis Ship <hl...@gmail.com>.
You should be seeing more detailed logging in your console that will
be most helpful in determining what's going on here.

On Fri, Apr 3, 2009 at 6:53 AM, Andreas Pardeike <ap...@fsys.se> wrote:
> Hi,
>
> Maybe I got this pinpoint a bit more. My question is: how do I customize
> the template locator so it works with 5.1.0.2 ?
>
> I have:
>
>> // 1) we configure the factory that generates the HTMLPageLocator. this
>> allows us to define that it will be constructed with two input parameters
>> hat it needs: contextRoot and a resolver (we need this build method because
>> the first parameter in the constructor has a method call)
>> //
>> public PageTemplateLocator buildHTMLPageLocator(@ContextProvider
>> AssetFactory contextAssetFactory, ComponentClassResolver
>> componentClassResolver)
>> {
>>  return new HTMLTemplateLocator(contextAssetFactory.getRootResource(),
>> componentClassResolver, productionMode);
>> }
>>
>> // 2) we overwrite the original service with our new implementation
>> //
>> public static void
>> contributeAliasOverrides(@InjectService("HTMLPageLocator")
>> PageTemplateLocator locator,
>> Configuration<AliasContribution<PageTemplateLocator>> configuration)
>> {
>>  configuration.add(AliasContribution.create(PageTemplateLocator.class,
>> locator));
>> }
>
> and
>
>> public class HTMLTemplateLocator implements PageTemplateLocator
>> {
>>  private final Resource _contextRoot;
>>  private final ComponentClassResolver _resolver;
>>
>>  public HTMLTemplateLocator(Resource contextRoot, ComponentClassResolver
>> resolver)
>>  {
>>    _contextRoot = contextRoot;
>>    _resolver = resolver;
>>  }
>>
>>  public Resource findPageTemplateResource(ComponentModel model, Locale
>> locale)
>>  {
>>    String className = model.getComponentClassName();
>>    if(!className.contains(".pages."))
>>      return null;
>>
>>    String logicalName =
>> _resolver.resolvePageClassNameToPageName(className);
>>    int slashx = logicalName.lastIndexOf('/');
>>    if(slashx > 0)
>>    {
>>      String simpleClassName = InternalUtils.lastTerm(className);
>>      logicalName = logicalName.substring(0, slashx + 1) + simpleClassName;
>>    }
>>
>>    String path = format("pages/%s.%s", logicalName,
>> "html"/*InternalConstants.TEMPLATE_EXTENSION*/);
>>    return _contextRoot.forFile(path).forLocale(locale);
>>  }
>> }
>
> I have commented out all other contributions, services and custom code in my
> AppModules except for the template locator overwrite. So it seems that this
> one is the culprit for the recursion exception I get with 5.1.0.2
>
> /Andreas
>
>
>
> On 3 apr 2009, at 13.28, Andreas Pardeike wrote:
>
>> Unfortunately, one of my key concepts in a big application I am developing
>> stops working in the step from 5.1.0.1 -> 5.1.0.2. Our application has all
>> page
>> classes inside a subfolder, thus our internal tapestry pages all look like
>>
>> http://hostname/klubb/page
>>
>> and there is one tapestry page 'dynamic' that handles all requests without
>> the prefixing /klubb :
>>
>> http://hostname/something/else.html
>>
>> where it looks up '/something/else.html' from a database. The
>> configuration
>> for this is set up like this:
>>
>>
>> public void contributeHttpServletRequestHandler(
>>           OrderedConfiguration<HttpServletRequestFilter> configuration,
>>           Global global,
>>           ClubConfiguration clubconf)
>> {
>>  configuration.add("CustomContenHandler", new CustomContentHandler(global,
>> clubconf),
>>                      "before:IgnoredPaths");
>> }
>>
>>
>> and the corresponding class:
>>
>>
>> public class CustomContentHandler implements HttpServletRequestFilter
>> {
>>  private static String contentType;
>>
>>  private final Global _global;
>>  private final ClubConfiguration _configuration;
>>
>>  private final Pattern clubAssetsMatcher;
>>
>>  private enum RequestType
>>  {
>>   START_PAGE, DYNAMIC_PAGE, TAPESTRY_ACTION
>>  };
>>
>>  // this class is used to overwrite getServletPath for inserting our own
>>  // t5
>>  // page at the beginning of the path
>>  //
>>  private class MyHTTPServletRequest extends HttpServletRequestWrapper
>>  {
>>   private final RequestType _type;
>>
>>   public MyHTTPServletRequest(HttpServletRequest httpServletRequest,
>> RequestType type)
>>   {
>>     super(httpServletRequest);
>>     _type = type;
>>   }
>>
>>   @Override
>>   public String getServletPath()
>>   {
>>     String path = super.getServletPath();
>>
>>     if(_type == RequestType.START_PAGE)
>>     {
>>       if(path.equals("/"))
>>         path = Constants.STARTPAGE;
>>       return path;
>>     }
>>
>>     if(_type == RequestType.DYNAMIC_PAGE)
>>       return Constants.DYNAMIC_CLUB_URL + path.toLowerCase();
>>
>>     if(_type == RequestType.TAPESTRY_ACTION)
>>       return Constants.TAPESTRY_ACTION_PREFIX + path;
>>
>>     return path;
>>   }
>>  }
>>
>>  public CustomContentHandler(final Global global, final ClubConfiguration
>> configuration)
>>  {
>>   _global = global;
>>   _configuration = configuration;
>>
>>   String regExp = ".*\\.(";
>>
>>   Iterator<String> iterator = getSuffixes().keySet().iterator();
>>   while(iterator.hasNext())
>>   {
>>     regExp = regExp + (getSuffixes().size() == 0 ? "" : "|") +
>> iterator.next();
>>
>>   }
>>   clubAssetsMatcher = Pattern.compile(regExp + ")");
>>  }
>>
>>  public boolean service(HttpServletRequest request, HttpServletResponse
>> response, HttpServletRequestHandler handler) throws IOException
>>  {
>>   String path = request.getServletPath().toLowerCase();
>>
>>   if(path.equals("/") || path.startsWith(Constants.TAPESTRY_ACTION_PREFIX
>> + "/"))
>>   {
>>     MyHTTPServletRequest newRequest = new MyHTTPServletRequest(request,
>> RequestType.START_PAGE);
>>     return handler.service(newRequest, response);
>>   }
>>
>>   if(path.startsWith(Constants.PRIVATE_ASSETS_PREFIX + "/"))
>>     return handler.service(request, response);
>>
>>   if(path.startsWith(Constants.PRIVATE_DYNAMIC_ACTION_PREFIX) ||
>> path.startsWith(Constants.PRIVATE_STARTPAGE_ACTION_PREFIX))
>>   {
>>     MyHTTPServletRequest newRequest = new MyHTTPServletRequest(request,
>> RequestType.TAPESTRY_ACTION);
>>     return handler.service(newRequest, response);
>>   }
>>
>>   int club = _configuration.getClubNumberFromRequest(request);
>>
>>   Map<String,Object> keys = new HashMap<String,Object>();
>>   keys.put(Dynamic.CLUB_PROPERTY, club);
>>   keys.put(Dynamic.PATH_PROPERTY, path);
>>   keys.put(Dynamic.PART_PROPERTY, "");
>>
>>   Expression condition = ExpressionFactory.matchAllDbExp(keys,
>> Expression.EQUAL_TO);
>>   SelectQuery query = new SelectQuery(Dynamic.class, condition);
>>   query.setName("#" + club + ":" + path + ":");
>>   query.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
>>   List<Dynamic> rows =
>> _global.getReadOnlyObjectContext().performQuery(query);
>>   Dynamic dynamic = rows.size() == 1 ? rows.get(0) : null;
>>
>>   // pass handling if this is a private asset (i.e. images that we
>>   // use in our templates)
>>   //
>>   Matcher match = clubAssetsMatcher.matcher(path);
>>   if(match.matches())
>>   {
>>     contentType = getSuffixes().get(match.group(1));
>>     if(dynamic != null)
>>     {
>>       response.setContentType(contentType);
>>       ServletOutputStream out = response.getOutputStream();
>>       out.write(dynamic.getData());
>>       out.close();
>>
>>       return true;
>>     }
>>
>>     return false;
>>   }
>>
>>   // test for customer pages but exclude our own pages
>>   //
>>   if(dynamic != null)
>>   {
>>     MyHTTPServletRequest newRequest = new MyHTTPServletRequest(request,
>> RequestType.DYNAMIC_PAGE);
>>     return handler.service(newRequest, response);
>>   }
>>
>>   response.sendError(404);
>>   return true;
>>  }
>>
>>  public Map<String,String> getSuffixes()
>>  {
>>   Map<String,String> suffixes = new HashMap<String,String>();
>>
>>   suffixes.put("ico", "image/x-icon");
>>   suffixes.put("css", "text/css");
>>   suffixes.put("js", "text/javascript");
>>   suffixes.put("gif", "image/gif");
>>   suffixes.put("jpg", "image/jpeg");
>>   suffixes.put("jpeg", "image/jpeg");
>>   suffixes.put("png", "image/png");
>>   suffixes.put("tif", "mage/tif");
>>   suffixes.put("tiff", "mage/tiff");
>>   suffixes.put("pdf", "application/pdf");
>>   suffixes.put("xml", "text/xml");
>>   suffixes.put("doc", "application/msword");
>>   suffixes.put("docx", "application/msword");
>>   suffixes.put("xsl", "application/x-excel");
>>   suffixes.put("txt", "text/plain");
>>   suffixes.put("gzip", "application/x-gzip");
>>   suffixes.put("zip", "application/zip");
>>   suffixes.put("tar", "application/x-tar");
>>   suffixes.put("cab", "application/octet-stream");
>>   suffixes.put("dmg", "application/octet-stream");
>>   suffixes.put("tgz", "application/x-tar");
>>   suffixes.put("rar", "application/x-rar-compressed");
>>   suffixes.put("exe", "application/octet-stream");
>>   suffixes.put("mp3", "application/octet-stream");
>>   suffixes.put("wav", "application/octet-stream");
>>   suffixes.put("aac", "application/octet-stream");
>>   suffixes.put("ra", "application/octet-stream");
>>   suffixes.put("wma", "application/octet-stream");
>>   suffixes.put("mov", "application/octet-stream");
>>   suffixes.put("mp4", "application/octet-stream");
>>   suffixes.put("wmv", "application/octet-stream");
>>   suffixes.put("avi", "application/octet-stream");
>>
>>   return suffixes;
>>  }
>> }
>>
>>
>> The stack trace is here:
>>
>> java.lang.RuntimeException: Exception constructing service
>> 'HttpServletRequestHandler': Construction of service
>> 'HttpServletRequestHandler' has failed due to recursion: the service depends
>> on itself in some way. Please check
>> org.apache.tapestry5.services.TapestryModule.buildHttpServletRequestHandler(Logger,
>> List, RequestHandler, String, SessionPersistedObjectAnalyzer) (at
>> TapestryModule.java:1222) for references to another service that is itself
>> dependent on service 'HttpServletRequestHandler'.
>>        at
>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:78)
>>        at
>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:57)
>>        at
>> $HttpServletRequestHandler_1206bab64a5.delegate($HttpServletRequestHandler_1206bab64a5.java)
>>        at
>> $HttpServletRequestHandler_1206bab64a5.service($HttpServletRequestHandler_1206bab64a5.java)
>>        at
>> org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
>>        at
>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
>>        at
>> org.apache.cayenne.conf.WebApplicationContextFilter.doFilter(WebApplicationContextFilter.java:90)
>>        at
>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
>>        at
>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
>>        at
>> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>>        at
>> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>>        at
>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
>>        at
>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404)
>>        at
>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
>>        at org.mortbay.jetty.Server.handle(Server.java:324)
>>        at
>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
>>        at
>> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
>>        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
>>        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
>>        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
>>        at
>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
>>        at
>> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
>> Caused by: org.apache.tapestry5.ioc.internal.OperationException:
>> Construction of service 'HttpServletRequestHandler' has failed due to
>> recursion: the service depends on itself in some way. Please check
>> org.apache.tapestry5.services.TapestryModule.buildHttpServletRequestHandler(Logger,
>> List, RequestHandler, String, SessionPersistedObjectAnalyzer) (at
>> TapestryModule.java:1222) for references to another service that is itself
>> dependent on service 'HttpServletRequestHandler'.
>>        at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:90)
>>        at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>>        at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
>>        at
>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
>>        at
>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:68)
>>        ... 21 more
>> Caused by: java.lang.IllegalStateException: Construction of service
>> 'HttpServletRequestHandler' has failed due to recursion: the service depends
>> on itself in some way. Please check
>> org.apache.tapestry5.services.TapestryModule.buildHttpServletRequestHandler(Logger,
>> List, RequestHandler, String, SessionPersistedObjectAnalyzer) (at
>> TapestryModule.java:1222) for references to another service that is itself
>> dependent on service 'HttpServletRequestHandler'.
>>        at
>> org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:52)
>>        at
>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
>>        at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>>        ... 25 more
>>
>>
>> On 3 apr 2009, at 01.41, Howard Lewis Ship wrote:
>>
>>> The latest alpha release of Tapestry 5.1, Tapestry 5.1.0.2, is now
>>> available for download and via Maven.
>>>
>>> Please download it and give it a try; we're especially interested in
>>> any problems related to the upgrade from 5.0.18 to 5.1.0.2.
>>>
>>> Big features added in 5.1.0.2 include automatic combining of
>>> JavaScript files, a new client-side JavaScript console based on
>>> Blackbird, and the ability to have a single Ajax response update
>>> multiple client-side Zones.
>>>
>>> We are now stabilizing Tapestry 5.1 for a beta release and, if all
>>> goes according to plan, a short period until a stable 5.1 release.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

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


RE: Problem using tapx-datefield

Posted by Blšták Peter <pe...@softec.sk>.
Thanks for guide.

I did not say, that I use RunJettyRun using simple Java project in Eclipse and project classes and libraries are not copied to <context_root>/WEB-INF/(lib|classes) (they are only in RunJettyRun run configuration classpath).

So, adding VM directive 
-Dorg.mortbay.jetty.webapp.parentLoaderPriority=true
to run configuration solved the problem.

P.

________________________________________
From: Howard Lewis Ship [hlship@gmail.com]
Sent: Friday, April 03, 2009 6:04 PM
To: Tapestry users
Subject: Re: Problem using tapx-datefield

Looks like you have a classpath problem, probably two copies of
tapestry-ioc.jar in two different places (and two different class
loaders).

2009/4/3 Blšták Peter <pe...@softec.sk>:
> Hi,
>
> I have tried tapx-datefield module downloaded from formos snapshot repository.
> Since I added downloaded jar (this one tapx-datefield-1.0.0-20090403.121507-20.jar) to application classpath I got this error (bellow).
>
> I use jetty, jre 1.6.0_11-b03 and have tried using tapestry-5.1.0.1 and 5.1.0.2.
>
> Tapx-datefield sources looks OK.
>
> Any idea?
>
> Thanks
>
> P.
>
>
>
> [INFO] mortbay.log jetty-6.1.6
> [INFO] ioc.RegistryBuilder Adding module definition for class org.apache.tapestry5.ioc.services.TapestryIOCModule
> [INFO] ioc.RegistryBuilder Adding module definition for class com.formos.tapestry.tapx.datefield.services.DateFieldModule
> [ERROR] mortbay.log failed app
> java.lang.RuntimeException: Exception loading module(s) from manifest jar:file:/C:/.../tapx-datefield-1.0.0-SNAPSHOT.jar!/META-INF/MANIFEST.MF: Failure loading Tapestry IoC module class com.formos.tapestry.tapx.datefield.services.DateFieldModule: Service contribution method com.formos.tapestry.tapx.datefield.services.DateFieldModule.contributeBeanBlockOverrideSource(Configuration) does not contain a parameter of type Configuration, OrderedConfiguration or MappedConfiguration. This parameter is how the method make contributions into the service's configuration.
>        at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:123)
>        at org.apache.tapestry5.ioc.IOCUtilities.addDefaultModules(IOCUtilities.java:77)
>        at org.apache.tapestry5.internal.TapestryAppInitializer.<init>(TapestryAppInitializer.java:85)
>        at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:74)
>        at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
>        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>        at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:589)
>        at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
>        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1216)
>        at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:509)
>        at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:447)
>        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
>        at org.mortbay.jetty.Server.doStart(Server.java:222)
>        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>        at runjettyrun.Bootstrap.main(Bootstrap.java:76)
> Caused by: java.lang.RuntimeException: Failure loading Tapestry IoC module class com.formos.tapestry.tapx.datefield.services.DateFieldModule: Service contribution method com.formos.tapestry.tapx.datefield.services.DateFieldModule.contributeBeanBlockOverrideSource(Configuration) does not contain a parameter of type Configuration, OrderedConfiguration or MappedConfiguration. This parameter is how the method make contributions into the service's configuration.
>        at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:155)
>        at org.apache.tapestry5.ioc.IOCUtilities.addModulesInList(IOCUtilities.java:137)
>        at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:107)
>        ... 15 more
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>



--
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

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


Re: Problem using tapx-datefield

Posted by Howard Lewis Ship <hl...@gmail.com>.
Looks like you have a classpath problem, probably two copies of
tapestry-ioc.jar in two different places (and two different class
loaders).

2009/4/3 Blšták Peter <pe...@softec.sk>:
> Hi,
>
> I have tried tapx-datefield module downloaded from formos snapshot repository.
> Since I added downloaded jar (this one tapx-datefield-1.0.0-20090403.121507-20.jar) to application classpath I got this error (bellow).
>
> I use jetty, jre 1.6.0_11-b03 and have tried using tapestry-5.1.0.1 and 5.1.0.2.
>
> Tapx-datefield sources looks OK.
>
> Any idea?
>
> Thanks
>
> P.
>
>
>
> [INFO] mortbay.log jetty-6.1.6
> [INFO] ioc.RegistryBuilder Adding module definition for class org.apache.tapestry5.ioc.services.TapestryIOCModule
> [INFO] ioc.RegistryBuilder Adding module definition for class com.formos.tapestry.tapx.datefield.services.DateFieldModule
> [ERROR] mortbay.log failed app
> java.lang.RuntimeException: Exception loading module(s) from manifest jar:file:/C:/.../tapx-datefield-1.0.0-SNAPSHOT.jar!/META-INF/MANIFEST.MF: Failure loading Tapestry IoC module class com.formos.tapestry.tapx.datefield.services.DateFieldModule: Service contribution method com.formos.tapestry.tapx.datefield.services.DateFieldModule.contributeBeanBlockOverrideSource(Configuration) does not contain a parameter of type Configuration, OrderedConfiguration or MappedConfiguration. This parameter is how the method make contributions into the service's configuration.
>        at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:123)
>        at org.apache.tapestry5.ioc.IOCUtilities.addDefaultModules(IOCUtilities.java:77)
>        at org.apache.tapestry5.internal.TapestryAppInitializer.<init>(TapestryAppInitializer.java:85)
>        at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:74)
>        at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
>        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>        at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:589)
>        at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
>        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1216)
>        at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:509)
>        at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:447)
>        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
>        at org.mortbay.jetty.Server.doStart(Server.java:222)
>        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>        at runjettyrun.Bootstrap.main(Bootstrap.java:76)
> Caused by: java.lang.RuntimeException: Failure loading Tapestry IoC module class com.formos.tapestry.tapx.datefield.services.DateFieldModule: Service contribution method com.formos.tapestry.tapx.datefield.services.DateFieldModule.contributeBeanBlockOverrideSource(Configuration) does not contain a parameter of type Configuration, OrderedConfiguration or MappedConfiguration. This parameter is how the method make contributions into the service's configuration.
>        at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:155)
>        at org.apache.tapestry5.ioc.IOCUtilities.addModulesInList(IOCUtilities.java:137)
>        at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:107)
>        ... 15 more
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

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


Problem using tapx-datefield

Posted by Blšták Peter <pe...@softec.sk>.
Hi,

I have tried tapx-datefield module downloaded from formos snapshot repository.
Since I added downloaded jar (this one tapx-datefield-1.0.0-20090403.121507-20.jar) to application classpath I got this error (bellow).

I use jetty, jre 1.6.0_11-b03 and have tried using tapestry-5.1.0.1 and 5.1.0.2.

Tapx-datefield sources looks OK.

Any idea? 

Thanks

P.



[INFO] mortbay.log jetty-6.1.6
[INFO] ioc.RegistryBuilder Adding module definition for class org.apache.tapestry5.ioc.services.TapestryIOCModule
[INFO] ioc.RegistryBuilder Adding module definition for class com.formos.tapestry.tapx.datefield.services.DateFieldModule
[ERROR] mortbay.log failed app
java.lang.RuntimeException: Exception loading module(s) from manifest jar:file:/C:/.../tapx-datefield-1.0.0-SNAPSHOT.jar!/META-INF/MANIFEST.MF: Failure loading Tapestry IoC module class com.formos.tapestry.tapx.datefield.services.DateFieldModule: Service contribution method com.formos.tapestry.tapx.datefield.services.DateFieldModule.contributeBeanBlockOverrideSource(Configuration) does not contain a parameter of type Configuration, OrderedConfiguration or MappedConfiguration. This parameter is how the method make contributions into the service's configuration.
	at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:123)
	at org.apache.tapestry5.ioc.IOCUtilities.addDefaultModules(IOCUtilities.java:77)
	at org.apache.tapestry5.internal.TapestryAppInitializer.<init>(TapestryAppInitializer.java:85)
	at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:74)
	at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
	at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:589)
	at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
	at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1216)
	at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:509)
	at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:447)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
	at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
	at org.mortbay.jetty.Server.doStart(Server.java:222)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
	at runjettyrun.Bootstrap.main(Bootstrap.java:76)
Caused by: java.lang.RuntimeException: Failure loading Tapestry IoC module class com.formos.tapestry.tapx.datefield.services.DateFieldModule: Service contribution method com.formos.tapestry.tapx.datefield.services.DateFieldModule.contributeBeanBlockOverrideSource(Configuration) does not contain a parameter of type Configuration, OrderedConfiguration or MappedConfiguration. This parameter is how the method make contributions into the service's configuration.
	at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:155)
	at org.apache.tapestry5.ioc.IOCUtilities.addModulesInList(IOCUtilities.java:137)
	at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:107)
	... 15 more

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


Re: [ANNOUNCE] Tapestry 5.1.0.2 - "failed due to recursion"

Posted by Andreas Pardeike <ap...@fsys.se>.
Hi,

Maybe I got this pinpoint a bit more. My question is: how do I customize
the template locator so it works with 5.1.0.2 ?

I have:

> // 1) we configure the factory that generates the HTMLPageLocator.  
> this allows us to define that it will be constructed with two input  
> parameters hat it needs: contextRoot and a resolver (we need this  
> build method because the first parameter in the constructor has a  
> method call)
> //
> public PageTemplateLocator buildHTMLPageLocator(@ContextProvider  
> AssetFactory contextAssetFactory, ComponentClassResolver  
> componentClassResolver)
> {
>   return new  
> HTMLTemplateLocator(contextAssetFactory.getRootResource(),  
> componentClassResolver, productionMode);
> }
> 	
> // 2) we overwrite the original service with our new implementation
> //
> public static void  
> contributeAliasOverrides(@InjectService("HTMLPageLocator")  
> PageTemplateLocator locator,  
> Configuration<AliasContribution<PageTemplateLocator>> configuration)
> {
>    
> configuration 
> .add(AliasContribution.create(PageTemplateLocator.class, locator));
> }

and

> public class HTMLTemplateLocator implements PageTemplateLocator
> {
>   private final Resource _contextRoot;
>   private final ComponentClassResolver _resolver;
>
>   public HTMLTemplateLocator(Resource contextRoot,  
> ComponentClassResolver resolver)
>   {
>     _contextRoot = contextRoot;
>     _resolver = resolver;
>   }
>
>   public Resource findPageTemplateResource(ComponentModel model,  
> Locale locale)
>   {
>     String className = model.getComponentClassName();
>     if(!className.contains(".pages."))
>       return null;
>
>     String logicalName =  
> _resolver.resolvePageClassNameToPageName(className);
>     int slashx = logicalName.lastIndexOf('/');
>     if(slashx > 0)
>     {
>       String simpleClassName = InternalUtils.lastTerm(className);
>       logicalName = logicalName.substring(0, slashx + 1) +  
> simpleClassName;
>     }
>
>     String path = format("pages/%s.%s", logicalName, "html"/ 
> *InternalConstants.TEMPLATE_EXTENSION*/);
>     return _contextRoot.forFile(path).forLocale(locale);
>   }
> }

I have commented out all other contributions, services and custom code  
in my
AppModules except for the template locator overwrite. So it seems that  
this
one is the culprit for the recursion exception I get with 5.1.0.2

/Andreas



On 3 apr 2009, at 13.28, Andreas Pardeike wrote:

> Unfortunately, one of my key concepts in a big application I am  
> developing
> stops working in the step from 5.1.0.1 -> 5.1.0.2. Our application  
> has all page
> classes inside a subfolder, thus our internal tapestry pages all  
> look like
>
> http://hostname/klubb/page
>
> and there is one tapestry page 'dynamic' that handles all requests  
> without
> the prefixing /klubb :
>
> http://hostname/something/else.html
>
> where it looks up '/something/else.html' from a database. The  
> configuration
> for this is set up like this:
>
>
> public void contributeHttpServletRequestHandler(
>            OrderedConfiguration<HttpServletRequestFilter>  
> configuration,
>            Global global,
>            ClubConfiguration clubconf)
> {
>  configuration.add("CustomContenHandler", new  
> CustomContentHandler(global, clubconf),
>                       "before:IgnoredPaths");
> }
>
>
> and the corresponding class:
>
>
> public class CustomContentHandler implements HttpServletRequestFilter
> {
>  private static String contentType;
>
>  private final Global _global;
>  private final ClubConfiguration _configuration;
>
>  private final Pattern clubAssetsMatcher;
>
>  private enum RequestType
>  {
>    START_PAGE, DYNAMIC_PAGE, TAPESTRY_ACTION
>  };
>
>  // this class is used to overwrite getServletPath for inserting our  
> own
>  // t5
>  // page at the beginning of the path
>  //
>  private class MyHTTPServletRequest extends HttpServletRequestWrapper
>  {
>    private final RequestType _type;
>
>    public MyHTTPServletRequest(HttpServletRequest  
> httpServletRequest, RequestType type)
>    {
>      super(httpServletRequest);
>      _type = type;
>    }
>
>    @Override
>    public String getServletPath()
>    {
>      String path = super.getServletPath();
>
>      if(_type == RequestType.START_PAGE)
>      {
>        if(path.equals("/"))
>          path = Constants.STARTPAGE;
>        return path;
>      }
>
>      if(_type == RequestType.DYNAMIC_PAGE)
>        return Constants.DYNAMIC_CLUB_URL + path.toLowerCase();
>
>      if(_type == RequestType.TAPESTRY_ACTION)
>        return Constants.TAPESTRY_ACTION_PREFIX + path;
>
>      return path;
>    }
>  }
>
>  public CustomContentHandler(final Global global, final  
> ClubConfiguration configuration)
>  {
>    _global = global;
>    _configuration = configuration;
>
>    String regExp = ".*\\.(";
>
>    Iterator<String> iterator = getSuffixes().keySet().iterator();
>    while(iterator.hasNext())
>    {
>      regExp = regExp + (getSuffixes().size() == 0 ? "" : "|") +  
> iterator.next();
>
>    }
>    clubAssetsMatcher = Pattern.compile(regExp + ")");
>  }
>
>  public boolean service(HttpServletRequest request,  
> HttpServletResponse response, HttpServletRequestHandler handler)  
> throws IOException
>  {
>    String path = request.getServletPath().toLowerCase();
>
>    if(path.equals("/") ||  
> path.startsWith(Constants.TAPESTRY_ACTION_PREFIX + "/"))
>    {
>      MyHTTPServletRequest newRequest = new  
> MyHTTPServletRequest(request, RequestType.START_PAGE);
>      return handler.service(newRequest, response);
>    }
>
>    if(path.startsWith(Constants.PRIVATE_ASSETS_PREFIX + "/"))
>      return handler.service(request, response);
>
>    if(path.startsWith(Constants.PRIVATE_DYNAMIC_ACTION_PREFIX) ||  
> path.startsWith(Constants.PRIVATE_STARTPAGE_ACTION_PREFIX))
>    {
>      MyHTTPServletRequest newRequest = new  
> MyHTTPServletRequest(request, RequestType.TAPESTRY_ACTION);
>      return handler.service(newRequest, response);
>    }
>
>    int club = _configuration.getClubNumberFromRequest(request);
>
>    Map<String,Object> keys = new HashMap<String,Object>();
>    keys.put(Dynamic.CLUB_PROPERTY, club);
>    keys.put(Dynamic.PATH_PROPERTY, path);
>    keys.put(Dynamic.PART_PROPERTY, "");
>
>    Expression condition = ExpressionFactory.matchAllDbExp(keys,  
> Expression.EQUAL_TO);
>    SelectQuery query = new SelectQuery(Dynamic.class, condition);
>    query.setName("#" + club + ":" + path + ":");
>    query.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
>    List<Dynamic> rows =  
> _global.getReadOnlyObjectContext().performQuery(query);
>    Dynamic dynamic = rows.size() == 1 ? rows.get(0) : null;
>
>    // pass handling if this is a private asset (i.e. images that we
>    // use in our templates)
>    //
>    Matcher match = clubAssetsMatcher.matcher(path);
>    if(match.matches())
>    {
>      contentType = getSuffixes().get(match.group(1));
>      if(dynamic != null)
>      {
>        response.setContentType(contentType);
>        ServletOutputStream out = response.getOutputStream();
>        out.write(dynamic.getData());
>        out.close();
>
>        return true;
>      }
>
>      return false;
>    }
>
>    // test for customer pages but exclude our own pages
>    //
>    if(dynamic != null)
>    {
>      MyHTTPServletRequest newRequest = new  
> MyHTTPServletRequest(request, RequestType.DYNAMIC_PAGE);
>      return handler.service(newRequest, response);
>    }
>
>    response.sendError(404);
>    return true;
>  }
>
>  public Map<String,String> getSuffixes()
>  {
>    Map<String,String> suffixes = new HashMap<String,String>();
>
>    suffixes.put("ico", "image/x-icon");
>    suffixes.put("css", "text/css");
>    suffixes.put("js", "text/javascript");
>    suffixes.put("gif", "image/gif");
>    suffixes.put("jpg", "image/jpeg");
>    suffixes.put("jpeg", "image/jpeg");
>    suffixes.put("png", "image/png");
>    suffixes.put("tif", "mage/tif");
>    suffixes.put("tiff", "mage/tiff");
>    suffixes.put("pdf", "application/pdf");
>    suffixes.put("xml", "text/xml");
>    suffixes.put("doc", "application/msword");
>    suffixes.put("docx", "application/msword");
>    suffixes.put("xsl", "application/x-excel");
>    suffixes.put("txt", "text/plain");
>    suffixes.put("gzip", "application/x-gzip");
>    suffixes.put("zip", "application/zip");
>    suffixes.put("tar", "application/x-tar");
>    suffixes.put("cab", "application/octet-stream");
>    suffixes.put("dmg", "application/octet-stream");
>    suffixes.put("tgz", "application/x-tar");
>    suffixes.put("rar", "application/x-rar-compressed");
>    suffixes.put("exe", "application/octet-stream");
>    suffixes.put("mp3", "application/octet-stream");
>    suffixes.put("wav", "application/octet-stream");
>    suffixes.put("aac", "application/octet-stream");
>    suffixes.put("ra", "application/octet-stream");
>    suffixes.put("wma", "application/octet-stream");
>    suffixes.put("mov", "application/octet-stream");
>    suffixes.put("mp4", "application/octet-stream");
>    suffixes.put("wmv", "application/octet-stream");
>    suffixes.put("avi", "application/octet-stream");
>
>    return suffixes;
>  }
> }
>
>
> The stack trace is here:
>
> java.lang.RuntimeException: Exception constructing service  
> 'HttpServletRequestHandler': Construction of service  
> 'HttpServletRequestHandler' has failed due to recursion: the service  
> depends on itself in some way. Please check  
> org 
> .apache 
> .tapestry5 
> .services.TapestryModule.buildHttpServletRequestHandler(Logger,  
> List, RequestHandler, String, SessionPersistedObjectAnalyzer) (at  
> TapestryModule.java:1222) for references to another service that is  
> itself dependent on service 'HttpServletRequestHandler'.
> 	at  
> org 
> .apache 
> .tapestry5 
> .ioc 
> .internal 
> .services 
> .JustInTimeObjectCreator 
> .obtainObjectFromCreator(JustInTimeObjectCreator.java:78)
> 	at  
> org 
> .apache 
> .tapestry5 
> .ioc 
> .internal 
> .services 
> .JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:57)
> 	at  
> $ 
> HttpServletRequestHandler_1206bab64a5 
> .delegate($HttpServletRequestHandler_1206bab64a5.java)
> 	at  
> $ 
> HttpServletRequestHandler_1206bab64a5 
> .service($HttpServletRequestHandler_1206bab64a5.java)
> 	at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java: 
> 127)
> 	at org.mortbay.jetty.servlet.ServletHandler 
> $CachedChain.doFilter(ServletHandler.java:1084)
> 	at  
> org 
> .apache 
> .cayenne 
> .conf 
> .WebApplicationContextFilter 
> .doFilter(WebApplicationContextFilter.java:90)
> 	at org.mortbay.jetty.servlet.ServletHandler 
> $CachedChain.doFilter(ServletHandler.java:1084)
> 	at  
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 
> 360)
> 	at  
> org 
> .mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 
> 216)
> 	at  
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 
> 181)
> 	at  
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 
> 722)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 
> 404)
> 	at  
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 
> 139)
> 	at org.mortbay.jetty.Server.handle(Server.java:324)
> 	at  
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 
> 505)
> 	at org.mortbay.jetty.HttpConnection 
> $RequestHandler.headerComplete(HttpConnection.java:828)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
> 	at  
> org 
> .mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: 
> 395)
> 	at org.mortbay.thread.BoundedThreadPool 
> $PoolThread.run(BoundedThreadPool.java:450)
> Caused by: org.apache.tapestry5.ioc.internal.OperationException:  
> Construction of service 'HttpServletRequestHandler' has failed due  
> to recursion: the service depends on itself in some way. Please  
> check  
> org 
> .apache 
> .tapestry5 
> .services.TapestryModule.buildHttpServletRequestHandler(Logger,  
> List, RequestHandler, String, SessionPersistedObjectAnalyzer) (at  
> TapestryModule.java:1222) for references to another service that is  
> itself dependent on service 'HttpServletRequestHandler'.
> 	at  
> org 
> .apache 
> .tapestry5 
> .ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java: 
> 90)
> 	at  
> org 
> .apache 
> .tapestry5 
> .ioc 
> .internal 
> .PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> 	at  
> org 
> .apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java: 
> 941)
> 	at  
> org 
> .apache 
> .tapestry5 
> .ioc 
> .internal 
> .OperationTrackingObjectCreator 
> .createObject(OperationTrackingObjectCreator.java:49)
> 	at  
> org 
> .apache 
> .tapestry5 
> .ioc 
> .internal 
> .services 
> .JustInTimeObjectCreator 
> .obtainObjectFromCreator(JustInTimeObjectCreator.java:68)
> 	... 21 more
> Caused by: java.lang.IllegalStateException: Construction of service  
> 'HttpServletRequestHandler' has failed due to recursion: the service  
> depends on itself in some way. Please check  
> org 
> .apache 
> .tapestry5 
> .services.TapestryModule.buildHttpServletRequestHandler(Logger,  
> List, RequestHandler, String, SessionPersistedObjectAnalyzer) (at  
> TapestryModule.java:1222) for references to another service that is  
> itself dependent on service 'HttpServletRequestHandler'.
> 	at  
> org 
> .apache 
> .tapestry5 
> .ioc 
> .internal 
> .RecursiveServiceCreationCheckWrapper 
> .createObject(RecursiveServiceCreationCheckWrapper.java:52)
> 	at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator 
> $1.invoke(OperationTrackingObjectCreator.java:45)
> 	at  
> org 
> .apache 
> .tapestry5 
> .ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java: 
> 68)
> 	... 25 more
>
>
> On 3 apr 2009, at 01.41, Howard Lewis Ship wrote:
>
>> The latest alpha release of Tapestry 5.1, Tapestry 5.1.0.2, is now
>> available for download and via Maven.
>>
>> Please download it and give it a try; we're especially interested in
>> any problems related to the upgrade from 5.0.18 to 5.1.0.2.
>>
>> Big features added in 5.1.0.2 include automatic combining of
>> JavaScript files, a new client-side JavaScript console based on
>> Blackbird, and the ability to have a single Ajax response update
>> multiple client-side Zones.
>>
>> We are now stabilizing Tapestry 5.1 for a beta release and, if all
>> goes according to plan, a short period until a stable 5.1 release.

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


Re: [ANNOUNCE] Tapestry 5.1.0.2 - "failed due to recursion"

Posted by Andreas Pardeike <ap...@fsys.se>.
Unfortunately, one of my key concepts in a big application I am  
developing
stops working in the step from 5.1.0.1 -> 5.1.0.2. Our application has  
all page
classes inside a subfolder, thus our internal tapestry pages all look  
like

http://hostname/klubb/page

and there is one tapestry page 'dynamic' that handles all requests  
without
the prefixing /klubb :

http://hostname/something/else.html

where it looks up '/something/else.html' from a database. The  
configuration
for this is set up like this:


public void contributeHttpServletRequestHandler(
             OrderedConfiguration<HttpServletRequestFilter>  
configuration,
             Global global,
             ClubConfiguration clubconf)
{
   configuration.add("CustomContenHandler", new  
CustomContentHandler(global, clubconf),
                        "before:IgnoredPaths");
}


and the corresponding class:


public class CustomContentHandler implements HttpServletRequestFilter
{
   private static String contentType;

   private final Global _global;
   private final ClubConfiguration _configuration;

   private final Pattern clubAssetsMatcher;

   private enum RequestType
   {
     START_PAGE, DYNAMIC_PAGE, TAPESTRY_ACTION
   };

   // this class is used to overwrite getServletPath for inserting our  
own
   // t5
   // page at the beginning of the path
   //
   private class MyHTTPServletRequest extends HttpServletRequestWrapper
   {
     private final RequestType _type;

     public MyHTTPServletRequest(HttpServletRequest  
httpServletRequest, RequestType type)
     {
       super(httpServletRequest);
       _type = type;
     }

     @Override
     public String getServletPath()
     {
       String path = super.getServletPath();

       if(_type == RequestType.START_PAGE)
       {
         if(path.equals("/"))
           path = Constants.STARTPAGE;
         return path;
       }

       if(_type == RequestType.DYNAMIC_PAGE)
         return Constants.DYNAMIC_CLUB_URL + path.toLowerCase();

       if(_type == RequestType.TAPESTRY_ACTION)
         return Constants.TAPESTRY_ACTION_PREFIX + path;

       return path;
     }
   }

   public CustomContentHandler(final Global global, final  
ClubConfiguration configuration)
   {
     _global = global;
     _configuration = configuration;

     String regExp = ".*\\.(";

     Iterator<String> iterator = getSuffixes().keySet().iterator();
     while(iterator.hasNext())
     {
       regExp = regExp + (getSuffixes().size() == 0 ? "" : "|") +  
iterator.next();

     }
     clubAssetsMatcher = Pattern.compile(regExp + ")");
   }

   public boolean service(HttpServletRequest request,  
HttpServletResponse response, HttpServletRequestHandler handler)  
throws IOException
   {
     String path = request.getServletPath().toLowerCase();

     if(path.equals("/") ||  
path.startsWith(Constants.TAPESTRY_ACTION_PREFIX + "/"))
     {
       MyHTTPServletRequest newRequest = new  
MyHTTPServletRequest(request, RequestType.START_PAGE);
       return handler.service(newRequest, response);
     }

     if(path.startsWith(Constants.PRIVATE_ASSETS_PREFIX + "/"))
       return handler.service(request, response);

     if(path.startsWith(Constants.PRIVATE_DYNAMIC_ACTION_PREFIX) ||  
path.startsWith(Constants.PRIVATE_STARTPAGE_ACTION_PREFIX))
     {
       MyHTTPServletRequest newRequest = new  
MyHTTPServletRequest(request, RequestType.TAPESTRY_ACTION);
       return handler.service(newRequest, response);
     }

     int club = _configuration.getClubNumberFromRequest(request);

     Map<String,Object> keys = new HashMap<String,Object>();
     keys.put(Dynamic.CLUB_PROPERTY, club);
     keys.put(Dynamic.PATH_PROPERTY, path);
     keys.put(Dynamic.PART_PROPERTY, "");

     Expression condition = ExpressionFactory.matchAllDbExp(keys,  
Expression.EQUAL_TO);
     SelectQuery query = new SelectQuery(Dynamic.class, condition);
     query.setName("#" + club + ":" + path + ":");
     query.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
     List<Dynamic> rows =  
_global.getReadOnlyObjectContext().performQuery(query);
     Dynamic dynamic = rows.size() == 1 ? rows.get(0) : null;

     // pass handling if this is a private asset (i.e. images that we
     // use in our templates)
     //
     Matcher match = clubAssetsMatcher.matcher(path);
     if(match.matches())
     {
       contentType = getSuffixes().get(match.group(1));
       if(dynamic != null)
       {
         response.setContentType(contentType);
         ServletOutputStream out = response.getOutputStream();
         out.write(dynamic.getData());
         out.close();

         return true;
       }

       return false;
     }

     // test for customer pages but exclude our own pages
     //
     if(dynamic != null)
     {
       MyHTTPServletRequest newRequest = new  
MyHTTPServletRequest(request, RequestType.DYNAMIC_PAGE);
       return handler.service(newRequest, response);
     }

     response.sendError(404);
     return true;
   }

   public Map<String,String> getSuffixes()
   {
     Map<String,String> suffixes = new HashMap<String,String>();

     suffixes.put("ico", "image/x-icon");
     suffixes.put("css", "text/css");
     suffixes.put("js", "text/javascript");
     suffixes.put("gif", "image/gif");
     suffixes.put("jpg", "image/jpeg");
     suffixes.put("jpeg", "image/jpeg");
     suffixes.put("png", "image/png");
     suffixes.put("tif", "mage/tif");
     suffixes.put("tiff", "mage/tiff");
     suffixes.put("pdf", "application/pdf");
     suffixes.put("xml", "text/xml");
     suffixes.put("doc", "application/msword");
     suffixes.put("docx", "application/msword");
     suffixes.put("xsl", "application/x-excel");
     suffixes.put("txt", "text/plain");
     suffixes.put("gzip", "application/x-gzip");
     suffixes.put("zip", "application/zip");
     suffixes.put("tar", "application/x-tar");
     suffixes.put("cab", "application/octet-stream");
     suffixes.put("dmg", "application/octet-stream");
     suffixes.put("tgz", "application/x-tar");
     suffixes.put("rar", "application/x-rar-compressed");
     suffixes.put("exe", "application/octet-stream");
     suffixes.put("mp3", "application/octet-stream");
     suffixes.put("wav", "application/octet-stream");
     suffixes.put("aac", "application/octet-stream");
     suffixes.put("ra", "application/octet-stream");
     suffixes.put("wma", "application/octet-stream");
     suffixes.put("mov", "application/octet-stream");
     suffixes.put("mp4", "application/octet-stream");
     suffixes.put("wmv", "application/octet-stream");
     suffixes.put("avi", "application/octet-stream");

     return suffixes;
   }
}


The stack trace is here:

java.lang.RuntimeException: Exception constructing service  
'HttpServletRequestHandler': Construction of service  
'HttpServletRequestHandler' has failed due to recursion: the service  
depends on itself in some way. Please check  
org 
.apache 
.tapestry5 
.services.TapestryModule.buildHttpServletRequestHandler(Logger, List,  
RequestHandler, String, SessionPersistedObjectAnalyzer) (at  
TapestryModule.java:1222) for references to another service that is  
itself dependent on service 'HttpServletRequestHandler'.
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.services 
.JustInTimeObjectCreator 
.obtainObjectFromCreator(JustInTimeObjectCreator.java:78)
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.services 
.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:57)
	at  
$ 
HttpServletRequestHandler_1206bab64a5 
.delegate($HttpServletRequestHandler_1206bab64a5.java)
	at  
$ 
HttpServletRequestHandler_1206bab64a5 
.service($HttpServletRequestHandler_1206bab64a5.java)
	at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java: 
127)
	at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1084)
	at  
org 
.apache 
.cayenne 
.conf 
.WebApplicationContextFilter.doFilter(WebApplicationContextFilter.java: 
90)
	at org.mortbay.jetty.servlet.ServletHandler 
$CachedChain.doFilter(ServletHandler.java:1084)
	at  
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
	at  
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 
216)
	at  
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at  
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 
404)
	at  
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:324)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 
505)
	at org.mortbay.jetty.HttpConnection 
$RequestHandler.headerComplete(HttpConnection.java:828)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
	at  
org 
.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: 
395)
	at org.mortbay.thread.BoundedThreadPool 
$PoolThread.run(BoundedThreadPool.java:450)
Caused by: org.apache.tapestry5.ioc.internal.OperationException:  
Construction of service 'HttpServletRequestHandler' has failed due to  
recursion: the service depends on itself in some way. Please check  
org 
.apache 
.tapestry5 
.services.TapestryModule.buildHttpServletRequestHandler(Logger, List,  
RequestHandler, String, SessionPersistedObjectAnalyzer) (at  
TapestryModule.java:1222) for references to another service that is  
itself dependent on service 'HttpServletRequestHandler'.
	at  
org 
.apache 
.tapestry5 
.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:90)
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
	at  
org 
.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java: 
941)
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.OperationTrackingObjectCreator 
.createObject(OperationTrackingObjectCreator.java:49)
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.services 
.JustInTimeObjectCreator 
.obtainObjectFromCreator(JustInTimeObjectCreator.java:68)
	... 21 more
Caused by: java.lang.IllegalStateException: Construction of service  
'HttpServletRequestHandler' has failed due to recursion: the service  
depends on itself in some way. Please check  
org 
.apache 
.tapestry5 
.services.TapestryModule.buildHttpServletRequestHandler(Logger, List,  
RequestHandler, String, SessionPersistedObjectAnalyzer) (at  
TapestryModule.java:1222) for references to another service that is  
itself dependent on service 'HttpServletRequestHandler'.
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.RecursiveServiceCreationCheckWrapper 
.createObject(RecursiveServiceCreationCheckWrapper.java:52)
	at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator 
$1.invoke(OperationTrackingObjectCreator.java:45)
	at  
org 
.apache 
.tapestry5 
.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
	... 25 more


On 3 apr 2009, at 01.41, Howard Lewis Ship wrote:

> The latest alpha release of Tapestry 5.1, Tapestry 5.1.0.2, is now
> available for download and via Maven.
>
> Please download it and give it a try; we're especially interested in
> any problems related to the upgrade from 5.0.18 to 5.1.0.2.
>
> Big features added in 5.1.0.2 include automatic combining of
> JavaScript files, a new client-side JavaScript console based on
> Blackbird, and the ability to have a single Ajax response update
> multiple client-side Zones.
>
> We are now stabilizing Tapestry 5.1 for a beta release and, if all
> goes according to plan, a short period until a stable 5.1 release.
>
> -- 
> Howard M. Lewis Ship
>
> Creator Apache Tapestry and Apache HiveMind
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>


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


Re: [ANNOUNCE] Tapestry 5.1.0.2

Posted by Peter Stavrinides <P....@albourne.com>.
>the only thing I've had to do was to switch to ValueEncoder 
Thats pretty much the only change for us too, except for some trouble we are having with double/float translation (but that is because we took a shortcut and extended an internal class (DoubleTranslator)) that has been subsequently dropped, so we have to find another solution for this. Otherwise no real issues so far.

regards,
Peter

----- Original Message -----
From: "Massimo Lusetti" <ml...@gmail.com>
To: "Tapestry users" <us...@tapestry.apache.org>
Sent: Friday, 3 April, 2009 10:43:13 GMT +02:00 Athens, Beirut, Bucharest, Istanbul
Subject: Re: [ANNOUNCE] Tapestry 5.1.0.2

On Fri, Apr 3, 2009 at 1:41 AM, Howard Lewis Ship <hl...@gmail.com> wrote:

> We are now stabilizing Tapestry 5.1 for a beta release and, if all
> goes according to plan, a short period until a stable 5.1 release.

The Blackbird support is actually very very cool!

I've switched a big project (at least for my experience, 49 DB tables
with 122 pages) to 5.1.0.2 from 5.0.18 and the only thing I've had to
do was to switch to ValueEncoder in some cases.
All it takes was 2 hours comprehending running tests and a complete
run of all features.

Nice.
-- 
Massimo
http://meridio.blogspot.com

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


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


Re: [ANNOUNCE] Tapestry 5.1.0.2

Posted by Massimo Lusetti <ml...@gmail.com>.
On Fri, Apr 3, 2009 at 1:41 AM, Howard Lewis Ship <hl...@gmail.com> wrote:

> We are now stabilizing Tapestry 5.1 for a beta release and, if all
> goes according to plan, a short period until a stable 5.1 release.

The Blackbird support is actually very very cool!

I've switched a big project (at least for my experience, 49 DB tables
with 122 pages) to 5.1.0.2 from 5.0.18 and the only thing I've had to
do was to switch to ValueEncoder in some cases.
All it takes was 2 hours comprehending running tests and a complete
run of all features.

Nice.
-- 
Massimo
http://meridio.blogspot.com

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