KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > deployment > SubDeployerInterceptor


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.deployment;
23
24 import org.jboss.mx.interceptor.AbstractInterceptor;
25 import org.jboss.mx.interceptor.Interceptor;
26 import org.jboss.mx.server.Invocation;
27
28 /**
29  * Base class for SubDeployer interceptors.
30  *
31  * Override one or more of the init(), create(), start(), stop(), destroy()
32  * methods to add behaviour. Don't forget to call invokeNext() inside
33  * your implementation, if you want the call to be continued.
34  *
35  * @author <a HREF="mailto:dimitris@jboss.org">Dimitris Andreadis</a>
36  * @version $Revision: 57108 $
37  */

38 public abstract class SubDeployerInterceptor extends AbstractInterceptor
39 {
40    // Constructors --------------------------------------------------
41

42    /**
43     * Default CTOR
44     */

45    public SubDeployerInterceptor()
46    {
47       super();
48    }
49    
50    /**
51     * CTOR
52     *
53     * @param name - the name to use for this interceptor
54     */

55    public SubDeployerInterceptor(String JavaDoc name)
56    {
57       // invoker is unknown
58
super(name);
59    }
60    
61    // Interceptor implementation ------------------------------------
62

63    /**
64     * This invoke method checks for invocations of interest, .i.e.
65     * init(), create(), start(), stop(), destroy() operation calls
66     * with a single DeploymentInfo argument and wraps the invocation
67     * with calls to corresponding init(), create(), etc. methods.
68     */

69    public Object JavaDoc invoke(Invocation invocation) throws Throwable JavaDoc
70    {
71       String JavaDoc type = invocation.getType();
72       
73       // make sure this is an operation invocation
74
if (type.equals(Invocation.OP_INVOKE))
75       {
76          Object JavaDoc args[] = invocation.getArgs();
77          Object JavaDoc retn = invocation.getReturnTypeClass();
78          
79          // make sure the signature matches -> void <methodName>(DeploymentInfo di)
80
if ((args.length == 1) && (args[0] instanceof DeploymentInfo) && (retn == null))
81          {
82             String JavaDoc method = invocation.getName();
83             DeploymentInfo di = (DeploymentInfo)args[0];
84             
85             if (method.equals("init"))
86             {
87                return init(invocation, di);
88             }
89             else if (method.equals("create"))
90             {
91                return create(invocation, di);
92             }
93             else if (method.equals("start"))
94             {
95                return start(invocation, di);
96             }
97             else if (method.equals("stop"))
98             {
99                return stop(invocation, di);
100             }
101             else if (method.equals("destroy"))
102             {
103                return destroy(invocation, di);
104             }
105          }
106       }
107       // if we reached this point invocation is of no interest
108
// to SubDeployerInterceptor so simply forward it
109
return invokeNext(invocation);
110    }
111    
112    // Protected -----------------------------------------------------
113

114    /**
115     * Use this to forward the call
116     */

117    protected Object JavaDoc invokeNext(Invocation invocation) throws Throwable JavaDoc
118    {
119       // call the next in the interceptor chain,
120
// if nobody follows dispatch the call
121
Interceptor next = invocation.nextInterceptor();
122       if (next != null)
123       {
124          return next.invoke(invocation);
125       }
126       else
127       {
128          return invocation.dispatch();
129       }
130    }
131    
132    // Protected overrides -------------------------------------------
133

134    // Override the following methods to add behaviour. Remember
135
// to call invokeNext() if you want the call to proceed.
136

137    protected Object JavaDoc init(Invocation invocation, DeploymentInfo di) throws Throwable JavaDoc
138    {
139       return invokeNext(invocation);
140    }
141    
142    protected Object JavaDoc create(Invocation invocation, DeploymentInfo di) throws Throwable JavaDoc
143    {
144       return invokeNext(invocation);
145    }
146    
147    protected Object JavaDoc start(Invocation invocation, DeploymentInfo di) throws Throwable JavaDoc
148    {
149       return invokeNext(invocation);
150    }
151    
152    protected Object JavaDoc stop(Invocation invocation, DeploymentInfo di) throws Throwable JavaDoc
153    {
154       return invokeNext(invocation);
155    }
156    
157    protected Object JavaDoc destroy(Invocation invocation, DeploymentInfo di) throws Throwable JavaDoc
158    {
159       return invokeNext(invocation);
160    }
161
162 }
Popular Tags