User: fleury Date: 00/07/14 11:32:17 Added: src/main/org/jboss/ejb EntityPersistenceStore.java Log: New classes to do the persistence with Juha's proposal. The new persistence is in 3 tiers. A CMP manager that takes care of all the EJB container call back calls and a "Store" that takes care of the actual persistence process for the instance fields. Revision Changes Path 1.1 jboss/src/main/org/jboss/ejb/EntityPersistenceStore.java Index: EntityPersistenceStore.java =================================================================== /* * jBoss, the OpenSource EJB server * * Distributable under GPL license. * See terms of license at gnu.org. */ package org.jboss.ejb; import java.lang.reflect.Method; import java.rmi.RemoteException; import java.util.Collection; import javax.ejb.CreateException; import javax.ejb.FinderException; import javax.ejb.RemoveException; import org.jboss.ejb.ContainerPlugin; /** * This interface is implemented by any EntityBean persistence Store. * * These stores just deal with the persistence aspect of storing java objects * They need not be aware of the EJB semantics. * * They act as delegatees for the CMPEntityPersistenceManager class. * * @see EntityPersistenceManager * @author Rickard �berg ([EMAIL PROTECTED]) * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a> * @version $Revision: 1.1 $ */ public interface EntityPersistenceStore extends ContainerPlugin { // Public -------------------------------------------------------- /** * This method is called whenever an entity is to be created. The persistence manager * is responsible for handling the results properly wrt the persistent store. * * The return is * The primary key in case of CMP PM * Null in case of BMP PM (but no store should exist) * * @param m the create method in the home interface that was called * @param args any create parameters * @param instance the instance being used for this create call * @return Object, the primary key computed by CMP PM or null for BMP * @exception RemoteException thrown if some system exception occurs * @exception CreateException thrown if some heuristic problem occurs */ public Object createEntity(Method m, Object[] args, EntityEnterpriseContext instance) throws RemoteException, CreateException; /** * This method is called when single entities are to be found. The persistence manager must find out * whether the wanted instance is available in the persistence store, if so it returns * the primary key of the object. * * @param finderMethod the find method in the home interface that was called * @param args any finder parameters * @param instance the instance to use for the finder call * @return a primary key representing the found entity * @exception RemoteException thrown if some system exception occurs * @exception FinderException thrown if some heuristic problem occurs */ public Object findEntity(Method finderMethod, Object[] args, EntityEnterpriseContext instance) throws RemoteException, FinderException; /** * This method is called when collections of entities are to be found. The persistence manager must find out * whether the wanted instances are available in the persistence store, and if so * it must return a collection of primaryKeys. * * @param finderMethod the find method in the home interface that was called * @param args any finder parameters * @param instance the instance to use for the finder call * @return an primary key collection representing the found entities * @exception RemoteException thrown if some system exception occurs * @exception FinderException thrown if some heuristic problem occurs */ public Collection findEntities(Method finderMethod, Object[] args, EntityEnterpriseContext instance) throws RemoteException, FinderException; /** * This method is called when an entity shall be activated. * * With the PersistenceManager factorization most EJB calls should not exists * However this calls permits us to introduce optimizations in the persistence * store. Particularly the context has a "PersistenceContext" that a * PersistenceStore can use (JAWS does for smart updates) and this is as good a * callback as any other to set it up. * * @param instance the instance to use for the activation * @exception RemoteException thrown if some system exception occurs */ public void activateEntity(EntityEnterpriseContext instance) throws RemoteException; /** * This method is called whenever an entity shall be load from the underlying storage. The persistence manager * must load the state from the underlying storage and then call ejbLoad on the supplied instance. * * @param instance the instance to synchronize * @exception RemoteException thrown if some system exception occurs */ public void loadEntity(EntityEnterpriseContext instance) throws RemoteException; /** * This method is called whenever an entity shall be stored to the underlying storage. The persistence manager * must call ejbStore on the supplied instance and then store the state to the underlying storage. * * @param instance the instance to synchronize * @exception RemoteException thrown if some system exception occurs */ public void storeEntity(EntityEnterpriseContext instance) throws RemoteException; /** * This method is called when an entity shall be passivate. The persistence manager must call the ejbPassivate * method on the instance. * * See the activate discussion for the reason for exposing EJB callback calls to * the store. * * @param instance the instance to passivate * @exception RemoteException thrown if some system exception occurs */ public void passivateEntity(EntityEnterpriseContext instance) throws RemoteException; /** * This method is called when an entity shall be removed from the underlying storage. The persistence manager * must call ejbRemove on the instance and then remove its state from the underlying storage. * * @param instance the instance to remove * @exception RemoteException thrown if some system exception occurs * @exception RemoveException thrown if the instance could not be removed */ public void removeEntity(EntityEnterpriseContext instance) throws RemoteException, RemoveException; }
