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]

Reply via email to