gt:             newAliases[i] = aliases[i];
context: /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  
  package org.apache.catalina.core;
  
  
  import java.util.Locale;
  
  import javax.management.MBeanServer;
  import javax.management.ObjectName;
  
  import org.apache.catalina.Container;
  import org.apache.catalina.Context;
  import org.apache.catalina.Host;
  import org.apache.catalina.LifecycleException;
  import org.apache.catalina.Valve;
  import org.apache.catalina.startup.HostConfig;
  import org.apache.catalina.valves.ValveBase;
  import org.apache.tomcat.util.modeler.Registry;
  
  
  /**
   * Standard implementation of the <b>Host</b> interface.  Each
   * child container must be a Context implementation to process the
   * requests directed to a particular web application.
   *
   * @author Craig R. McClanahan
   * @author Remy Maucherat
   * @version $Revision: 1686 $ $Date: 2011-03-23 17:54:28 +0100 (Wed, 23 Mar 2011) $
   */
  
  public class StandardHost
      extends ContainerBase
      implements Host  
   {
      /* Why do we implement deployer and delegate to deployer ??? */
  
      private static org.jboss.logging.Logger log=
          org.jboss.logging.Logger.getLogger( StandardHost.class );
      
      // ----------------------------------------------------------- Constructors
  
  
      /**
       * Create a new StandardHost component with the default basic Valve.
       */
      public StandardHost() {
  
          super();
          pipeline.setBasic(new StandardHostValve());
          startChildren = 
              Boolean.valueOf(System.getProperty("org.apache.catalina.core.StandardHost.startChildren", "false")).booleanValue();
  
      }
  
  
      // ----------------------------------------------------- Instance Variables
  
  
      /**
       * The set of aliases for this Host.
       */
      private String[] aliases = new String[0];
  
  
      /**
       * The application root for this Host.
       */
      private String appBase = ".";
  
  
      /**
       * The default webapp name.
       */
      private String defaultWebapp = "ROOT";
  
  
      /**
       * The Java class name of the default context configuration class
       * for deployed web applications.
       */
      private String configClass =
          System.getProperty("org.apache.catalina.core.StandardHost.configClass", null);
  
  
      /**
       * The Java class name of the default Context implementation class for
       * deployed web applications.
       */
      private String contextClass =
          "org.apache.catalina.core.StandardContext";
  
  
      /**
       * The Java class name of the default error reporter implementation class 
       * for deployed web applications.
       */
      private String errorReportValveClass =
          "org.apache.catalina.valves.ErrorReportValve";
  
      /**
       * The object name for the errorReportValve.
       */
      private ObjectName errorReportValveObjectName = null;
  
      /**
       * The descriptive information string for this implementation.
       */
      private static final String info =
          "org.apache.catalina.core.StandardHost/1.0";
  
  
      /**
       * Work Directory base for applications.
       */
      private String workDir = null;
  
  
      // ------------------------------------------------------------- Properties
  
  
      /**
       * Return the application root for this Host.  This can be an absolute
       * pathname, a relative pathname, or a URL.
       */
      public String getAppBase() {
  
          return (this.appBase);
  
      }
  
  
      /**
       * Set the application root for this Host.  This can be an absolute
       * pathname, a relative pathname, or a URL.
       *
       * @param appBase The new application root
       */
      public void setAppBase(String appBase) {
  
          String oldAppBase = this.appBase;
          this.appBase = appBase;
          support.firePropertyChange("appBase", oldAppBase, this.appBase);
  
      }
  
  
      public String getDefaultWebapp() {
  
          return (this.defaultWebapp);
  
      }
  
  
      public void setDefaultWebapp(String defaultWebapp) {
  
          String oldDefaultWebapp = this.defaultWebapp;
          this.defaultWebapp = defaultWebapp;
          support.firePropertyChange("defaultWebapp", oldDefaultWebapp, this.defaultWebapp);
  
      }
  
  
      /**
       * Return the Java class name of the context configuration class
       * for new web applications.
       */
      public String getConfigClass() {
  
          return (this.configClass);
  
      }
  
  
      /**
       * Set the Java class name of the context configuration class
       * for new web applications.
       *
       * @param configClass The new context configuration class
       */
      public void setConfigClass(String configClass) {
  
          String oldConfigClass = this.configClass;
          this.configClass = configClass;
          support.firePropertyChange("configClass",
                                     oldConfigClass, this.configClass);
  
      }
  
  
      /**
       * Return the Java class name of the Context implementation class
       * for new web applications.
       */
      public String getContextClass() {
  
          return (this.contextClass);
  
      }
  
  
      /**
       * Set the Java class name of the Context implementation class
       * for new web applications.
       *
       * @param contextClass The new context implementation class
       */
      public void setContextClass(String contextClass) {
  
          String oldContextClass = this.contextClass;
          this.contextClass = contextClass;
          support.firePropertyChange("contextClass",
                                     oldContextClass, this.contextClass);
  
      }
  
  
      /**
       * Return the Java class name of the error report valve class
       * for new web applications.
       */
      public String getErrorReportValveClass() {
  
          return (this.errorReportValveClass);
  
      }
  
  
      /**
       * Set the Java class name of the error report valve class
       * for new web applications.
       *
       * @param errorReportValveClass The new error report valve class
       */
      public void setErrorReportValveClass(String errorReportValveClass) {
  
          String oldErrorReportValveClassClass = this.errorReportValveClass;
          this.errorReportValveClass = errorReportValveClass;
          support.firePropertyChange("errorReportValveClass",
                                     oldErrorReportValveClassClass, 
                                     this.errorReportValveClass);
  
      }
  
  
      /**
       * Return the canonical, fully qualified, name of the virtual host
       * this Container represents.
       */
      public String getName() {
  
          return (name);
  
      }
  
  
      /**
       * Set the canonical, fully qualified, name of the virtual host
       * this Container represents.
       *
       * @param name Virtual host name
       *
       * @exception IllegalArgumentException if name is null
       */
      public void setName(String name) {
  
          if (name == null)
              throw new IllegalArgumentException
                  (sm.getString("standardHost.nullName"));
  
          name = name.toLowerCase(Locale.ENGLISH);      // Internally all names are lower case
  
          String oldName = this.name;
          this.name = name;
          support.firePropertyChange("name", oldName, this.name);
  
      }
  
  
      /**
       * Host work directory base.
       */
      public String getWorkDir() {
  
          return (workDir);
      }
  
  
      /**
       * Host work directory base.
       */
      public void setWorkDir(String workDir) {
  
          this.workDir = workDir;
      }
  
  
      // --------------------------------------------------------- Public Methods
  
  
      /**
       * Add an alias name that should be mapped to this same Host.
       *
       * @param alias The alias to be added
       */
      public void addAlias(String alias) {
  
          alias = alias.toLowerCase(Locale.ENGLISH);
  
          // Skip duplicate aliases
          for (int i = 0; i < aliases.length; i++) {
              if (aliases[i].equals(alias))
                  return;
          }
  
          // Add this alias to the list
          String newAliases[] = new String[aliases.length + 1];
          for (int i = 0; i < aliases.length; i++)
  