Em Wed, 19 Nov 2008 15:31:16 -0300, Howard Lewis Ship <[EMAIL PROTECTED]>
escreveu:
Interesting idea. You could probably put something together around
ClassNameLocator, i.e., a wrapper that given package names, find
interfaces inside those packages that have matching Impl classes. i.e.
public static void bind(ServiceBinder binder)
{
new AutoServiceBinder("my.package.root").bind(binder);
}
As Tapestry already knows the application package root, we could even not
have the above step.
Suppose br.com.arsmachina.example.web (I like to put everything
interface-related in a separate package) is my root package. Then I use
the following conventions:
Entities: br.com.arsmachina.example.entity.
DAO definitions: br.com.arsmachina.example.dao.
DAO implementatinos: br.com.arsmachina.example.dao.impl.
Controller definitions: br.com.arsmachina.example.controller.
Controller implementatinos: br.com.arsmachina.example.controller.impl.
For a given entity, say, User:
br.com.arsmachina.entity.User
br.com.arsmachina.entity.dao.UserDAO
br.com.arsmachina.entity.dao.impl.UserDAOImpl
br.com.arsmachina.entity.controller.UserController
br.com.arsmachina.entity.controller.impl.UserControllerImpl
I already implemented something related in Tapestry CRUD
(www.arsmachina.com.br/project/tapestrycrud) using ClassNameLocator, but
to automatically associate entities with their controllers and entities
with their encoders
(http://ars-machina.svn.sourceforge.net/viewvc/ars-machina/tapestry-crud/trunk/src/main/java/br/com/arsmachina/tapestrycrud/encoder/Encoder.java?revision=274&view=markup).
Howard, the Ars Machina Project (that includes packages like Tapestry CRUD
and Tapestry Access Logger) was released while you were in Europe, so I
guess you haven't notice the release message I sent to this mailing list .
. . I would love to have your feedback about my packages. :)
--
Thiago H. de Paula Figueiredo
Independent Java consultant, developer, and instructor
http://www.arsmachina.com.br/thiago
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]