You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2012/11/18 16:27:58 UTC

svn commit: r1410896 - in /tomcat/trunk: java/org/apache/catalina/authenticator/ java/org/apache/catalina/connector/ java/org/apache/catalina/core/ java/org/apache/catalina/mapper/ test/org/apache/catalina/mapper/

Author: rjung
Date: Sun Nov 18 15:27:56 2012
New Revision: 1410896

URL: http://svn.apache.org/viewvc?rev=1410896&view=rev
Log:
Type-safety for the Mapper - Part 2/2

Use generics for MapElement and specialize MappedHost,
MapedContext and MappedWrapper to host, Context and Wrapper.

Remove unneeded casts in all code using the Mapper.

Use real Host, Context and Wrapper objects in TestMapper.

Future possible work: restrict Context parents to Host.
Otherwise MapperListener can't register a new Context.

Modified:
    tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java
    tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
    tomcat/trunk/java/org/apache/catalina/connector/Request.java
    tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
    tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java
    tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java
    tomcat/trunk/java/org/apache/catalina/mapper/MappingData.java
    tomcat/trunk/test/org/apache/catalina/mapper/TestMapper.java

Modified: tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java?rev=1410896&r1=1410895&r2=1410896&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java Sun Nov 18 15:27:56 2012
@@ -457,7 +457,7 @@ public abstract class AuthenticatorBase 
 
         // The Servlet may specify security constraints through annotations.
         // Ensure that they have been processed before constraints are checked
