geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Blewitt <Alex.Blew...@bandlem.com>
Subject Re: [XML][Deployment]POJO design?
Date Tue, 09 Sep 2003 13:34:19 GMT
On Tuesday, Sep 9, 2003, at 13:38 Europe/London, Aaron Mulder wrote:

> On Tue, 9 Sep 2003, Alex Blewitt wrote:
>> ...
>> I don't see the rationale for not having an abstract supertype for the
>> Session/Entity/Message beans. [It may be necessary to also have a
>> separate supertype for Session/Entity as well, since there are such
>> issues with the way in which the various Contexts work.]
>
> You can't have it both ways:
>
> j2ee.ejb.Session extends j2ee.ejb.EJB
> geronimo.ejb.EJB extends j2ee.ejb.EJB
> geronimo.ejb.Session extends (j2ee.ejb.Session and geronimo.ejb.EJB???)

I think perhaps I should have been clearer in the message; I had 
suggested that we use an EJB super-interface to mean both the 
geronimo-specific and j2ee neutral. That way, you can have two separate 
hierarchies be used to represent implementation, whilst still 
maintaining the type hierarchy on the top.

> The rationale for not having geronimo.ejb.EJB (the abstract
> supertype for Session/Entity/Message beans) is that 
> geronimo.ejb.Session
> can't extend it!

Why should session not be able to extend it? I don't understand:

public interface EJB
public interface EntityBean extends EJB
public interface SessionBean extends EJB
public interface MessageDrivenBean extends EJB

public class J2EEEJB implements EJB
public class J2EEEntityBean extends J2EEEJB implements EntityBean
public class J2EESessionBean extends J2EEEJB implements SessionBean
public class J2EEMessagDrivenBean extends J2EEEJB implements 
MessageDrivenBean

public class GeronimoEJB implements EJB
public class GeronimoEntityBean extends GeronimoEJB implements 
EntityBean
public class GeronimoSessionBean extends GeronimoEJB implements 
SessionBean
public class GeronimoMessageDrivenBean extends GeronimoEJB implements 
MessageDrivenBean

and the GeronimoEJB has a 'to one' relationship with J2EEEJB.

So, it's possible to insert another interface/set of types 
'EntityAndSessionBean' above; one more interface and two more classes:

public interface EntityAndSession
public class J2EEEntityAndSession extends J2EEEJB
public class GeronimoEntityAndSession extends GeronimoEJB

and change the 'extends GeronimoEJB' to 'extends 
GeronimoEntityAndSession' for session/entities (and similarly for J2EE).


> That's why Greg is proposing that everything in J2EE land should
> turn into interfaces, but I continue to object to having all the
> implementation in the Geronimo objects only, especially since you STILL
> can't avoid duplicating code.

I agree that there should be interfaces (hence above).

I also agree that the code shouldn't be in one place; it should be 
split across the two hierarchies. The J2EE stuff should have the 
vendor-neutral representation, the rest should go into the Geronimo 
representation. And you can still achieve the transparent connection by 
providing delegate methods from the Geronimo stuff to the J2EE stuff.

If the above types don't gel, I can knock up a skeletal code example 
for how to represent it, but my thoughts are that the representation 
should be in a pair of POJOs, not just a single one.

Alex.


Mime
View raw message