KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > openccm > uml > transformation > rules > xml > CallMethod


1 /*====================================================================
2
3 OpenCCM: The Open CORBA Component Model Platform
4 Copyright (C) 2000-2004 INRIA - USTL - LIFL - GOAL
5 Contact: openccm@objectweb.org
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or any later version.
11
12 This library 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 library; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20 USA
21
22 Initial developer(s): Pierre Carpentier.
23 Contributor(s): Philippe Merle.
24
25 ---------------------------------------------------------------------
26 $Id: CallMethod.java,v 1.1 2004/05/26 11:25:35 carpentier Exp $
27 ====================================================================*/

28
29 package org.objectweb.openccm.uml.transformation.rules.xml;
30
31 import ispuml.mdaTransformation.RuleContext;
32 import ispuml.mdaTransformation.TransformationException;
33 import ispuml.mdaTransformation.ActionBase;
34 import ispuml.mdaTransformation.rules.xml.CompositeXmlAction;
35
36
37 /**
38  * This action calls a method to the bean.
39  */

40 public class CallMethod extends CompositeXmlAction {
41     
42     /** The name of the method to call. */
43     private String JavaDoc methodName;
44
45     /**
46      * Constructor.
47      */

48     public CallMethod() {
49         // The src property is not required. If it is not set, use the bean provided
50
// as parameter.
51
isSrcPropertyRequired = false;
52         isDstPropertyRequired = false;
53         action = new TransformAction();
54     }
55     
56     /**
57      * Sets the name of the method to call.
58      * @param methodName The method name.
59      */

60     public void setMethodName (String JavaDoc methodName) {
61         this.methodName = methodName;
62     }
63
64     /**
65      * Inner class
66      */

67     class TransformAction extends ActionBase {
68         /**
69          * Calls the method to the bean.
70          * @param bean The bean which contains the method to invoke.
71          * @param request The context.
72          * @return Object The result of the method invocation.
73          */

74         public Object JavaDoc execute(Object JavaDoc bean, RuleContext request) throws TransformationException {
75             try {
76                 Class JavaDoc param [] = new Class JavaDoc[0];
77                 java.lang.reflect.Method JavaDoc method = bean.getClass().getMethod(methodName, param);
78                 return method.invoke(bean, null);
79             } catch (Exception JavaDoc exc) {
80                 throw new TransformationException("The method " + methodName + "() does not exist on this bean.");
81             }
82         }
83
84     } // end class
85
}
86
Popular Tags