Hello.

After years of using Tapestry 4.0, I just started experimenting with T5, and although it brings much improvement, I noticed a few issues:

1. Biggest issue - most of serious web apps out there wil always have few servlets/filters defined in their web.xml, and thus using <url-pattern>/*</url-pattern> mapping for tapestry filter is not acceptable since there will be other mappings defined there. But problem is if one specifies for instance /web/* mapping for tapestry filter, that forces specific undesirable structure of packaging of tapestry related code:
com.mycompany.myapp.pages.web

I don't want to have this "web" package jus becuase I picked that url pattern. Sometimes I change url patterns rapidly on deployment sites just because customer told me that URLs would look better to them. I just go to web.xml, and change it in a matter of few minutes. Now it would be impossible since it would require refactoring and recompiling many packages. I always considered that url mapping of both servlets or filters should not influence application internals, and should be completely transparent thing if one needs to change it. Similar as one can change name of some .war file and everything works relative to it.

2. I know that Tapestry picked convention over configuration, but there is a small drawback with it since good packaging should be defined by domain logic, not by implementing technology. For instance, it is not advisable to have packages called "sessionbeans" and "entitybeans" in your EJB app, it is no good to have "dao", "model" etc...Similary, it is no good to have "pages", "components" etc... Domain packaging by having "users", "messages", "companies" is good. Of course, Tapestry allows subpackaging of "pages" and "components" packages, but thing is that if one has to define 2 packages when having many components or pages related to one domain module - "components.users" and "pages.users". I admit that this is no big issue, just small dissapointment that I have to structure my app now differently from what I believe is optimal.

3. Automatic shortening of page names seems totaly unnecessary to me. (just my opinion), sicne it can just bring some small confusion sometimes. Anyway, I don't object so much if it is optiona lfeature, but I think I found a bug today -
I have a page under
com.mycompany.myapp.pages.users.Users
In other words users/Users page. But when I referenced it, Tapestry rasied exception saying that page doesn't exist, only "users/" ??!

4 Most of some special purpose methods can use naming convention or annotation demarcation to mark their special purpose. Like event ethods, or rendering phases. I don't see why onActivate and onPassivate don't follow consistency and have annotations to mark them?

Regards,
Vjeran


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

Reply via email to