KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > ejb > plugins > EntityCreationInterceptor


1 /*
2 * JBoss, Home of Professional Open Source
3 * Copyright 2005, JBoss Inc., and individual contributors as indicated
4 * by the @authors tag. See the copyright.txt in the distribution for a
5 * full listing of individual contributors.
6 *
7 * This is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU Lesser General Public License as
9 * published by the Free Software Foundation; either version 2.1 of
10 * the License, or (at your option) any later version.
11 *
12 * This software is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this software; if not, write to the Free
19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21 */

22 package org.jboss.ejb.plugins;
23
24 import org.jboss.ejb.EntityEnterpriseContext;
25 import org.jboss.invocation.Invocation;
26
27
28 /**
29 * The instance interceptors role is to break entity creation into two
30 * calls, one for ejbCreate and one for ejbPostCreate. The ejbCreate
31 * method is passed over the invokeHome chain, and ejbPostCreate is
32 * passed over the invoke chain.
33 *
34 * @author <a HREF="mailto:dain@daingroup.com">Dain Sundstrom</a>
35 * @version $Revision: 37459 $
36 */

37 public class EntityCreationInterceptor extends AbstractInterceptor
38 {
39    public Object JavaDoc invokeHome(Invocation mi)
40       throws Exception JavaDoc
41    {
42       // Invoke through interceptors
43
Object JavaDoc retVal = getNext().invokeHome(mi);
44
45       // Is the context now with an identity?
46
// This means that a create method was called, so invoke ejbPostCreate.
47
EntityEnterpriseContext ctx =
48             (EntityEnterpriseContext) mi.getEnterpriseContext();
49       if(ctx != null && ctx.getId() != null)
50       {
51          // copy from the context into the mi
52
// interceptors down the chain look in the mi for the id not the ctx.
53
mi.setId(ctx.getId());
54          
55          // invoke down the invoke chain
56
// the final interceptor in EntityContainer will redirect this
57
// call to postCreateEntity, which calls ejbPostCreate
58
getNext().invoke(mi);
59       }
60       
61       return retVal;
62    }
63
64    public Object JavaDoc invoke(Invocation mi)
65       throws Exception JavaDoc
66    {
67       // nothing to see here... move along
68
return getNext().invoke(mi);
69    }
70 }
71
72
Popular Tags