A couple more notes on this.

J. Matthew Pryor wrote:

 >> public void ejbCreate(CreateMyEntity command)
 >>
 >
 > would CreateMyEntity be a base class or perhaps an interface ?


I have changed this now so that it is an interface that belongs to the 
EJB layer. That way there is not reliance on WebWork as the underlying 
implementation of the commands. I.e. I have this:
public interface EntityVisitor
{
    // Static --------------------------------------------------------
    // Valid actions that can be performed by visitors
    public static String CREATE = "create";
    public static String POST_CREATE = "postCreate";

    // Public --------------------------------------------------------
    public void setEntity(EntityBean instance);
    public void execute(String aName)
       throws Exception;
}
which is a generic visitor pattern interface that can be used for more 
than just the create. It can also be used to allow visitors to get 
DTO-like property subsets, or similar.


My generic create looks like this now:
    public Object ejbCreate(EntityVisitor aVisitor)
       throws CreateException
    {
       try
       {
          aVisitor.setEntity((EntityBean)this);
          aVisitor.execute(EntityVisitor.CREATE);
       } catch (Exception e)
       {
          throw new CreateException("Could not create entity:"+e);
       }

       dao.create();

       return null;
    }
    public void ejbPostCreate(EntityVisitor aVisitor)
       throws CreateException
    {
       try
       {
          aVisitor.execute(EntityVisitor.POST_CREATE);
       } catch (Exception e)
       {
          throw new CreateException("Could not create entity:"+e);
       }
    }
--
So, it is very clean, and doesn't have to change as new EJB 
relationships or properties are introduced. Instead the visitors are 
updated to handle that, but they are supposed to be more "alive" (in 
terms of evolution) IMO, so that's ok.

/Rickard

-- 
Rickard Öberg
Chief Architect, TheServerSide.com
The Middleware Company


_______________________________________________
Xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user

Reply via email to