You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2005/01/26 07:37:06 UTC

svn commit: r126472 - in geronimo/trunk/modules: connector-builder/src/java/org/apache/geronimo/connector/deployment deployment/src/java/org/apache/geronimo/deployment j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames jetty-builder/src/java/org/apache/geronimo/jetty/deployment kernel/src/java/org/apache/geronimo/kernel/registry naming-builder/src/java/org/apache/geronimo/naming/deployment security-builder/src/java/org/apache/geronimo/security/deployment service-builder/src/java/org/apache/geronimo/deployment/service

Author: djencks
Date: Tue Jan 25 22:37:04 2005
New Revision: 126472

URL: http://svn.apache.org/viewcvs?view=rev&rev=126472
Log:
keep the gbeans in a deployment context in a queriable container/registry.  Start using the query facility to resolve jndi references.  GERONIMO-552
Added:
   geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/GBeanDataRegistry.java
   geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/AbstractGBeanRegistry.java
Modified:
   geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java
   geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java
   geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/RefContext.java
   geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java
   geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java
   geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
   geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/BasicGBeanRegistry.java
   geronimo/trunk/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java
   geronimo/trunk/modules/security-builder/src/java/org/apache/geronimo/security/deployment/SecurityBuilder.java
   geronimo/trunk/modules/service-builder/src/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java

Modified: geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java?view=diff&rev=126472&p1=geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java&r1=126471&p2=geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java	(original)
+++ geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java	Tue Jan 25 22:37:04 2005
@@ -403,7 +403,7 @@
                 setDynamicGBeanDataAttributes(resourceAdapterInstanceGBeanData, geronimoResourceAdapter.getResourceadapterInstance().getConfigPropertySettingArray(), cl);
 
                 // set the work manager name
-                ObjectName workManagerName = ENCConfigBuilder.getGBeanId(NameFactory.JCA_WORK_MANAGER, geronimoResourceAdapter.getResourceadapterInstance().getWorkmanager(), moduleJ2eeContext, earContext.getGBeanNames(), kernel);
+                ObjectName workManagerName = ENCConfigBuilder.getGBeanId(NameFactory.JCA_WORK_MANAGER, geronimoResourceAdapter.getResourceadapterInstance().getWorkmanager(), moduleJ2eeContext, earContext, kernel);
                 resourceAdapterInstanceGBeanData.setReferencePattern("WorkManager", workManagerName);
 
                 String resourceAdapterName = geronimoResourceAdapter.getResourceadapterInstance().getResourceadapterName();

Modified: geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java?view=diff&rev=126472&p1=geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java&r1=126471&p2=geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java	(original)
+++ geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java	Tue Jan 25 22:37:04 2005
@@ -25,40 +25,37 @@
 import java.io.InputStream;
 import java.io.ObjectOutputStream;
 import java.io.OutputStream;
+import java.net.MalformedURLException;
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
-import java.net.MalformedURLException;
 import java.net.URLClassLoader;
-import java.net.URISyntaxException;
+import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
+import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
-import java.util.ArrayList;
 import java.util.StringTokenizer;
-import java.util.LinkedList;
+import java.util.jar.Attributes;
 import java.util.jar.JarFile;
 import java.util.jar.Manifest;
-import java.util.jar.Attributes;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 
+import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.deployment.util.DeploymentUtil;
-import org.apache.geronimo.gbean.jmx.GBeanMBean;
 import org.apache.geronimo.gbean.GBeanData;
-import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.GBeanNotFoundException;
-import org.apache.geronimo.kernel.management.State;
-import org.apache.geronimo.kernel.repository.Repository;
+import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.config.Configuration;
 import org.apache.geronimo.kernel.config.ConfigurationManager;
 import org.apache.geronimo.kernel.config.ConfigurationModuleType;
