| EntityCreationInterceptor.java |
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.ejb.plugins;
import org.jboss.ejb.EntityEnterpriseContext;
import org.jboss.invocation.Invocation;
/**
* The instance interceptors role is to break entity creation into two
* calls, one for ejbCreate and one for ejbPostCreate. The ejbCreate
* method is passed over the invokeHome chain, and ejbPostCreate is
* passed over the invoke chain.
*
* @author <a href="mailto:dain@daingroup.com">Dain Sundstrom</a>
* @version $Revision: 1.4 $
*/
public class EntityCreationInterceptor extends AbstractInterceptor
{
public Object invokeHome(Invocation mi)
throws Exception
{
// Invoke through interceptors
Object retVal = getNext().invokeHome(mi);
// Is the context now with an identity?
// This means that a create method was called, so invoke ejbPostCreate.
EntityEnterpriseContext ctx =
(EntityEnterpriseContext) mi.getEnterpriseContext();
if(ctx != null && ctx.getId() != null)
{
// copy from the context into the mi
// interceptors down the chain look in the mi for the id not the ctx.
mi.setId(ctx.getId());
// invoke down the invoke chain
// the final interceptor in EntityContainer will redirect this
// call to postCreateEntity, which calls ejbPostCreate
getNext().invoke(mi);
}
return retVal;
}
public Object invoke(Invocation mi)
throws Exception
{
// nothing to see here... move along
return getNext().invoke(mi);
}
}
| EntityCreationInterceptor.java |