Start process of removing o.a.c.ServerFactory. Need to do this so:
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 6 May 2009 10:22:02 +0000 (10:22 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 6 May 2009 10:22:02 +0000 (10:22 +0000)
a) The current o.a.c.startup.Tomcat tests pass
b) We can start to use o.a.c.startup.Tomcat for some new unit tests
This removes ServerFactory from the Realms

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@772132 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/realm/DataSourceRealm.java
java/org/apache/catalina/realm/RealmBase.java
java/org/apache/catalina/realm/UserDatabaseRealm.java

index c6ec6e9..243fec9 100644 (file)
@@ -31,7 +31,6 @@ import javax.sql.DataSource;
 
 import org.apache.naming.ContextBindings;
 import org.apache.catalina.LifecycleException;
-import org.apache.catalina.ServerFactory;
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.util.StringManager;
 
@@ -396,9 +395,8 @@ public class DataSourceRealm
                 context = ContextBindings.getClassLoader();
                 context = (Context) context.lookup("comp/env");
             } else {
-                StandardServer server = 
-                    (StandardServer) ServerFactory.getServer();
-                context = server.getGlobalNamingContext();
+                context =
+                    ((StandardServer)getServer()).getGlobalNamingContext();
             }
             DataSource dataSource = (DataSource)context.lookup(dataSourceName);
            return dataSource.getConnection();
index c5de0b1..347a5f1 100644 (file)
@@ -37,11 +37,15 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
+import org.apache.catalina.Engine;
 import org.apache.catalina.Globals;
+import org.apache.catalina.Host;
 import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.LifecycleListener;
 import org.apache.catalina.Realm;
+import org.apache.catalina.Server;
+import org.apache.catalina.Service;
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
 import org.apache.catalina.core.ContainerBase;
@@ -1219,6 +1223,30 @@ public abstract class RealmBase
     protected abstract Principal getPrincipal(String username);
 
 
+    /**
+     * Return the Server object that is the ultimate parent for the container
+     * with which this Realm is associated. If the server cannot be found (eg
+     * because the container hierarchy is not complete), <code>null</code> is
+     * returned.
+     */
+    protected Server getServer() {
+        Container c = container;
+        if (c instanceof Context) {
+            c = c.getParent();
+        }
+        if (c instanceof Host) {
+            c = c.getParent();
+        }
+        if (c instanceof Engine) {
+            Service s = ((Engine)c).getService();
+            if (s != null) {
+                return s.getServer();
+            }
+        }
+        return null;
+    }
+
+    
     // --------------------------------------------------------- Static Methods
 
 
index 97ea1d4..cee83fe 100644 (file)
@@ -29,7 +29,6 @@ import javax.naming.Context;
 import org.apache.catalina.Group;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.Role;
-import org.apache.catalina.ServerFactory;
 import org.apache.catalina.User;
 import org.apache.catalina.UserDatabase;
 import org.apache.catalina.core.StandardServer;
@@ -248,8 +247,8 @@ public class UserDatabaseRealm
         super.start();
 
         try {
-            StandardServer server = (StandardServer) ServerFactory.getServer();
-            Context context = server.getGlobalNamingContext();
+            Context context =
+                ((StandardServer)getServer()).getGlobalNamingContext();
             database = (UserDatabase) context.lookup(resourceName);
         } catch (Throwable e) {
             containerLog.error(sm.getString("userDatabaseRealm.lookup",