-import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.kernel.management.State;
+import org.apache.geronimo.kernel.repository.Repository;
 
 /**
  * @version $Rev$ $Date$
@@ -71,7 +68,7 @@
     private final ConfigurationModuleType type;
     private final Kernel kernel;
     private final GBeanData config;
-    private final Map gbeans = new HashMap();
+    private final GBeanDataRegistry gbeans = new GBeanDataRegistry();
     private final Set dependencies = new LinkedHashSet();
     private final LinkedHashSet classPath = new LinkedHashSet();
     private final File baseDir;
@@ -116,6 +113,8 @@
             throw new AssertionError();
         }
 
+        gbeans.setDefaultDomain(domain);
+
         if (kernel != null && parentID != null) {
             ConfigurationManager configurationManager = kernel.getConfigurationManager();
             ObjectName parentName = Configuration.getConfigurationObjectName(parentID);
@@ -204,20 +203,17 @@
         return (String) config.getAttribute("server");
     }
 
-    /**
-     * @deprecated use addGBean(GBeanData gbean)
-     */
-    public void addGBean(ObjectName name, GBeanMBean gbean) {
-        gbeans.put(name, gbean);
-    }
-
     public void addGBean(GBeanData gbean) {
         assert gbean.getName() != null: "GBean name is null";
-        gbeans.put(gbean.getName(), gbean);
+        gbeans.register(gbean);
     }
 
     public Set getGBeanNames() {
-        return Collections.unmodifiableSet(gbeans.keySet());
+        return gbeans.getGBeanNames();
+    }
+
+    public Set listGBeans(ObjectName pattern) {
+        return gbeans.listGBeans(pattern);
     }
 
     public void addDependency(URI uri) {
@@ -490,18 +486,7 @@
         // persist all the GBeans in this Configuration
         // save the dependencies and classpath
         try {
-            GBeanData[] gbeanArray = new GBeanData[gbeans.size()];
-            Iterator iterator = gbeans.entrySet().iterator();
-            for (int i = 0; i < gbeanArray.length; i++) {
-                Map.Entry entry = (Map.Entry) iterator.next();
-                Object gbean = entry.getValue();
-                if (gbean instanceof GBeanMBean) {
-                    gbeanArray[i] = ((GBeanMBean) gbean).getGBeanData();
-                    gbeanArray[i].setName((ObjectName) entry.getKey());
-                } else {
-                    gbeanArray[i] = (GBeanData) gbean;
-                }
-            }
+            GBeanData[] gbeanArray = gbeans.getGBeans();
             config.setAttribute("gBeanState", Configuration.storeGBeans(gbeanArray));
             config.setReferencePatterns("Repositories", Collections.singleton(new ObjectName("*:name=Repository,*")));
             config.setAttribute("dependencies", new ArrayList(dependencies));

Added: geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/GBeanDataRegistry.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/GBeanDataRegistry.java?view=auto&rev=126472
==============================================================================
--- (empty file)
+++ geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/GBeanDataRegistry.java	Tue Jan 25 22:37:04 2005
@@ -0,0 +1,64 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.deployment;
+
+import java.util.Set;
+import java.util.Collections;
+import javax.management.ObjectName;
+
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.kernel.GBeanNotFoundException;
+import org.apache.geronimo.kernel.registry.AbstractGBeanRegistry;
+
+/**
+ * @version $Rev:  $ $Date:  $
+ */
+public class GBeanDataRegistry extends AbstractGBeanRegistry {
+
+    public void setDefaultDomain(String defaultDomain) {
+        this.defaultDomainName = defaultDomain;
+    }
+
+    public void preregister(ObjectName name) {
+        register(name, null);
+    }
+
+    public void register(GBeanData gbean) {
+        register(gbean.getName(), gbean);
+    }
+
+    public GBeanData getGBeanInstance(ObjectName name) throws GBeanNotFoundException {
+        GBeanData gbeanData;
+        synchronized (this) {
+            gbeanData = (GBeanData) registry.get(name);
+        }
+        if (gbeanData == null) {
+            throw new GBeanNotFoundException(name.getCanonicalName());
+        }
+        return gbeanData;
+    }
+
+    public Set getGBeanNames() {
+        return Collections.unmodifiableSet(registry.keySet());
+    }
+
+    public GBeanData[] getGBeans() {
+        return (GBeanData[])registry.values().toArray(new GBeanData[registry.size()]);
+    }
+
+
+}

Modified: geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/RefContext.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/RefContext.java?view=diff&rev=126472&p1=geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/RefContext.java&r1=126471&p2=geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/RefContext.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/RefContext.java	(original)
+++ geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/RefContext.java	Tue Jan 25 22:37:04 2005
@@ -21,6 +21,7 @@
 import java.util.HashMap;
 import java.util.Map;
 import java.util.List;
+import java.util.Set;
 
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
@@ -249,12 +250,25 @@
         }
     }
 
