EjbJarRuleSet.java

00001 
00027 package org.objectweb.jonas_ejb.deployment.rules;
00028 
00029 import java.lang.reflect.Method;
00030 
00031 import org.apache.commons.digester.Digester;
00032 import org.apache.commons.digester.Rule;
00033 import org.objectweb.jonas_lib.deployment.rules.JRuleSetBase;
00034 import org.xml.sax.Attributes;
00035 
00042 public class EjbJarRuleSet extends JRuleSetBase {
00043 
00047     public EjbJarRuleSet() {
00048         super("ejb-jar/");
00049     }
00050 
00057     public void addRuleInstances(Digester digester) {
00058         digester.addRule("ejb-jar", new SetPublicIdRule("setPublicId"));
00059         digester.addSetProperties("ejb-jar");
00060         digester.addCallMethod(prefix + "description", "setDescription", 0);
00061         digester.addCallMethod(prefix + "display-name", "setDisplayName", 0);
00062         digester.addCallMethod(prefix + "small-icon", "setSmallIcon", 0);
00063         digester.addCallMethod(prefix + "large-icon", "setLargeIcon", 0);
00064         digester.addRuleSet(new EnterpriseBeansRuleSet(prefix));
00065         digester.addRuleSet(new RelationshipsRuleSet(prefix));
00066         digester.addRuleSet(new AssemblyDescriptorRuleSet(prefix));
00067         digester.addCallMethod(prefix + "ejb-client-jar", "setEjbClientJar", 0);
00068     }
00069 
00075     private final class SetPublicIdRule extends Rule {
00076 
00082         public SetPublicIdRule(String method) {
00083             this.method = method;
00084         }
00085 
00089         private String method = null;
00090 
00098         public void begin(Attributes attributes) throws Exception {
00099             Object top = digester.peek();
00100             Class[] paramClasses = new Class[1];
00101             paramClasses[0] = "String".getClass();
00102             String[] paramValues = new String[1];
00103             paramValues[0] = digester.getPublicId();
00104 
00105             Method m = null;
00106             try {
00107                 m = top.getClass().getMethod(method, paramClasses);
00108             } catch (NoSuchMethodException e) {
00109                 System.out.println("Can't find method " + method + " in " + top + " CLASS " + top.getClass());
00110                 return;
00111             }
00112 
00113             m.invoke(top, (Object[]) paramValues);
00114 
00115         }
00116 
00117     }
00118 }

Generated on Tue Feb 15 15:05:47 2005 for JOnAS by  doxygen 1.3.9.1