From 52ad951cc5505fabd72c7251c195b5557ea3b4ca Mon Sep 17 00:00:00 2001 From: markt Date: Wed, 6 May 2009 10:22:02 +0000 Subject: [PATCH] Start process of removing o.a.c.ServerFactory. Need to do this so: 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 --- .../org/apache/catalina/realm/DataSourceRealm.java | 6 ++--- java/org/apache/catalina/realm/RealmBase.java | 28 ++++++++++++++++++++++ .../apache/catalina/realm/UserDatabaseRealm.java | 5 ++-- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/java/org/apache/catalina/realm/DataSourceRealm.java b/java/org/apache/catalina/realm/DataSourceRealm.java index c6ec6e93a..243fec93e 100644 --- a/java/org/apache/catalina/realm/DataSourceRealm.java +++ b/java/org/apache/catalina/realm/DataSourceRealm.java @@ -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(); diff --git a/java/org/apache/catalina/realm/RealmBase.java b/java/org/apache/catalina/realm/RealmBase.java index c5de0b11b..347a5f192 100644 --- a/java/org/apache/catalina/realm/RealmBase.java +++ b/java/org/apache/catalina/realm/RealmBase.java @@ -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), null 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 diff --git a/java/org/apache/catalina/realm/UserDatabaseRealm.java b/java/org/apache/catalina/realm/UserDatabaseRealm.java index 97ea1d41e..cee83fea4 100644 --- a/java/org/apache/catalina/realm/UserDatabaseRealm.java +++ b/java/org/apache/catalina/realm/UserDatabaseRealm.java @@ -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", -- 2.11.0