-    public String getConnectionFactoryContainerId(URI module, String resourceLink, String type, J2eeContext j2eeContext) throws DeploymentException, UnknownEJBRefException {
+    public String getConnectionFactoryContainerId(URI module, String resourceLink, String type, J2eeContext j2eeContext, DeploymentContext context) throws DeploymentException, UnknownEJBRefException {
         String name = resourceLink.substring(resourceLink.lastIndexOf('#') + 1);
         try {
             return getContainerId(module, resourceLink, (Map) connectionFactoryIndex.get(name));
         } catch (UnknownEJBRefException e) {
+
             ObjectName query = null;
+            try {
+                query = NameFactory.getComponentNameQuery(null, null, null, name, type, j2eeContext);
+            } catch (MalformedObjectNameException e1) {
+                throw new DeploymentException("Could not construct connection factory object name query", e);
+            }
+            Set matches = context.listGBeans(query);
+            if (matches.size() > 1) {
+                throw new DeploymentException("More than one match for query " + matches);
+            }
+            if (matches.size() == 1) {
+                return ((ObjectName)matches.iterator().next()).getCanonicalName();
+            }
             try {
                 query = NameFactory.getComponentRestrictedQueryName(null, null, name, type, j2eeContext);
             } catch (MalformedObjectNameException e1) {

Modified: geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java?view=diff&rev=126472&p1=geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java&r1=126471&p2=geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java	(original)
+++ geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java	Tue Jan 25 22:37:04 2005
@@ -17,16 +17,16 @@
 
 package org.apache.geronimo.j2ee.deployment;
 
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
-import java.io.ByteArrayOutputStream;
 import java.io.ObjectOutputStream;
 import java.net.URI;
 import java.net.URL;
-import java.util.jar.JarFile;
 import java.util.List;
-import javax.management.ObjectName;
+import java.util.jar.JarFile;
 import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
 
 import junit.extensions.TestSetup;
 import junit.framework.Test;
@@ -34,18 +34,17 @@
 import junit.framework.TestSuite;
 import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.deployment.util.DeploymentUtil;
-import org.apache.geronimo.kernel.jmx.JMXUtil;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.config.Configuration;
 import org.apache.geronimo.kernel.config.ConfigurationStore;
 import org.apache.geronimo.kernel.config.InvalidConfigException;
 import org.apache.geronimo.kernel.config.NoSuchConfigException;
-import org.apache.geronimo.kernel.config.Configuration;
-import org.apache.geronimo.kernel.registry.GBeanRegistry;
+import org.apache.geronimo.kernel.jmx.JMXUtil;
 import org.apache.geronimo.kernel.registry.BasicGBeanRegistry;
-import org.apache.geronimo.gbean.GBeanData;
-import org.apache.geronimo.gbean.GBeanInfoBuilder;
-import org.apache.geronimo.gbean.GBeanInfo;
-import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 
 /**
  * @version $Rev$ $Date$
@@ -62,7 +61,6 @@
     private static ServiceReferenceBuilder serviceReferenceBuilder = null;
 
     private static final String j2eeServerName = "someDomain";
-    private static final ObjectName j2eeServer = JMXUtil.getObjectName(j2eeServerName + ":j2eeType=J2EEServer,name=J2EEServerName");
     private static final ObjectName transactionManagerObjectName = JMXUtil.getObjectName(j2eeServerName + ":type=TransactionManager");
     private static final ObjectName connectionTrackerObjectName = JMXUtil.getObjectName(j2eeServerName + ":type=ConnectionTracker");
     private static final ObjectName transactionalTimerObjectName = JMXUtil.getObjectName(j2eeServerName + ":type=ThreadPooledTimer,name=TransactionalThreaPooledTimer");

Modified: geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java?view=diff&rev=126472&p1=geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java&r1=126471&p2=geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java	(original)
+++ geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java	Tue Jan 25 22:37:04 2005
@@ -166,25 +166,18 @@
      */
 
     public static ObjectName getComponentRestrictedQueryName(String j2eeDomainName, String j2eeServerName, String j2eeName, String j2eeType, J2eeContext context) throws MalformedObjectNameException {
-//        Properties props = new Properties();
-//        props.put(J2EE_TYPE, context.getJ2eeType(j2eeType));
-//        props.put(J2EE_SERVER, context.getJ2eeServerName(j2eeServerName));
-//        props.put(J2EE_APPLICATION, NULL;
-//        props.put(RESOURCE_ADAPTER_MODULE, context.getJ2eeModuleName(j2eeModuleName));
-//        props.put(JCA_RESOURCE, context.getJ2eeModuleName(j2eeModuleName));
-//        props.put(J2EE_NAME, context.getJ2eeName(j2eeName));
-//        try {
-//            return ObjectName.getInstance(context.getJ2eeDomainName(j2eeDomainName), props);
-//        } catch (MalformedObjectNameException e) {
-//            throw new DeploymentException("Invalid component name", e);
-//        }
+        String applicationName = NULL;
+        return getComponentNameQuery(j2eeDomainName, j2eeServerName, applicationName, j2eeName, j2eeType, context);
+    }
+
+    public static ObjectName getComponentNameQuery(String j2eeDomainName, String j2eeServerName, String applicationName, String j2eeName, String j2eeType, J2eeContext context) throws MalformedObjectNameException {
         StringBuffer buffer = new StringBuffer(context.getJ2eeDomainName(j2eeDomainName))
                 .append(":" + J2EE_TYPE + "=").append(context.getJ2eeType(j2eeType))
                 .append("," + J2EE_SERVER + "=").append(context.getJ2eeServerName(j2eeServerName))
-                .append("," + J2EE_APPLICATION + "=" + NULL)
+                .append("," + J2EE_APPLICATION + "=").append(context.getJ2eeApplicationName(applicationName))
                 .append("," + J2EE_NAME + "=").append(context.getJ2eeName(j2eeName))
                 .append(",*");
-        return new ObjectName(buffer.toString());
+        return ObjectName.getInstance(buffer.toString());
     }
 
     public static ObjectName getWebComponentName(String j2eeDomainName, String j2eeServerName, String j2eeApplicationName, String j2eeModuleName, String j2eeName, String j2eeType, J2eeContext context) throws MalformedObjectNameException {

Modified: geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java?view=diff&rev=126472&p1=geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java&r1=126471&p2=geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java	(original)
+++ geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java	Tue Jan 25 22:37:04 2005
@@ -73,7 +73,6 @@
 import org.apache.geronimo.schema.SchemaConversionUtils;
 import org.apache.geronimo.security.deploy.Security;
 import org.apache.geronimo.security.deployment.SecurityBuilder;
-import org.apache.geronimo.security.realm.GenericSecurityRealm;
 import org.apache.geronimo.security.util.URLPattern;
 import org.apache.geronimo.transaction.OnlineUserTransaction;
 import org.apache.geronimo.xbeans.geronimo.jetty.JettyWebAppDocument;
@@ -348,17 +347,9 @@
             contextPriorityClassLoader = Boolean.valueOf(jettyWebApp.getContextPriorityClassloader()).booleanValue();
         }
         ClassLoader webClassLoader = new JettyClassLoader(webClassPathURLs, cl, contextPriorityClassLoader);
-        Map localSecurityRealms = new HashMap();
         if (jettyWebApp != null) {
             GbeanType[] gbeans = jettyWebApp.getGbeanArray();
-            Set added = ServiceConfigBuilder.addGBeans(gbeans, cl, moduleJ2eeContext, earContext);
-            for (Iterator iterator = added.iterator(); iterator.hasNext();) {
-                GBeanData gBeanData = (GBeanData) iterator.next();
-                String className = gBeanData.getGBeanInfo().getClassName();
-                if (GenericSecurityRealm.class.getName().equals(className)) {
-                    localSecurityRealms.put(gBeanData.getAttribute("realmName"), gBeanData);
-                }
-            }
+            ServiceConfigBuilder.addGBeans(gbeans, cl, moduleJ2eeContext, earContext);
         }
 
         ObjectName webModuleName = null;
@@ -377,7 +368,7 @@
             Set securityRoles = collectRoleNames(webApp);
             if (jettyWebApp.isSetSecurityRealmName()) {
                 String securityRealmName = jettyWebApp.getSecurityRealmName().trim();
-                Security security = SecurityBuilder.buildSecurityConfig(Collections.singleton(securityRealmName), jettyWebApp.getSecurity(), securityRoles, localSecurityRealms, kernel);
+                Security security = SecurityBuilder.buildSecurityConfig(jettyWebApp.getSecurity(), securityRoles);
                 webModuleData.setAttribute("securityRealmName", securityRealmName);
                 webModuleData.setAttribute("securityConfig", security);
 

Added: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/AbstractGBeanRegistry.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/AbstractGBeanRegistry.java?view=auto&rev=126472
==============================================================================
--- (empty file)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/AbstractGBeanRegistry.java	Tue Jan 25 22:37:04 2005
@@ -0,0 +1,212 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.kernel.registry;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Collections;
+import java.util.regex.Pattern;
+import javax.management.ObjectName;
+
+import org.apache.geronimo.kernel.GBeanNotFoundException;
+import org.apache.geronimo.kernel.InternalKernelException;
+import org.apache.geronimo.kernel.Kernel;
+
+/**
+ * @version $Rev:  $ $Date:  $
+ */
+public class AbstractGBeanRegistry {
+    protected final Map registry = new HashMap();
+    protected final Map domainIndex = new HashMap();
+    protected String defaultDomainName;
+
+    public void stop() {
+        // todo destroy instances
+        synchronized (this) {
+            registry.clear();
+            domainIndex.clear();
+        }
+    }
+
+    public boolean isRegistered(ObjectName name) {
+        synchronized (this) {
+            return registry.containsKey(name);
+        }
+    }
+
+    protected void register(ObjectName name, Object gbean) {
+        // do as much work as possible outside of the synchronized block
+        String domainName = name.getDomain();
+        // convert properties list to a HashMap as it is more efficient then the synchronized Hashtable
+        Map properties = new HashMap(name.getKeyPropertyList());
+
+        synchronized (this) {
+            registry.put(name, gbean);
+
+            Map nameToProperties = (Map) domainIndex.get(domainName);
+            if (nameToProperties == null) {
+                nameToProperties = new HashMap();
+                domainIndex.put(domainName, nameToProperties);
+            }
+            nameToProperties.put(name, properties);
+        }
+    }
+
+    public void unregister(ObjectName name) throws GBeanNotFoundException, InternalKernelException {
+        String domainName = name.getDomain();
+        synchronized (this) {
+            registry.remove(name);
+
+            // just leave the an empty nameToProperty map
+            Map nameToProperties = (Map) domainIndex.get(domainName);
+            if (nameToProperties != null) {
+                nameToProperties.remove(name);
+            }
+        }
+    }
+
+    public Set listGBeans(ObjectName pattern) throws InternalKernelException {
+        if (pattern == null) {
+            synchronized (this) {
+                return new HashSet(registry.keySet());
+            }
+        }
+
+        String patternDomain = pattern.getDomain();
+        if (patternDomain.length() == 0) {
+            patternDomain = defaultDomainName;
+        }
+
+        // work with a copy of the registry key set
+        List nameToProperties;
+        if (!pattern.isDomainPattern()) {
+            synchronized (this) {
+                // create an array list big enough to match all names... extra space is better than resizing
+                nameToProperties = new ArrayList(registry.size());
+
+                // find we are only matching one specific domain, so
+                // just grab it directly from the index
+                Map map = (Map) domainIndex.get(patternDomain);
+                if (map != null) {
+                    nameToProperties.addAll(map.entrySet());
+                }
+            }
+        } else if (patternDomain.equals("*")) {
+            // this is very commmon, so support it directly
+            synchronized (this) {
+                // create an array list big enough to match all names... extra space is better than resizing
+                nameToProperties = new ArrayList(registry.size());
+
+                // find we are matching all domain, so just grab all of them directly
+                for (Iterator iterator = domainIndex.values().iterator(); iterator.hasNext();) {
+                    Map map = (Map) iterator.next();
+
+                    // we can just copy the entry set directly into the list we don't
+                    // have to worry about duplicates as the maps are mutually exclusive
+                    nameToProperties.addAll(map.entrySet());
+                }
+            }
+        } else {
+            String perl5Pattern = domainPatternToPerl5(patternDomain);
+            Pattern domainPattern = Pattern.compile(perl5Pattern);
+
+            synchronized (this) {
+                // create an array list big enough to match all names... extra space is better than resizing
+                nameToProperties = new ArrayList(registry.size());
+
+                // find all of the matching domains
+                for (Iterator iterator = domainIndex.entrySet().iterator(); iterator.hasNext();) {
+                    Map.Entry entry = (Map.Entry) iterator.next();
+                    String domain = (String) entry.getKey();
+                    if (domainPattern.matcher(domain).matches()) {
+                        // we can just copy the entry set directly into the list we don't
+                        // have to worry about duplicates as the maps are mutually exclusive
+                        Map map = (Map) entry.getValue();
+                        nameToProperties.addAll(map.entrySet());
+                    }
+                }
+            }
+        }
+
+        if (nameToProperties.isEmpty()) {
+            return Collections.EMPTY_SET;
+        }
+
+        // convert the pattern property list to a HashMap as it is not synchronized
+        Map patternProperties = new HashMap(pattern.getKeyPropertyList());
+        patternProperties.remove("*");
+        boolean isMatchAll = patternProperties.isEmpty();
+        boolean isPropertyPattern = pattern.isPropertyPattern();
+
+        Set matchingNames = new HashSet();
+        for (Iterator iterator = nameToProperties.iterator(); iterator.hasNext();) {
+            Map.Entry entry = (Map.Entry) iterator.next();
+            Map properties = (Map) entry.getValue();
+
+            if (isMatchAll) {
+                matchingNames.add(entry.getKey());
+            } else if (isPropertyPattern) {
+                if (properties.entrySet().containsAll(patternProperties.entrySet())) {
+                    matchingNames.add(entry.getKey());
+                }
+
+            } else {
+                if (properties.entrySet().equals(patternProperties.entrySet())) {
+                    matchingNames.add(entry.getKey());
+                }
+            }
+        }
+        return matchingNames;
+    }
+
+    private static String domainPatternToPerl5(String pattern) {
+        char[] patternCharacters = pattern.toCharArray();
+        StringBuffer buffer = new StringBuffer(2 * patternCharacters.length);
+        for (int position = 0; position < patternCharacters.length; position++) {
+            char character = patternCharacters[position];
+            switch (character) {
+                case '*':
+                    // replace '*' with '.*'
+                    buffer.append(".*");
+                    break;
+                case '?':
+                    // replace '?' with '.'
+                    buffer.append('.');
+                    break;
+                default:
+                    // escape any perl5 characters with '\'
+                    if (isPerl5MetaCharacter(character)) {
+                        buffer.append('\\');
+                    }
+                    buffer.append(character);
+                    break;
+            }
+        }
+
+        return buffer.toString();
+    }
+
+    private static boolean isPerl5MetaCharacter(char character) {
+        return ("'*?+[]()|^$.{}\\".indexOf(character) >= 0);
+    }
+
+}

Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/BasicGBeanRegistry.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/BasicGBeanRegistry.java?view=diff&rev=126472&p1=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/BasicGBeanRegistry.java&r1=126471&p2=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/BasicGBeanRegistry.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/BasicGBeanRegistry.java	(original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/registry/BasicGBeanRegistry.java	Tue Jan 25 22:37:04 2005
@@ -36,59 +36,16 @@
 /**
  * @version $Rev$ $Date$
  */
-public class BasicGBeanRegistry implements GBeanRegistry {
-    private final Map registry = new HashMap();
-    private final Map domainIndex = new HashMap();
-    private String defaultDomainName;
+public class BasicGBeanRegistry extends AbstractGBeanRegistry implements GBeanRegistry {
 
     public void start(Kernel kernel) {
         this.defaultDomainName = kernel.getKernelName();
     }
 
-    public void stop() {
-        // todo destroy instances
-        synchronized (this) {
-            registry.clear();
-            domainIndex.clear();
-        }
-    }
-
-    public boolean isRegistered(ObjectName name) {
-        synchronized (this) {
-            return registry.containsKey(name);
-        }
-    }
-
     public void register(GBeanInstance gbeanInstance) throws GBeanAlreadyExistsException, InternalKernelException {
-        // do as much work as possible outside of the synchronized block
         ObjectName name = gbeanInstance.getObjectNameObject();
-        String domainName = name.getDomain();
-        // convert properties list to a HashMap as it is more efficient then the synchronized Hashtable
-        Map properties = new HashMap(name.getKeyPropertyList());
-
-        synchronized (this) {
-            registry.put(name, gbeanInstance);
+        register(name, gbeanInstance);
 
-            Map nameToProperties = (Map) domainIndex.get(domainName);
-            if (nameToProperties == null) {
-                nameToProperties = new HashMap();
-                domainIndex.put(domainName, nameToProperties);
-            }
-            nameToProperties.put(name, properties);
-        }
-    }
-
-    public void unregister(ObjectName name) throws GBeanNotFoundException, InternalKernelException {
-        String domainName = name.getDomain();
-        synchronized (this) {
-            registry.remove(name);
-
-            // just leave the an empty nameToProperty map
-            Map nameToProperties = (Map) domainIndex.get(domainName);
-            if (nameToProperties != null) {
-                nameToProperties.remove(name);
-            }
-        }
     }
 
     public GBeanInstance getGBeanInstance(ObjectName name) throws GBeanNotFoundException {
@@ -102,128 +59,4 @@
         return gbeanInstance;
     }
 
-    public Set listGBeans(ObjectName pattern) throws InternalKernelException {
-        if (pattern == null) {
-            synchronized (this) {
-                return new HashSet(registry.keySet());
-            }
-        }
-
-        String patternDomain = pattern.getDomain();
-        if (patternDomain.length() == 0) {
-            patternDomain = defaultDomainName;
-        }
-
-        // work with a copy of the registry key set
-        List nameToProperties;
-        if (!pattern.isDomainPattern()) {
-            synchronized (this) {
-                // create an array list big enough to match all names... extra space is better than resizing
-                nameToProperties = new ArrayList(registry.size());
-
-                // find we are only matching one specific domain, so
-                // just grab it directly from the index
-                Map map = (Map) domainIndex.get(patternDomain);
-                if (map != null) {
-                    nameToProperties.addAll(map.entrySet());
-                }
-            }
-        } else if (patternDomain.equals("*")) {
-            // this is very commmon, so support it directly
-            synchronized (this) {
-                // create an array list big enough to match all names... extra space is better than resizing
-                nameToProperties = new ArrayList(registry.size());
-
-                // find we are matching all domain, so just grab all of them directly
-                for (Iterator iterator = domainIndex.values().iterator(); iterator.hasNext();) {
-                    Map map = (Map) iterator.next();
-
-                    // we can just copy the entry set directly into the list we don't
-                    // have to worry about duplicates as the maps are mutually exclusive
-                    nameToProperties.addAll(map.entrySet());
-                }
-            }
-        } else {
-            String perl5Pattern = domainPatternToPerl5(patternDomain);
-            Pattern domainPattern = Pattern.compile(perl5Pattern);
-
-            synchronized (this) {
-                // create an array list big enough to match all names... extra space is better than resizing
-                nameToProperties = new ArrayList(registry.size());
-
-                // find all of the matching domains
-                for (Iterator iterator = domainIndex.entrySet().iterator(); iterator.hasNext();) {
-                    Map.Entry entry = (Map.Entry) iterator.next();
-                    String domain = (String) entry.getKey();
-                    if (domainPattern.matcher(domain).matches()) {
-                        // we can just copy the entry set directly into the list we don't
-                        // have to worry about duplicates as the maps are mutually exclusive
-                        Map map = (Map) entry.getValue();
-                        nameToProperties.addAll(map.entrySet());
-                    }
-                }
-            }
-        }
-
-        if (nameToProperties.isEmpty()) {
-            return Collections.EMPTY_SET;
-        }
-
-        // convert the pattern property list to a HashMap as it is not synchronized
-        Map patternProperties = new HashMap(pattern.getKeyPropertyList());
-        patternProperties.remove("*");
-        boolean isMatchAll = patternProperties.isEmpty();
-        boolean isPropertyPattern = pattern.isPropertyPattern();
-
-        Set matchingNames = new HashSet();
-        for (Iterator iterator = nameToProperties.iterator(); iterator.hasNext();) {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            Map properties = (Map) entry.getValue();
-
-            if (isMatchAll) {
-                matchingNames.add(entry.getKey());
-            } else if (isPropertyPattern) {
-                if (properties.entrySet().containsAll(patternProperties.entrySet())) {
-                    matchingNames.add(entry.getKey());
-                }
-
-            } else {
-                if (properties.entrySet().equals(patternProperties.entrySet())) {
-                    matchingNames.add(entry.getKey());
-                }
-            }
-        }
-        return matchingNames;
-    }
-
-    private static String domainPatternToPerl5(String pattern) {
-        char[] patternCharacters = pattern.toCharArray();
-        StringBuffer buffer = new StringBuffer(2 * patternCharacters.length);
-        for (int position = 0; position < patternCharacters.length; position++) {
-            char character = patternCharacters[position];
-            switch (character) {
-                case '*':
-                    // replace '*' with '.*'
-                    buffer.append(".*");
-                    break;
-                case '?':
-                    // replace '?' with '.'
-                    buffer.append('.');
-                    break;
-                default:
-                    // escape any perl5 characters with '\'
-                    if (isPerl5MetaCharacter(character)) {
-                        buffer.append('\\');
-                    }
-                    buffer.append(character);
-                    break;
-            }
-        }
-
-        return buffer.toString();
-    }
-
-    private static boolean isPerl5MetaCharacter(char character) {
-        return ("'*?+[]()|^$.{}\\".indexOf(character) >= 0);
-    }
 }

Modified: geronimo/trunk/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java?view=diff&rev=126472&p1=geronimo/trunk/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java&r1=126471&p2=geronimo/trunk/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java	(original)
+++ geronimo/trunk/modules/naming-builder/src/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java	Tue Jan 25 22:37:04 2005
@@ -25,7 +25,6 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -37,9 +36,10 @@
 import javax.xml.namespace.QName;
 
 import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.deployment.DeploymentContext;
 import org.apache.geronimo.j2ee.deployment.EARContext;
-import org.apache.geronimo.j2ee.deployment.RefContext;
 import org.apache.geronimo.j2ee.deployment.Module;
+import org.apache.geronimo.j2ee.deployment.RefContext;
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.Kernel;
@@ -65,7 +65,8 @@
  * @version $Rev$ $Date$
  */
 public class ENCConfigBuilder {
-    public static ObjectName getGBeanId(String j2eeType, GerGbeanLocatorType gerGbeanLocator, J2eeContext j2eeContext, Set localGBeans, Kernel kernel) throws DeploymentException {
+
+    public static ObjectName getGBeanId(String j2eeType, GerGbeanLocatorType gerGbeanLocator, J2eeContext j2eeContext, DeploymentContext context, Kernel kernel) throws DeploymentException {
         ObjectName containerId = null;
         if (gerGbeanLocator.isSetGbeanLink()) {
             //exact match
@@ -76,23 +77,23 @@
             } catch (MalformedObjectNameException e) {
                 throw new DeploymentException("Could not construct gbean name", e);
             }
-            if (localGBeans.contains(exact)) {
+            if (context.listGBeans(exact).size() == 1) {
                 containerId = exact;
             } else {
-                Map keys = new HashMap();
-                keys.put(NameFactory.J2EE_TYPE, j2eeType);
-                keys.put(NameFactory.J2EE_NAME, linkName);
-                for (Iterator iterator = localGBeans.iterator(); iterator.hasNext();) {
-                    ObjectName objectName = (ObjectName) iterator.next();
-                    if (objectName.getKeyPropertyList().entrySet().containsAll(keys.entrySet())) {
-                        if (containerId != null) {
-                            throw new DeploymentException("two matches for gbean link!" + objectName);
-                        }
-                        containerId = objectName;
-                    }
+                ObjectName query = null;
+                try {
+                    query = NameFactory.getComponentNameQuery(null, null, null, linkName, j2eeType, j2eeContext);
+                } catch(MalformedObjectNameException e) {
+                    throw new DeploymentException("Could not construct query for gbean name", e);
+                }
+                Set localMatches = context.listGBeans(query);
+                if (localMatches.size() > 1) {
+                    throw new DeploymentException("More than one local match for gbean link, " + localMatches);
+                }
+                if (localMatches.size() == 1) {
+                    containerId = (ObjectName) localMatches.iterator().next();
                 }
                 if (containerId == null) {
-                    ObjectName query = null;
                     try {
                         query = NameFactory.getComponentRestrictedQueryName(null, null, linkName, j2eeType, j2eeContext);
                     } catch (MalformedObjectNameException e) {
@@ -185,7 +186,7 @@
                 } else {
                     j2eeType = NameFactory.JCA_MANAGED_CONNECTION_FACTORY;
                 }
-                String containerId = getResourceContainerId(name, j2eeType, uri, gerResourceRef, refContext, j2eeContext);
+                String containerId = getResourceContainerId(name, j2eeType, uri, gerResourceRef, refContext, j2eeContext, earContext);
 
                 ref = refContext.getConnectionFactoryRef(containerId, iface);
                 try {
@@ -198,16 +199,16 @@
 
     }
 
-    private static String getResourceContainerId(String name, String type, URI uri, GerResourceRefType gerResourceRef, RefContext refContext, J2eeContext j2eeContext) throws DeploymentException {
+    private static String getResourceContainerId(String name, String type, URI uri, GerResourceRefType gerResourceRef, RefContext refContext, J2eeContext j2eeContext, DeploymentContext context) throws DeploymentException {
         String containerId = null;
         if (gerResourceRef == null) {
             //try to resolve ref based only matching resource-ref-name
             //throws exception if it can't locate ref.
-            containerId = refContext.getConnectionFactoryContainerId(uri, name, type, j2eeContext);
+            containerId = refContext.getConnectionFactoryContainerId(uri, name, type, j2eeContext, context);
         } else if (gerResourceRef.isSetResourceLink()) {
-            containerId = refContext.getConnectionFactoryContainerId(uri, getStringValue(gerResourceRef.getResourceLink()), NameFactory.JCA_MANAGED_CONNECTION_FACTORY, j2eeContext);
+            containerId = refContext.getConnectionFactoryContainerId(uri, gerResourceRef.getResourceLink().trim(), type, j2eeContext, context);
         } else if (gerResourceRef.isSetTargetName()) {
-            containerId = getStringValue(gerResourceRef.getTargetName());
+            containerId =  gerResourceRef.getTargetName().trim();
         } else {
             //construct name from components
             try {
@@ -216,7 +217,6 @@
                         getStringValue(gerResourceRef.getApplication()),
                         getStringValue(gerResourceRef.getModule()),
                         getStringValue(gerResourceRef.getName()),
-                        //todo determine type from iface class
                         gerResourceRef.getType() == null ? type : gerResourceRef.getType().trim(),
                         j2eeContext);
             } catch (MalformedObjectNameException e) {
@@ -556,7 +556,7 @@
             if (!URL.class.getName().equals(type)
                     && !"javax.mail.Session".equals(type)) {
                 GerResourceRefType gerResourceRef = (GerResourceRefType) refMap.get(resourceRefType.getResRefName().getStringValue());
-                String containerId = getResourceContainerId(getStringValue(resourceRefType.getResRefName()), NameFactory.JCA_MANAGED_CONNECTION_FACTORY, uri, gerResourceRef, refContext, j2eeContext);
+                String containerId = getResourceContainerId(getStringValue(resourceRefType.getResRefName()), NameFactory.JCA_MANAGED_CONNECTION_FACTORY, uri, gerResourceRef, refContext, j2eeContext, earContext);
                 if ("Unshareable".equals(getStringValue(resourceRefType.getResSharingScope()))) {
                     unshareableResources.add(containerId);
                 }

Modified: geronimo/trunk/modules/security-builder/src/java/org/apache/geronimo/security/deployment/SecurityBuilder.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/security-builder/src/java/org/apache/geronimo/security/deployment/SecurityBuilder.java?view=diff&rev=126472&p1=geronimo/trunk/modules/security-builder/src/java/org/apache/geronimo/security/deployment/SecurityBuilder.java&r1=126471&p2=geronimo/trunk/modules/security-builder/src/java/org/apache/geronimo/security/deployment/SecurityBuilder.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/security-builder/src/java/org/apache/geronimo/security/deployment/SecurityBuilder.java	(original)
+++ geronimo/trunk/modules/security-builder/src/java/org/apache/geronimo/security/deployment/SecurityBuilder.java	Tue Jan 25 22:37:04 2005
@@ -17,11 +17,9 @@
 package org.apache.geronimo.security.deployment;
 
 import java.util.HashSet;
-import java.util.Map;
 import java.util.Set;
 
 import org.apache.geronimo.common.DeploymentException;
-import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.security.deploy.DefaultPrincipal;
 import org.apache.geronimo.security.deploy.Principal;
 import org.apache.geronimo.security.deploy.Realm;
@@ -40,7 +38,7 @@
  */
 public class SecurityBuilder {
 
-    public static Security buildSecurityConfig(Set loginDomainNames, GerSecurityType securityType, Set roleNames, Map localSecurityRealms, Kernel kernel) throws DeploymentException {
+    public static Security buildSecurityConfig(GerSecurityType securityType, Set roleNames) throws DeploymentException {
         Security security = null;
 
         if (securityType == null) {

Modified: geronimo/trunk/modules/service-builder/src/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/service-builder/src/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java?view=diff&rev=126472&p1=geronimo/trunk/modules/service-builder/src/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java&r1=126471&p2=geronimo/trunk/modules/service-builder/src/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java&r2=126472
==============================================================================
--- geronimo/trunk/modules/service-builder/src/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java	(original)
+++ geronimo/trunk/modules/service-builder/src/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java	Tue Jan 25 22:37:04 2005
@@ -206,15 +206,13 @@
         }
     }
 
-    //TODO returning set of added gbeans is a HACK used only by stuff needing to access security gbeans at deploy time!  REMOVE IT!!
-    public static Set addGBeans(GbeanType[] gbeans, ClassLoader cl, J2eeContext j2eeContext, DeploymentContext context) throws DeploymentException {
+    public static void addGBeans(GbeanType[] gbeans, ClassLoader cl, J2eeContext j2eeContext, DeploymentContext context) throws DeploymentException {
         Set result = new HashSet();
         for (int i = 0; i < gbeans.length; i++) {
             GBeanData gBeanData = getGBeanData(gbeans[i], j2eeContext, cl);
             context.addGBean(gBeanData);
             result.add(gBeanData);
         }
-        return result;
     }
 
     public static GBeanData getGBeanData(GbeanType gbean, J2eeContext j2eeContext, ClassLoader cl) throws DeploymentException {