costin      2003/03/25 09:52:56

  Modified:    util/java/org/apache/tomcat/util/http/mapper Mapper.java
  Log:
  Add the host automatically. We don't really need the Host object to be anything -
  we map to Context and we get the Host object from there.
  ( well, Wrapper is the only object that needs to be mapped )
  
  Few methods to display the info ( for JMX console use )
  
  Revision  Changes    Path
  1.12      +79 -3     
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java
  
  Index: Mapper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Mapper.java       13 Mar 2003 06:17:53 -0000      1.11
  +++ Mapper.java       25 Mar 2003 17:52:56 -0000      1.12
  @@ -63,6 +63,8 @@
   
   import org.apache.tomcat.util.buf.CharChunk;
   import org.apache.tomcat.util.buf.MessageBytes;
  +import java.util.List;
  +import java.util.ArrayList;
   
   /**
    * Mapper, which implements the servlet API mapping rules (which are derived
  @@ -194,6 +196,14 @@
           }
       }
   
  +    public String[] getHosts() {
  +        String hostN[]=new String[ hosts.length];
  +        for( int i=0; i<hosts.length; i++ ) {
  +            hostN[i]=hosts[i].name;
  +        }
  +        return hostN;
  +    }
  +
   
       /**
        * Add a new Context to an existing Host.
  @@ -210,8 +220,13 @@
   
           Host[] hosts = this.hosts;
           int pos = find(hosts, hostName);
  -        if (pos < 0) {
  -            return;
  +        if( pos <0 ) {
  +            addHost(hostName, "");
  +            hosts = this.hosts;
  +            pos = find(hosts, hostName);
  +        }
  +        if( pos <0 ) {
  +            System.out.println("No host found " + hostName); // XXX log
           }
           Host host = hosts[pos];
           if (host.name.equals(hostName)) {
  @@ -256,6 +271,24 @@
           }
       }
   
  +    /** Return all contexts, in //HOST/PATH form
  +     *
  +     * @return
  +     */
  +    public String[] getContextNames() {
  +        List list=new ArrayList();
  +        for( int i=0; i<hosts.length; i++ ) {
  +            for( int j=0; j<hosts[i].contexts.length; j++ ) {
  +                String cname=hosts[i].contexts[j].name;
  +                list.add("//" + hosts[i].name +
  +                        (cname.startsWith("/") ? cname : "/"));
  +            }
  +        }
  +        String res[]=new String[list.size()];
  +        return (String[])list.toArray(res);
  +    }
  +
  +
   
       /**
        * Add a new Wrapper to an existing Context.
  @@ -276,7 +309,8 @@
           if (host.name.equals(hostName)) {
               Context[] contexts = host.contexts;
               int pos2 = find(contexts, contextPath);
  -            if (pos2 < 0) {
  +            if( pos2<0 ) {
  +                logger.error("Can't find context " + contextPath );
                   return;
               }
               Context context = contexts[pos2];
  @@ -382,6 +416,44 @@
           }
       }
   
  +    public String getWrappersString( String host, String context ) {
  +        String names[]=getWrapperNames(host, context);
  +        StringBuffer sb=new StringBuffer();
  +        for( int i=0; i<names.length; i++ ) {
  +            sb.append(names[i]).append(":");
  +        }
  +        return sb.toString();
  +    }
  +        
  +    public String[] getWrapperNames( String host, String context ) {
  +        List list=new ArrayList();
  +        if( host==null ) host="";
  +        if( context==null ) context="";
  +        for( int i=0; i<hosts.length; i++ ) {
  +            if( ! host.equals( hosts[i].name ))
  +                continue;
  +            for( int j=0; j<hosts[i].contexts.length; j++ ) {
  +                if( ! context.equals( hosts[i].contexts[j].name))
  +                    continue;
  +                // found the context
  +                Context ctx=hosts[i].contexts[j];
  +                list.add( ctx.defaultWrapper.path);
  +                for( int k=0; k<ctx.exactWrappers.length; k++ ) {
  +                    list.add( ctx.exactWrappers[k].path);
  +                }
  +                for( int k=0; k<ctx.wildcardWrappers.length; k++ ) {
  +                    list.add( ctx.wildcardWrappers[k].path + "*");
  +                }
  +                for( int k=0; k<ctx.extensionWrappers.length; k++ ) {
  +                    list.add( "*." + ctx.extensionWrappers[k].path);
  +                }
  +            }
  +        }
  +        String res[]=new String[list.size()];
  +        return (String[])list.toArray(res);
  +    }
  +
  +
   
       /**
        * Map the specified host name and URI, mutating the given mapping data.
  @@ -780,6 +852,10 @@
   
           // Special cases: -1 and 0
           if (b == -1) {
  +            return -1;
  +        }
  +        if( name==null || map.length ==0 ) {
  +            System.out.println("XXX Mapper: unexpected null " + name + " " + map);
               return -1;
           }
           if (name.compareTo(map[0].name) < 0) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to