JCatalinaRuleSet.java

00001 
00027 package org.objectweb.jonas.web.catalina50;
00028 
00029 import org.apache.commons.digester.Digester;
00030 import org.apache.commons.digester.Rule;
00031 import org.apache.commons.digester.RuleSetBase;
00032 
00033 import org.apache.catalina.Container;
00034 import org.apache.catalina.startup.ContextRuleSet;
00035 import org.apache.catalina.startup.EngineRuleSet;
00036 import org.apache.catalina.startup.HostRuleSet;
00037 import org.apache.catalina.startup.NamingRuleSet;
00038 import org.apache.catalina.startup.SetAllPropertiesRule;
00039 
00040 import org.xml.sax.Attributes;
00041 
00048 public class JCatalinaRuleSet extends RuleSetBase {
00049 
00053     private ClassLoader parentClassLoader = null;
00054 
00059     public JCatalinaRuleSet(ClassLoader parentClassLoader) {
00060         super();
00061         this.parentClassLoader = parentClassLoader;
00062     }
00063 
00064 
00065 
00070     public void addRuleInstances(Digester digester) {
00071 
00072         // Configure the actions we will be using
00073         digester.addObjectCreate("Server",
00074                                  "org.apache.catalina.core.StandardServer",
00075                                  "className");
00076         digester.addSetProperties("Server");
00077         digester.addSetNext("Server",
00078                             "setServer",
00079                             "org.apache.catalina.Server");
00080 
00081         digester.addObjectCreate("Server/GlobalNamingResources",
00082                                  "org.apache.catalina.deploy.NamingResources");
00083         digester.addSetProperties("Server/GlobalNamingResources");
00084         digester.addSetNext("Server/GlobalNamingResources",
00085                             "setGlobalNamingResources",
00086                             "org.apache.catalina.deploy.NamingResources");
00087 
00088 
00089         digester.addObjectCreate("Server/Listener",
00090                                  null, // MUST be specified in the element
00091                                  "className");
00092         digester.addSetProperties("Server/Listener");
00093         digester.addSetNext("Server/Listener",
00094                             "addLifecycleListener",
00095                             "org.apache.catalina.LifecycleListener");
00096 
00097         digester.addObjectCreate("Server/Service",
00098                                  "org.apache.catalina.core.StandardService",
00099                                  "className");
00100         digester.addSetProperties("Server/Service");
00101         digester.addSetNext("Server/Service",
00102                             "addService",
00103                             "org.apache.catalina.Service");
00104 
00105         digester.addObjectCreate("Server/Service/Listener",
00106                                  null, // MUST be specified in the element
00107                                  "className");
00108         digester.addSetProperties("Server/Service/Listener");
00109         digester.addSetNext("Server/Service/Listener",
00110                             "addLifecycleListener",
00111                             "org.apache.catalina.LifecycleListener");
00112 
00113         digester.addObjectCreate("Server/Service/Connector",
00114                                  "org.apache.coyote.tomcat5.CoyoteConnector",
00115                                  "className");
00116         digester.addRule("Server/Service/Connector",
00117                          new SetAllPropertiesRule());
00118         digester.addSetNext("Server/Service/Connector",
00119                             "addConnector",
00120                             "org.apache.catalina.Connector");
00121 
00122         digester.addObjectCreate("Server/Service/Connector/Factory",
00123                                  "org.apache.coyote.tomcat5.CoyoteServerSocketFactory",
00124                                  "className");
00125         digester.addSetProperties("Server/Service/Connector/Factory");
00126         digester.addSetNext("Server/Service/Connector/Factory",
00127                             "setFactory",
00128                             "org.apache.catalina.net.ServerSocketFactory");
00129 
00130         digester.addObjectCreate("Server/Service/Connector/Listener",
00131                                  null, // MUST be specified in the element
00132                                  "className");
00133         digester.addSetProperties("Server/Service/Connector/Listener");
00134         digester.addSetNext("Server/Service/Connector/Listener",
00135                             "addLifecycleListener",
00136                             "org.apache.catalina.LifecycleListener");
00137 
00138 
00139         // Add RuleSets for nested elements
00140         digester.addRuleSet(new NamingRuleSet("Server/GlobalNamingResources/"));
00141         digester.addRuleSet(new EngineRuleSet("Server/Service/"));
00142         digester.addRuleSet(new HostRuleSet("Server/Service/Engine/"));
00143         digester.addRuleSet(new ContextRuleSet("Server/Service/Engine/Default"));
00144         //digester.addRuleSet(new NamingRuleSet("Server/Service/Engine/DefaultContext/"));
00145         digester.addRuleSet(new ContextRuleSet("Server/Service/Engine/Host/Default"));
00146         //digester.addRuleSet(new NamingRuleSet("Server/Service/Engine/Host/DefaultContext/"));
00147         digester.addRuleSet(new ContextRuleSet("Server/Service/Engine/Host/"));
00148         //digester.addRuleSet(new NamingRuleSet("Server/Service/Engine/Host/Context/"));
00149         digester.addRule("Server/Service/Engine",
00150                          new SetParentClassLoaderRule(parentClassLoader));
00151     }
00152 }
00153 
00158 final class SetParentClassLoaderRule extends Rule {
00159 
00163     private ClassLoader parentClassLoader = null;
00164 
00165 
00170     public SetParentClassLoaderRule(ClassLoader parentClassLoader) {
00171         super();
00172         this.parentClassLoader = parentClassLoader;
00173     }
00174 
00185     public void begin(String namespace, String name, Attributes attributes) throws Exception {
00186         Container top = (Container) digester.peek();
00187         top.setParentClassLoader(parentClassLoader);
00188     }
00189 }
00190 

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