1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 19 package org.apache.catalina.startup; 20 21 22 import org.apache.tomcat.util.digester.Digester; 23 import org.apache.tomcat.util.digester.RuleSetBase; 24 25 26 /** 27 * <p><strong>RuleSet</strong> for processing the contents of a 28 * Host definition element. This <code>RuleSet</code> does NOT include 29 * any rules for nested Context or DefaultContext elements, which should 30 * be added via instances of <code>ContextRuleSet</code>.</p> 31 * 32 * @author Craig R. McClanahan 33 * @version $Revision: 707757 $ $Date: 2008-10-24 23:54:48 +0200 (Fri, 24 Oct 2008) $ 34 */ 35 36 public class HostRuleSet extends RuleSetBase { 37 38 39 // ----------------------------------------------------- Instance Variables 40 41 42 /** 43 * The matching pattern prefix to use for recognizing our elements. 44 */ 45 protected String prefix = null; 46 47 48 // ------------------------------------------------------------ Constructor 49 50 51 /** 52 * Construct an instance of this <code>RuleSet</code> with the default 53 * matching pattern prefix. 54 */ 55 public HostRuleSet() { 56 57 this(""); 58 59 } 60 61 62 /** 63 * Construct an instance of this <code>RuleSet</code> with the specified 64 * matching pattern prefix. 65 * 66 * @param prefix Prefix for matching pattern rules (including the 67 * trailing slash character) 68 */ 69 public HostRuleSet(String prefix) { 70 71 super(); 72 this.namespaceURI = null; 73 this.prefix = prefix; 74 75 } 76 77 78 // --------------------------------------------------------- Public Methods 79 80 81 /** 82 * <p>Add the set of Rule instances defined in this RuleSet to the 83 * specified <code>Digester</code> instance, associating them with 84 * our namespace URI (if any). This method should only be called 85 * by a Digester instance.</p> 86 * 87 * @param digester Digester instance to which the new Rule instances 88 * should be added. 89 */ 90 public void addRuleInstances(Digester digester) { 91 92 digester.addObjectCreate(prefix + "Host", 93 "org.apache.catalina.core.StandardHost", 94 "className"); 95 digester.addSetProperties(prefix + "Host"); 96 digester.addRule(prefix + "Host", 97 new CopyParentClassLoaderRule()); 98 digester.addRule(prefix + "Host", 99 new LifecycleListenerRule 100 ("org.apache.catalina.startup.HostConfig", 101 "hostConfigClass")); 102 digester.addSetNext(prefix + "Host", 103 "addChild", 104 "org.apache.catalina.Container"); 105 106 digester.addCallMethod(prefix + "Host/Alias", 107 "addAlias", 0); 108 109 //Cluster configuration start 110 digester.addObjectCreate(prefix + "Host/Cluster", 111 null, // MUST be specified in the element 112 "className"); 113 digester.addSetProperties(prefix + "Host/Cluster"); 114 digester.addSetNext(prefix + "Host/Cluster", 115 "setCluster", 116 "org.apache.catalina.Cluster"); 117 //Cluster configuration end 118 119 digester.addObjectCreate(prefix + "Host/Listener", 120 null, // MUST be specified in the element 121 "className"); 122 digester.addSetProperties(prefix + "Host/Listener"); 123 digester.addSetNext(prefix + "Host/Listener", 124 "addLifecycleListener", 125 "org.apache.catalina.LifecycleListener"); 126 127 digester.addRuleSet(new RealmRuleSet(prefix + "Host/")); 128 129 digester.addObjectCreate(prefix + "Host/Valve", 130 null, // MUST be specified in the element 131 "className"); 132 digester.addSetProperties(prefix + "Host/Valve"); 133 digester.addSetNext(prefix + "Host/Valve", 134 "addValve", 135 "org.apache.catalina.Valve"); 136 137 } 138 139 140 }