-        Wrapper wrapper = (Wrapper) request.getMappingData().wrapper;
+        Wrapper wrapper = request.getMappingData().wrapper;
         if (wrapper != null) {
             wrapper.servletSecurityAnnotationScan();
         }

Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1410896&r1=1410895&r2=1410896&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Sun Nov 18 15:27:56 2012
@@ -257,7 +257,7 @@ public class CoyoteAdapter implements Ad
             req.getRequestProcessor().setWorkerThreadName(null);
             // Recycle the wrapper request and response
             if (error || response.isClosed() || !request.isComet()) {
-                ((Context) request.getMappingData().context).logAccess(
+                request.getMappingData().context.logAccess(
                         request, response,
                         System.currentTimeMillis() - req.getStartTime(),
                         false);
@@ -288,7 +288,7 @@ public class CoyoteAdapter implements Ad
                 // Have to test this first since state may change while in this
                 // method and this is only required if entering this method in
                 // this state
-                Context ctxt = (Context) request.getMappingData().context;
+                Context ctxt = request.getMappingData().context;
                 if (ctxt != null) {
                     ctxt.fireRequestDestroyEvent(request);
                 }
@@ -364,7 +364,7 @@ public class CoyoteAdapter implements Ad
                 request.finishRequest();
                 response.finishResponse();
                 req.action(ActionCode.POST_REQUEST , null);
-                ((Context) request.getMappingData().context).logAccess(
+                request.getMappingData().context.logAccess(
                         request, response,
                         System.currentTimeMillis() - req.getStartTime(),
                         false);
@@ -477,7 +477,7 @@ public class CoyoteAdapter implements Ad
                     // If postParseRequest() failed, it has already logged it.
                     // If context is null this was the start of a comet request
                     // that failed and has already been logged.
-                    ((Context) request.getMappingData().context).logAccess(
+                    request.getMappingData().context.logAccess(
                             request, response,
                             System.currentTimeMillis() - req.getStartTime(),
                             false);
@@ -538,11 +538,11 @@ public class CoyoteAdapter implements Ad
             if (request.mappingData != null) {
                 if (request.mappingData.context != null) {
                     logged = true;
-                    ((Context) request.mappingData.context).logAccess(
+                    request.mappingData.context.logAccess(
                             request, response, time, true);
                 } else if (request.mappingData.host != null) {
                     logged = true;
-                    ((Host) request.mappingData.host).logAccess(
+                    request.mappingData.host.logAccess(
                             request, response, time, true);
                 }
             }
@@ -684,8 +684,8 @@ public class CoyoteAdapter implements Ad
             // This will map the the latest version by default
             connector.getService().getMapper().map(serverName, decodedURI,
                     version, request.getMappingData());
-            request.setContext((Context) request.getMappingData().context);
-            request.setWrapper((Wrapper) request.getMappingData().wrapper);
+            request.setContext(request.getMappingData().context);
+            request.setWrapper(request.getMappingData().wrapper);
 
             // Single contextVersion therefore no possibility of remap
             if (request.getMappingData().contexts == null) {
@@ -735,9 +735,9 @@ public class CoyoteAdapter implements Ad
                     mapRequired = false;
                 } else {
                     // Find the context associated with the session
-                    Object[] objs = request.getMappingData().contexts;
-                    for (int i = (objs.length); i > 0; i--) {
-                        Context ctxt = (Context) objs[i - 1];
+                    Context[] contexts = request.getMappingData().contexts;
+                    for (int i = (contexts.length); i > 0; i--) {
+                        Context ctxt = contexts[i - 1];
                         if (ctxt.getManager().findSession(sessionID) != null) {
                             // Was the correct context already mapped?
                             if (ctxt.equals(request.getMappingData().context)) {
@@ -958,7 +958,7 @@ public class CoyoteAdapter implements Ad
         // context, don't go looking for a session ID in a cookie as a cookie
         // from a parent context with a session ID may be present which would
         // overwrite the valid session ID encoded in the URL
-        Context context = (Context) request.getMappingData().context;
+        Context context = request.getMappingData().context;
         if (context != null && !context.getServletContext()
                 .getEffectiveSessionTrackingModes().contains(
                         SessionTrackingMode.COOKIE)) {

Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1410896&r1=1410895&r2=1410896&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Sun Nov 18 15:27:56 2012
@@ -628,7 +628,7 @@ public class Request
      * Return the Host within which this Request is being processed.
      */
     public Host getHost() {
-        return ((Host) mappingData.host);
+        return mappingData.host;
     }
 
 
@@ -2233,7 +2233,7 @@ public class Request
                 return false;
             } else {
                 for (int i = (getMappingData().contexts.length); i > 0; i--) {
-                    Context ctxt = (Context) getMappingData().contexts[i - 1];
+                    Context ctxt = getMappingData().contexts[i - 1];
                     try {
                         if (ctxt.getManager().findSession(requestedSessionId) !=
                                 null) {

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1410896&r1=1410895&r2=1410896&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Sun Nov 18 15:27:56 2012
@@ -475,7 +475,7 @@ public class ApplicationContext
             return (null);
         }
 
-        Wrapper wrapper = (Wrapper) mappingData.wrapper;
+        Wrapper wrapper = mappingData.wrapper;
         String wrapperPath = mappingData.wrapperPath.toString();
         String pathInfo = mappingData.pathInfo.toString();
 

Modified: tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java?rev=1410896&r1=1410895&r2=1410896&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java Sun Nov 18 15:27:56 2012
@@ -19,8 +19,11 @@ package org.apache.catalina.mapper;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.catalina.Context;
+import org.apache.catalina.Host;
 import org.apache.catalina.WebResource;
 import org.apache.catalina.WebResourceRoot;
+import org.apache.catalina.Wrapper;
 import org.apache.tomcat.util.buf.Ascii;
 import org.apache.tomcat.util.buf.CharChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
@@ -60,7 +63,7 @@ public final class Mapper {
      * Mapping from Context object to Context version to support
      * RequestDispatcher mappings.
      */
-    protected Map<Object, ContextVersion> contextObjectToContextVersionMap =
+    protected Map<Context, ContextVersion> contextObjectToContextVersionMap =
             new ConcurrentHashMap<>();
 
 
@@ -82,7 +85,7 @@ public final class Mapper {
      * @param host Host object
      */
     public synchronized void addHost(String name, String[] aliases,
-                                     Object host) {
+                                     Host host) {
         MappedHost[] newHosts = new MappedHost[hosts.length + 1];
         MappedHost newHost = new MappedHost();
         ContextList contextList = new ContextList();
@@ -116,7 +119,7 @@ public final class Mapper {
         if (pos < 0) {
             return;
         }
-        Object host = hosts[pos].object;
+        Host host = hosts[pos].object;
         MappedHost[] newHosts = new MappedHost[hosts.length - 1];
         if (removeMap(hosts, newHosts, name)) {
             hosts = newHosts;
@@ -185,8 +188,8 @@ public final class Mapper {
      * @param welcomeResources Welcome files defined for this context
      * @param resources Static resources of the context
      */
-    public void addContextVersion(String hostName, Object host, String path,
-            String version, Object context, String[] welcomeResources,
+    public void addContextVersion(String hostName, Host host, String path,
+            String version, Context context, String[] welcomeResources,
             WebResourceRoot resources) {
 
         MappedHost[] hosts = this.hosts;
@@ -244,15 +247,15 @@ public final class Mapper {
     /**
      * Remove a context from an existing host.
      *
-     * @param object    The actual context
+     * @param ctxt      The actual context
      * @param hostName  Virtual host name this context belongs to
      * @param path      Context path
      * @param version   Context version
      */
-    public void removeContextVersion(Object object, String hostName,
+    public void removeContextVersion(Context ctxt, String hostName,
             String path, String version) {
 
-        contextObjectToContextVersionMap.remove(object);
+        contextObjectToContextVersionMap.remove(ctxt);
 
         MappedHost[] hosts = this.hosts;
         int pos = find(hosts, hostName);
@@ -301,7 +304,7 @@ public final class Mapper {
 
 
     public void addWrapper(String hostName, String contextPath, String version,
-                           String path, Object wrapper, boolean jspWildCard,
+                           String path, Wrapper wrapper, boolean jspWildCard,
                            boolean resourceOnly) {
         MappedHost[] hosts = this.hosts;
         int pos = find(hosts, hostName);
@@ -347,7 +350,7 @@ public final class Mapper {
      * and the mapping path contains a wildcard; false otherwise
      */
     protected void addWrapper(ContextVersion context, String path,
-            Object wrapper, boolean jspWildCard, boolean resourceOnly) {
+            Wrapper wrapper, boolean jspWildCard, boolean resourceOnly) {
 
         synchronized (context) {
             MappedWrapper newWrapper = new MappedWrapper();
@@ -663,11 +666,12 @@ public final class Mapper {
      * Map the specified URI relative to the context,
      * mutating the given mapping data.
      *
+     * @param context The actual context
      * @param uri URI
      * @param mappingData This structure will contain the result of the mapping
      *                    operation
      */
-    public void map(Object context, MessageBytes uri,
+    public void map(Context context, MessageBytes uri,
             MappingData mappingData) throws Exception {
 
         ContextVersion contextVersion =
@@ -768,7 +772,7 @@ public final class Mapper {
             ContextVersion[] contextVersions = context.versions;
             int versionCount = contextVersions.length;
             if (versionCount > 1) {
-                Object[] contextObjects = new Object[contextVersions.length];
+                Context[] contextObjects = new Context[contextVersions.length];
                 for (int i = 0; i < contextObjects.length; i++) {
                     contextObjects[i] = contextVersions[i].object;
                 }
@@ -1122,7 +1126,7 @@ public final class Mapper {
      * This will return the index for the closest inferior or equal item in the
      * given array.
      */
-    private static final int find(MapElement[] map, CharChunk name) {
+    private static final <T> int find(MapElement<T>[] map, CharChunk name) {
         return find(map, name, name.getStart(), name.getEnd());
     }
 
@@ -1132,7 +1136,7 @@ public final class Mapper {
      * This will return the index for the closest inferior or equal item in the
      * given array.
      */
-    private static final int find(MapElement[] map, CharChunk name,
+    private static final <T> int find(MapElement<T>[] map, CharChunk name,
                                   int start, int end) {
 
         int a = 0;
@@ -1178,7 +1182,7 @@ public final class Mapper {
      * This will return the index for the closest inferior or equal item in the
      * given array.
      */
-    private static final int findIgnoreCase(MapElement[] map, CharChunk name) {
+    private static final <T> int findIgnoreCase(MapElement<T>[] map, CharChunk name) {
         return findIgnoreCase(map, name, name.getStart(), name.getEnd());
     }
 
@@ -1188,7 +1192,7 @@ public final class Mapper {
      * This will return the index for the closest inferior or equal item in the
      * given array.
      */
-    private static final int findIgnoreCase(MapElement[] map, CharChunk name,
+    private static final <T> int findIgnoreCase(MapElement<T>[] map, CharChunk name,
                                   int start, int end) {
 
         int a = 0;
@@ -1234,7 +1238,7 @@ public final class Mapper {
      * This will return the index for the closest inferior or equal item in the
      * given array.
      */
-    private static final int find(MapElement[] map, String name) {
+    private static final <T> int find(MapElement<T>[] map, String name) {
 
         int a = 0;
         int b = map.length - 1;
@@ -1396,8 +1400,8 @@ public final class Mapper {
      * Insert into the right place in a sorted MapElement array, and prevent
      * duplicates.
      */
-    private static final boolean insertMap
-        (MapElement[] oldMap, MapElement[] newMap, MapElement newElement) {
+    private static final <T> boolean insertMap
+        (MapElement<T>[] oldMap, MapElement<T>[] newMap, MapElement<T> newElement) {
         int pos = find(oldMap, newElement.name);
         if ((pos != -1) && (newElement.name.equals(oldMap[pos].name))) {
             return false;
@@ -1413,8 +1417,8 @@ public final class Mapper {
     /**
      * Insert into the right place in a sorted MapElement array.
      */
-    private static final boolean removeMap
-        (MapElement[] oldMap, MapElement[] newMap, String name) {
+    private static final <T> boolean removeMap
+        (MapElement<T>[] oldMap, MapElement<T>[] newMap, String name) {
         int pos = find(oldMap, name);
         if ((pos != -1) && (name.equals(oldMap[pos].name))) {
             System.arraycopy(oldMap, 0, newMap, 0, pos);
@@ -1429,10 +1433,10 @@ public final class Mapper {
     // ------------------------------------------------- MapElement Inner Class
 
 
-    protected abstract static class MapElement {
+    protected abstract static class MapElement<T> {
 
         public String name = null;
-        public Object object = null;
+        public T object = null;
 
     }
 
@@ -1441,7 +1445,7 @@ public final class Mapper {
 
 
     protected static final class MappedHost
-        extends MapElement {
+        extends MapElement<Host> {
 
         public ContextList contextList = null;
 
@@ -1462,12 +1466,12 @@ public final class Mapper {
     // ---------------------------------------------------- Context Inner Class
 
 
-    protected static final class MappedContext extends MapElement {
+    protected static final class MappedContext extends MapElement<Context> {
         public ContextVersion[] versions = new ContextVersion[0];
     }
 
 
-    protected static final class ContextVersion extends MapElement {
+    protected static final class ContextVersion extends MapElement<Context> {
         public String path = null;
         public String[] welcomeResources = new String[0];
         public WebResourceRoot resources = null;
@@ -1484,7 +1488,7 @@ public final class Mapper {
 
 
     protected static class MappedWrapper
-        extends MapElement {
+        extends MapElement<Wrapper> {
 
         public boolean jspWildCard = false;
         public boolean resourceOnly = false;

Modified: tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java?rev=1410896&r1=1410895&r2=1410896&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java Sun Nov 18 15:27:56 2012
@@ -350,7 +350,7 @@ public class MapperListener extends Life
         if ("/".equals(contextPath)) {
             contextPath = "";
         }
-        Container host = context.getParent();
+        Host host = (Host)context.getParent();
 
         WebResourceRoot resources = context.getResources();
         String[] welcomeFiles = context.findWelcomeFiles();

Modified: tomcat/trunk/java/org/apache/catalina/mapper/MappingData.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/MappingData.java?rev=1410896&r1=1410895&r2=1410896&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/MappingData.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/MappingData.java Sun Nov 18 15:27:56 2012
@@ -17,6 +17,9 @@
 
 package org.apache.catalina.mapper;
 
+import org.apache.catalina.Context;
+import org.apache.catalina.Host;
+import org.apache.catalina.Wrapper;
 import org.apache.tomcat.util.buf.MessageBytes;
 
 /**
@@ -26,10 +29,10 @@ import org.apache.tomcat.util.buf.Messag
  */
 public class MappingData {
 
-    public Object host = null;
-    public Object context = null;
-    public Object[] contexts = null;
-    public Object wrapper = null;
+    public Host host = null;
+    public Context context = null;
+    public Context[] contexts = null;
+    public Wrapper wrapper = null;
     public boolean jspWildCard = false;
 
     public final MessageBytes contextPath = MessageBytes.newInstance();

Modified: tomcat/trunk/test/org/apache/catalina/mapper/TestMapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/mapper/TestMapper.java?rev=1410896&r1=1410895&r2=1410896&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/mapper/TestMapper.java (original)
+++ tomcat/trunk/test/org/apache/catalina/mapper/TestMapper.java Sun Nov 18 15:27:56 2012
@@ -16,12 +16,20 @@
  */
 package org.apache.catalina.mapper;
 
+import java.util.HashMap;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.catalina.Context;
+import org.apache.catalina.Host;
+import org.apache.catalina.Wrapper;
+import org.apache.catalina.core.StandardContext;
+import org.apache.catalina.core.StandardHost;
+import org.apache.catalina.core.StandardWrapper;
 import org.apache.catalina.startup.LoggingBaseTest;
 import org.apache.tomcat.util.buf.MessageBytes;
 
@@ -29,28 +37,52 @@ public class TestMapper extends LoggingB
 
     private Mapper mapper;
 
+    private HashMap<String, Host> hostMap = new HashMap<>();
+
+    private synchronized Host createHost(String name) {
+        Host host = hostMap.get(name);
+        if (host == null) {
+            host = new StandardHost();
+            host.setName(name);
+            hostMap.put(name, host);
+        }
+        return host;
+    }
+
+    private Context createContext(String name) {
+        Context context = new StandardContext();
+        context.setName(name);
+        return context;
+    }
+
+    private Wrapper createWrapper(String name) {
+        Wrapper wrapper = new StandardWrapper();
+        wrapper.setName(name);
+        return wrapper;
+    }
+
     @Before
     @Override
     public void setUp() throws Exception {
         super.setUp();
         mapper = new Mapper();
 
-        mapper.addHost("sjbjdvwsbvhrb", new String[0], "blah1");
-        mapper.addHost("sjbjdvwsbvhr/", new String[0], "blah1");
-        mapper.addHost("wekhfewuifweuibf", new String[0], "blah2");
-        mapper.addHost("ylwrehirkuewh", new String[0], "blah3");
-        mapper.addHost("iohgeoihro", new String[0], "blah4");
-        mapper.addHost("fwehoihoihwfeo", new String[0], "blah5");
-        mapper.addHost("owefojiwefoi", new String[0], "blah6");
-        mapper.addHost("iowejoiejfoiew", new String[0], "blah7");
-        mapper.addHost("iowejoiejfoiew", new String[0], "blah17");
-        mapper.addHost("ohewoihfewoih", new String[0], "blah8");
-        mapper.addHost("fewohfoweoih", new String[0], "blah9");
-        mapper.addHost("ttthtiuhwoih", new String[0], "blah10");
-        mapper.addHost("lkwefjwojweffewoih", new String[0], "blah11");
-        mapper.addHost("zzzuyopjvewpovewjhfewoih", new String[0], "blah12");
-        mapper.addHost("xxxxgqwiwoih", new String[0], "blah13");
-        mapper.addHost("qwigqwiwoih", new String[0], "blah14");
+        mapper.addHost("sjbjdvwsbvhrb", new String[0], createHost("blah1"));
+        mapper.addHost("sjbjdvwsbvhr/", new String[0], createHost("blah1"));
+        mapper.addHost("wekhfewuifweuibf", new String[0], createHost("blah2"));
+        mapper.addHost("ylwrehirkuewh", new String[0], createHost("blah3"));
+        mapper.addHost("iohgeoihro", new String[0], createHost("blah4"));
+        mapper.addHost("fwehoihoihwfeo", new String[0], createHost("blah5"));
+        mapper.addHost("owefojiwefoi", new String[0], createHost("blah6"));
+        mapper.addHost("iowejoiejfoiew", new String[0], createHost("blah7"));
+        mapper.addHost("iowejoiejfoiew", new String[0], createHost("blah17"));
+        mapper.addHost("ohewoihfewoih", new String[0], createHost("blah8"));
+        mapper.addHost("fewohfoweoih", new String[0], createHost("blah9"));
+        mapper.addHost("ttthtiuhwoih", new String[0], createHost("blah10"));
+        mapper.addHost("lkwefjwojweffewoih", new String[0], createHost("blah11"));
+        mapper.addHost("zzzuyopjvewpovewjhfewoih", new String[0], createHost("blah12"));
+        mapper.addHost("xxxxgqwiwoih", new String[0], createHost("blah13"));
+        mapper.addHost("qwigqwiwoih", new String[0], createHost("blah14"));
         mapper.addHostAlias("iowejoiejfoiew", "iowejoiejfoiew_alias");
 
         mapper.setDefaultHostName("ylwrehirkuewh");
@@ -59,31 +91,32 @@ public class TestMapper extends LoggingB
         welcomes[0] = "boo/baba";
         welcomes[1] = "bobou";
 
-        mapper.addContextVersion("iowejoiejfoiew", "blah7", "",
-                "0", "context0", new String[0], null);
-        mapper.addContextVersion("iowejoiejfoiew", "blah7", "/foo",
-                "0", "context1", new String[0], null);
-        mapper.addContextVersion("iowejoiejfoiew", "blah7", "/foo/bar",
-                "0", "context2", welcomes, null);
-        mapper.addContextVersion("iowejoiejfoiew", "blah7", "/foo/bar/bla",
-                "0", "context3", new String[0], null);
+        Host host = createHost("blah7");
+        mapper.addContextVersion("iowejoiejfoiew", host, "",
+                "0", createContext("context0"), new String[0], null);
+        mapper.addContextVersion("iowejoiejfoiew", host, "/foo",
+                "0", createContext("context1"), new String[0], null);
+        mapper.addContextVersion("iowejoiejfoiew", host, "/foo/bar",
+                "0", createContext("context2"), welcomes, null);
+        mapper.addContextVersion("iowejoiejfoiew", host, "/foo/bar/bla",
+                "0", createContext("context3"), new String[0], null);
 
         mapper.addWrapper("iowejoiejfoiew", "/foo/bar", "0", "/fo/*",
-                "wrapper0", false, false);
+                createWrapper("wrapper0"), false, false);
         mapper.addWrapper("iowejoiejfoiew", "/foo/bar", "0", "/",
-                "wrapper1", false, false);
+                createWrapper("wrapper1"), false, false);
         mapper.addWrapper("iowejoiejfoiew", "/foo/bar", "0", "/blh",
-                "wrapper2", false, false);
+                createWrapper("wrapper2"), false, false);
         mapper.addWrapper("iowejoiejfoiew", "/foo/bar", "0", "*.jsp",
-                "wrapper3", false, false);
+                createWrapper("wrapper3"), false, false);
         mapper.addWrapper("iowejoiejfoiew", "/foo/bar", "0", "/blah/bou/*",
-                "wrapper4", false, false);
+                createWrapper("wrapper4"), false, false);
         mapper.addWrapper("iowejoiejfoiew", "/foo/bar", "0", "/blah/bobou/*",
-                "wrapper5", false, false);
+                createWrapper("wrapper5"), false, false);
         mapper.addWrapper("iowejoiejfoiew", "/foo/bar", "0", "*.htm",
-                "wrapper6", false, false);
+                createWrapper("wrapper6"), false, false);
         mapper.addWrapper("iowejoiejfoiew", "/foo/bar/bla", "0", "/bobou/*",
-                "wrapper7", false, false);
+                createWrapper("wrapper7"), false, false);
     }
 
     @Test
@@ -94,7 +127,7 @@ public class TestMapper extends LoggingB
 
         // Make sure adding a duplicate *does not* overwrite
         final int iowPos = 3;
-        assertEquals("blah7", mapper.hosts[iowPos].object);
+        assertEquals("blah7", mapper.hosts[iowPos].object.getName());
 
         // Check for alphabetical order of host names
         String previous;
@@ -127,9 +160,9 @@ public class TestMapper extends LoggingB
         uri.getCharChunk().setLimit(-1);
 
         mapper.map(host, uri, null, mappingData);
-        assertEquals("blah7", mappingData.host);
-        assertEquals("context2", mappingData.context);
-        assertEquals("wrapper5", mappingData.wrapper);
+        assertEquals("blah7", mappingData.host.getName());
+        assertEquals("context2", mappingData.context.getName());
+        assertEquals("wrapper5", mappingData.wrapper.getName());
         assertEquals("/foo/bar", mappingData.contextPath.toString());
         assertEquals("/blah/bobou", mappingData.wrapperPath.toString());
         assertEquals("/foo", mappingData.pathInfo.toString());
@@ -141,9 +174,9 @@ public class TestMapper extends LoggingB
         uri.toChars();
         uri.getCharChunk().setLimit(-1);
         mapper.map(host, uri, null, mappingData);
-        assertEquals("blah7", mappingData.host);
-        assertEquals("context3", mappingData.context);
-        assertEquals("wrapper7", mappingData.wrapper);
+        assertEquals("blah7", mappingData.host.getName());
+        assertEquals("context3", mappingData.context.getName());
+        assertEquals("wrapper7", mappingData.wrapper.getName());
         assertEquals("/foo/bar/bla", mappingData.contextPath.toString());
         assertEquals("/bobou", mappingData.wrapperPath.toString());
         assertEquals("/foo", mappingData.pathInfo.toString());
@@ -154,9 +187,9 @@ public class TestMapper extends LoggingB
         uri.toChars();
         uri.getCharChunk().setLimit(-1);
         mapper.map(alias, uri, null, mappingData);
-        assertEquals("blah7", mappingData.host);
-        assertEquals("context3", mappingData.context);
-        assertEquals("wrapper7", mappingData.wrapper);
+        assertEquals("blah7", mappingData.host.getName());
+        assertEquals("context3", mappingData.context.getName());
+        assertEquals("wrapper7", mappingData.wrapper.getName());
         assertEquals("/foo/bar/bla", mappingData.contextPath.toString());
         assertEquals("/bobou", mappingData.wrapperPath.toString());
         assertEquals("/foo", mappingData.pathInfo.toString());



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org