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 2006/03/06 22:44:37 UTC

svn commit: r383682 [1/5] - in /geronimo/branches/1.1/modules: connector/src/test/org/apache/geronimo/connector/ connector/src/test/org/apache/geronimo/connector/outbound/ deployment/src/java/org/apache/geronimo/deployment/ j2ee/src/java/org/apache/ger...

Author: djencks
Date: Mon Mar  6 13:44:29 2006
New Revision: 383682

URL: http://svn.apache.org/viewcvs?rev=383682&view=rev
Log:
Initial work on making version optional on gbean references.  This breaks build around security-builder.  This has plenty of known problems.

Added:
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractName.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractNameQuery.java
Modified:
    geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/AdminObjectWrapperTest.java
    geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/outbound/ManagedConnectionFactoryWrapperTest.java
    geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java
    geronimo/branches/1.1/modules/j2ee/src/java/org/apache/geronimo/j2ee/management/impl/Util.java
    geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/Abstract77Test.java
    geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/DomainTest.java
    geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/JVMTest.java
    geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/ServerTest.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/GBeanData.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/AbstractGBeanReference.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanCollectionReference.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanDependency.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstanceState.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanSingleReference.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/ProxyCollection.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/DependencyManager.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/GBeanNotFoundException.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/KernelGBean.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicDependencyManager.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicKernel.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicLifecycleMonitor.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicRegistry.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/KernelGetAttributeInvoker.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/KernelOperationInvoker.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/KernelSetAttributeInvoker.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/LifecycleMonitorFlyweight.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/ProxyInvoker.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/ProxyMethodInterceptor.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/RawGetAttributeInvoker.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/RawOperationInvoker.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/RawSetAttributeInvoker.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationUtil.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/JMXProxyManager.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/JMXProxyMethodInterceptor.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/JMXUtil.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/KernelDelegate.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/lifecycle/LifecycleAdapter.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/lifecycle/LifecycleListener.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/lifecycle/LifecycleMonitor.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/proxy/ProxyFactory.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/proxy/ProxyManager.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/repository/Artifact.java
    geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanAttributeTest.java
    geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanDependencyTest.java
    geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/ConfigTest.java
    geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/GBeanTest.java
    geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/config/ConfigurationManagerTest.java
    geronimo/branches/1.1/modules/security/src/test/org/apache/geronimo/security/AbstractTest.java
    geronimo/branches/1.1/modules/security/src/test/org/apache/geronimo/security/jaas/ConfigurationEntryTest.java
    geronimo/branches/1.1/modules/security/src/test/org/apache/geronimo/security/jaas/LoginKerberosNonGeronimoTest.java
    geronimo/branches/1.1/modules/security/src/test/org/apache/geronimo/security/jaas/LoginKerberosTest.java
    geronimo/branches/1.1/modules/security/src/test/org/apache/geronimo/security/jaas/LoginPropertiesFileTest.java
    geronimo/branches/1.1/modules/security/src/test/org/apache/geronimo/security/jaas/LoginSQLTest.java
    geronimo/branches/1.1/modules/security/src/test/org/apache/geronimo/security/jaas/TimeoutTest.java
    geronimo/branches/1.1/modules/security/src/test/org/apache/geronimo/security/network/protocol/SubjectCarryingProtocolTest.java
    geronimo/branches/1.1/modules/security/src/test/org/apache/geronimo/security/remoting/jmx/RemoteLoginTest.java
    geronimo/branches/1.1/modules/service-builder/src/java/org/apache/geronimo/deployment/service/GBeanBuilder.java
    geronimo/branches/1.1/modules/service-builder/src/test-resources/services/plan1.xml
    geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/ConfigurationDump.java
    geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/FileConfigurationList.java
    geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/jmx/MBeanGBeanBridge.java
    geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/jmx/MBeanServerKernelBridge.java
    geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/configuration/LocalAttributeManagerTest.java

Modified: geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/AdminObjectWrapperTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/AdminObjectWrapperTest.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/AdminObjectWrapperTest.java (original)
+++ geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/AdminObjectWrapperTest.java Mon Mar  6 13:44:29 2006
@@ -21,17 +21,23 @@
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.util.Map;
+import java.util.HashMap;
 import javax.management.ObjectName;
+import javax.management.MalformedObjectNameException;
 
 import junit.framework.TestCase;
 import org.apache.geronimo.connector.mock.MockAdminObject;
 import org.apache.geronimo.connector.mock.MockAdminObjectImpl;
 import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.KernelFactory;
 import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.repository.Artifact;
 
 /**
  * @version $Rev$ $Date$
@@ -39,7 +45,7 @@
 public class AdminObjectWrapperTest extends TestCase {
 
     private Kernel kernel;
-    private ObjectName selfName;
+    private AbstractName selfName;
     private static final String TARGET_NAME = "testAOName";
 
     public void testProxy() throws Exception {
@@ -105,14 +111,25 @@
         J2eeContext j2eeContext = new J2eeContextImpl("test.domain", "geronimo.server", "testapp", NameFactory.RESOURCE_ADAPTER_MODULE, "testmodule", TARGET_NAME, NameFactory.JMS_RESOURCE);
         kernel = KernelFactory.newInstance().createKernel(j2eeContext.getJ2eeDomainName());
         kernel.boot();
-        selfName = NameFactory.getComponentName(null, null, null, NameFactory.JCA_RESOURCE, null, null, null, j2eeContext);
 
-        GBeanData aow = new GBeanData(selfName, AdminObjectWrapperGBean.getGBeanInfo());
+        GBeanData aow = buildGBeanData("name", TARGET_NAME, AdminObjectWrapperGBean.getGBeanInfo(), NameFactory.JCA_RESOURCE, j2eeContext);
+        selfName = aow.getAbstractName();
         aow.setAttribute("adminObjectInterface", MockAdminObject.class.getName());
         aow.setAttribute("adminObjectClass", MockAdminObjectImpl.class.getName());
         kernel.loadGBean(aow, this.getClass().getClassLoader());
 
         kernel.startGBean(selfName);
+    }
+
+    private GBeanData buildGBeanData(String key, String value, GBeanInfo info, String type, J2eeContext j2eeContext) throws MalformedObjectNameException {
+        AbstractName abstractName = buildAbstractName(key, value, info, type, j2eeContext);
+        return new GBeanData(abstractName, info);
+    }
+
+    private AbstractName buildAbstractName(String key, String value, GBeanInfo info, String type, J2eeContext j2eeContext) throws MalformedObjectNameException {
+        Map names = new HashMap();
+        names.put(key, value);
+        return new AbstractName(new Artifact("test", "foo", "1", "car"), names, info.getInterfaces(), NameFactory.getComponentName(null, null, null, type, null, null, value, j2eeContext));
     }
 
     protected void tearDown() throws Exception {

Modified: geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/outbound/ManagedConnectionFactoryWrapperTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/outbound/ManagedConnectionFactoryWrapperTest.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/outbound/ManagedConnectionFactoryWrapperTest.java (original)
+++ geronimo/branches/1.1/modules/connector/src/test/org/apache/geronimo/connector/outbound/ManagedConnectionFactoryWrapperTest.java Mon Mar  6 13:44:29 2006
@@ -22,8 +22,9 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
-import java.util.Collections;
-import javax.management.ObjectName;
+import java.util.Map;
+import java.util.HashMap;
+import javax.management.MalformedObjectNameException;
 import javax.resource.cci.Connection;
 import javax.resource.cci.ConnectionFactory;
 
@@ -38,11 +39,14 @@
 import org.apache.geronimo.gbean.GBeanData;
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.KernelFactory;
+import org.apache.geronimo.kernel.repository.Artifact;
 
 /**
  * @version $Rev$ $Date$
@@ -50,9 +54,9 @@
 public class ManagedConnectionFactoryWrapperTest extends TestCase {
 
     private Kernel kernel;
-    private ObjectName managedConnectionFactoryName;
-    private ObjectName ctcName;
-    private ObjectName cmfName;
+    private AbstractName managedConnectionFactoryName;
+    private AbstractName ctcName;
+    private AbstractName cmfName;
     private static final String KERNEL_NAME = "testKernel";
     private static final String TARGET_NAME = "testCFName";
 
@@ -107,21 +111,22 @@
         kernel = KernelFactory.newInstance().createKernel(KERNEL_NAME);
         kernel.boot();
         ClassLoader cl = MockConnectionTrackingCoordinator.class.getClassLoader();
-        ctcName = ObjectName.getInstance("test:role=ConnectionTrackingCoordinator");
-        GBeanData ctc = new GBeanData(ctcName, MockConnectionTrackingCoordinator.getGBeanInfo());
+        J2eeContext j2eeContext = new J2eeContextImpl("test.domain", "geronimo", "testapplication", "noModuleType", "testmodule", TARGET_NAME, NameFactory.JCA_MANAGED_CONNECTION_FACTORY);
+
+        GBeanData ctc = buildGBeanData("name", "ConnectionTrackingCoordinator", MockConnectionTrackingCoordinator.getGBeanInfo(), "ConnectionTrackingCoordinator", j2eeContext);
+        ctcName = ctc.getAbstractName();
         kernel.loadGBean(ctc, cl);
 
-        cmfName = ObjectName.getInstance("test:role=ConnectionManagerContainer");
-        GBeanData cmf = new GBeanData(cmfName, GenericConnectionManagerGBean.getGBeanInfo());
+        GBeanData cmf = buildGBeanData("name", "ConnectionManagerContainer", GenericConnectionManagerGBean.getGBeanInfo(), "ConnectionManagerContainer", j2eeContext);
+        cmfName = cmf.getAbstractName();
         cmf.setAttribute("transactionSupport", NoTransactions.INSTANCE);
         cmf.setAttribute("pooling", new NoPool());
-        cmf.setReferencePatterns("ConnectionTracker", Collections.singleton(ctcName));
+        cmf.setReferencePattern("ConnectionTracker", new AbstractNameQuery(ctcName));
         kernel.loadGBean(cmf, cl);
 
-        J2eeContext j2eeContext = new J2eeContextImpl("test.domain", "geronimo", "testapplication", "noModuleType", "testmodule", TARGET_NAME, NameFactory.JCA_MANAGED_CONNECTION_FACTORY);
-        managedConnectionFactoryName = NameFactory.getComponentName(null, null, null, NameFactory.JCA_RESOURCE, null, null, null, j2eeContext);
 
-        GBeanData mcfw = new GBeanData(managedConnectionFactoryName, ManagedConnectionFactoryWrapperGBean.getGBeanInfo());
+        GBeanData mcfw = buildGBeanData("name", TARGET_NAME, ManagedConnectionFactoryWrapperGBean.getGBeanInfo(), NameFactory.JCA_RESOURCE, j2eeContext);
+        managedConnectionFactoryName = mcfw.getAbstractName();
         mcfw.setAttribute("managedConnectionFactoryClass", MockManagedConnectionFactory.class.getName());
         mcfw.setAttribute("connectionFactoryInterface", ConnectionFactory.class.getName());
         mcfw.setAttribute("implementedInterfaces", new String[] {Serializable.class.getName(), ConnectionFactoryExtension.class.getName()});
@@ -129,7 +134,7 @@
         mcfw.setAttribute("connectionInterface", Connection.class.getName());
         mcfw.setAttribute("connectionImplClass", MockConnection.class.getName());
         //"ResourceAdapterWrapper",
-        mcfw.setReferencePatterns("ConnectionManagerContainer", Collections.singleton(cmfName));
+        mcfw.setReferencePattern("ConnectionManagerContainer", new AbstractNameQuery(cmfName));
         //"ManagedConnectionFactoryListener",
         kernel.loadGBean(mcfw, cl);
 
@@ -137,6 +142,17 @@
         kernel.startGBean(cmfName);
         kernel.startGBean(managedConnectionFactoryName);
     }
+    private GBeanData buildGBeanData(String key, String value, GBeanInfo info, String type, J2eeContext j2eeContext) throws MalformedObjectNameException {
+        AbstractName abstractName = buildAbstractName(key, value, info, type, j2eeContext);
+        return new GBeanData(abstractName, info);
+    }
+
+    private AbstractName buildAbstractName(String key, String value, GBeanInfo info, String type, J2eeContext j2eeContext) throws MalformedObjectNameException {
+        Map names = new HashMap();
+        names.put(key, value);
+        return new AbstractName(new Artifact("test", "foo", "1", "car"), names, info.getInterfaces(), NameFactory.getComponentName(null, null, null, type, null, null, value, j2eeContext));
+    }
+
 
     protected void tearDown() throws Exception {
         kernel.stopGBean(managedConnectionFactoryName);
@@ -145,11 +161,11 @@
 
     public static class MockConnectionTrackingCoordinator implements ConnectionTracker {
         public void handleObtained(ConnectionTrackingInterceptor connectionTrackingInterceptor,
-                ConnectionInfo connectionInfo) {
+                                   ConnectionInfo connectionInfo) {
         }
 
         public void handleReleased(ConnectionTrackingInterceptor connectionTrackingInterceptor,
-                ConnectionInfo connectionInfo) {
+                                   ConnectionInfo connectionInfo) {
         }
 
         public void setEnvironment(ConnectionInfo connectionInfo, String key) {

Modified: geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java (original)
+++ geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java Mon Mar  6 13:44:29 2006
@@ -24,6 +24,8 @@
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
 import org.apache.geronimo.gbean.GBeanQuery;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.kernel.GBeanNotFoundException;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.config.Configuration;
@@ -106,7 +108,7 @@
         } finally {
             if (tmpDir != null) {
                 if (!DeploymentUtil.recursiveDelete(tmpDir)) {
-                    pendingDeletionIndex.setProperty(tmpDir.getName(), new String("delete"));
+                    pendingDeletionIndex.setProperty(tmpDir.getName(), "delete");
                 }
             }
         }
@@ -124,18 +126,18 @@
      */
     public String getRemoteDeployUploadURL() {
         // Get the token GBean from the remote deployment configuration
-        Set set = kernel.listGBeans(new GBeanQuery(null, "org.apache.geronimo.deployment.remote.RemoteDeployToken"));
+        Set set = kernel.listGBeans(new AbstractNameQuery("org.apache.geronimo.deployment.remote.RemoteDeployToken"));
         if(set.size() == 0) {
             return null;
         }
-        ObjectName token = (ObjectName) set.iterator().next();
+        AbstractName token = (AbstractName) set.iterator().next();
         // Identify the parent configuration for that GBean
         set = kernel.getDependencyManager().getParents(token);
         ObjectName config = null;
         for (Iterator it = set.iterator(); it.hasNext();) {
-            ObjectName name = (ObjectName) it.next();
-            if(Configuration.isConfigurationObjectName(name)) {
-                config = name;
+            AbstractName name = (AbstractName) it.next();
+            if(Configuration.isConfigurationObjectName(name.getObjectName())) {
+                config = name.getObjectName();
                 break;
             }
         }
@@ -145,12 +147,12 @@
         }
         // Generate the URL based on the remote deployment configuration
         Hashtable hash = new Hashtable();
-        hash.put("J2EEApplication", token.getKeyProperty("J2EEApplication"));
-        hash.put("J2EEServer", token.getKeyProperty("J2EEServer"));
+        hash.put("J2EEApplication", token.getObjectName().getKeyProperty("J2EEApplication"));
+        hash.put("J2EEServer", token.getObjectName().getKeyProperty("J2EEServer"));
         hash.put("j2eeType", "WebModule");
         try {
             hash.put("name", Configuration.getConfigurationID(config).toString());
-            ObjectName module = new ObjectName(token.getDomain(), hash);
+            ObjectName module = new ObjectName(token.getObjectName().getDomain(), hash);
 
             String containerName = (String) kernel.getAttribute(module, "containerName");
             String contextPath = (String) kernel.getAttribute(module, "contextPath");
@@ -183,7 +185,7 @@
                         String url = (String) kernel.getAttribute(cncName, "connectUrl");
                         map.put(protocol, url);
                     }
-                    String urlPrefix = null;
+                    String urlPrefix;
                     if((urlPrefix = (String) map.get("HTTP")) == null) {
                         urlPrefix = (String) map.get("HTTPS");
                     }
@@ -324,7 +326,7 @@
     private void cleanupConfigurationDirs(ConfigurationData configurationData) {
         File configurationDir = configurationData.getConfigurationDir();
         if (!DeploymentUtil.recursiveDelete(configurationDir)) {
-            pendingDeletionIndex.setProperty(configurationDir.getName(), new String("delete"));
+            pendingDeletionIndex.setProperty(configurationDir.getName(), "delete");
             log.debug("Queued deployment directory to be reaped " + configurationDir);
         }
         for (Iterator iterator = configurationData.getChildConfigurations().iterator(); iterator.hasNext();) {

Modified: geronimo/branches/1.1/modules/j2ee/src/java/org/apache/geronimo/j2ee/management/impl/Util.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/j2ee/src/java/org/apache/geronimo/j2ee/management/impl/Util.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/j2ee/src/java/org/apache/geronimo/j2ee/management/impl/Util.java (original)
+++ geronimo/branches/1.1/modules/j2ee/src/java/org/apache/geronimo/j2ee/management/impl/Util.java Mon Mar  6 13:44:29 2006
@@ -31,6 +31,8 @@
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.GBeanData;
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.logging.Log;
 
@@ -81,20 +83,37 @@
      * @return the Configuration the bean is in, or null if it is not in a Configuration
      */
     public synchronized static ObjectName getConfiguration(Kernel kernel, ObjectName objectName) {
+        try {
+            GBeanData data = kernel.getGBeanData(objectName);
+            AbstractName abstractName = data.getAbstractName();
+            AbstractName result = getConfiguration(kernel, abstractName);
+            if (result == null) {
+                return null;
+            }
+            return result.getObjectName();
+        } catch (GBeanNotFoundException e) {
+            log.warn("gbean not found" + objectName);
+            return null;
+        }
+    }
+
+    public synchronized static AbstractName getConfiguration(Kernel kernel, AbstractName abstractName) {
         DependencyManager mgr = kernel.getDependencyManager();
-        Set parents = mgr.getParents(objectName);
+        Set parents = mgr.getParents(abstractName);
         if(parents == null || parents.isEmpty()) {
-            log.warn("No parents found for "+objectName);
+            log.warn("No parents found for "+abstractName);
             return null;
         }
         for (Iterator it = parents.iterator(); it.hasNext();) {
-            ObjectName name = (ObjectName) it.next();
+            AbstractName name = (AbstractName) it.next();
             try {
                 GBeanInfo info = kernel.getGBeanInfo(name);
                 if(info.getClassName().equals(Configuration.class.getName())) {
                     return name;
                 }
-            } catch (GBeanNotFoundException e) {} // should never happen
+            } catch (GBeanNotFoundException e) {
+                // should never happen
+            }
         }
         log.warn("No Configuration parent found");
         return null;

Modified: geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/Abstract77Test.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/Abstract77Test.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/Abstract77Test.java (original)
+++ geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/Abstract77Test.java Mon Mar  6 13:44:29 2006
@@ -20,15 +20,20 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.Hashtable;
 import javax.management.ObjectName;
 
 import junit.framework.TestCase;
 import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
 import org.apache.geronimo.j2ee.management.impl.J2EEDomainImpl;
 import org.apache.geronimo.j2ee.management.impl.J2EEServerImpl;
 import org.apache.geronimo.j2ee.management.impl.JVMImpl;
 import org.apache.geronimo.kernel.KernelFactory;
 import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.jmx.JMXUtil;
 import org.apache.geronimo.system.serverinfo.BasicServerInfo;
 import org.apache.log4j.Logger;
@@ -40,15 +45,30 @@
  * @version $Rev$ $Date$
  */
 public abstract class Abstract77Test extends TestCase {
-    protected static final ObjectName SERVER_INFO_NAME = JMXUtil.getObjectName("geronimo.system:role=ServerInfo");
+    protected static final GBeanData SERVER_INFO_DATA = buildGBeanData(new String[] {"role"}, new String[] {"ServerInfo"}, BasicServerInfo.getGBeanInfo());
 
     protected static final String DOMAIN = "geronimo.test";
-    protected static final ObjectName DOMAIN_NAME = JMXUtil.getObjectName(DOMAIN + ":j2eeType=J2EEDomain,name=" + DOMAIN);
-    protected static final ObjectName SERVER_NAME = JMXUtil.getObjectName(DOMAIN + ":j2eeType=J2EEServer,name=Test");
-    protected static final ObjectName JVM_NAME = JMXUtil.getObjectName(DOMAIN + ":j2eeType=JVM,J2EEServer=Test,name=JVM");
+    protected static final GBeanData DOMAIN_DATA = buildGBeanData(new String[] {"j2eeType", "name"}, new String[] {"J2EEDomain", DOMAIN}, J2EEDomainImpl.GBEAN_INFO);
+    protected static final GBeanData SERVER_DATA = buildGBeanData(new String[] {"j2eeType", "name"}, new String[] {"J2EEServer", "test"}, J2EEServerImpl.GBEAN_INFO);
+    protected static final GBeanData JVM_DATA = buildGBeanData(new String[] {"j2eeType", "J2EEServer", "name"}, new String[] {"JVM", "test", "JVM"}, JVMImpl.GBEAN_INFO);
 
     protected Kernel kernel;
 
+    private static GBeanData buildGBeanData(String[] key, String[] value, GBeanInfo info) {
+        AbstractName abstractName = buildAbstractName(key, value, info);
+        return new GBeanData(abstractName, info);
+    }
+
+    private static AbstractName buildAbstractName(String[] key, String value[], GBeanInfo info) {
+        Hashtable names = new Hashtable();
+        for (int i = 0; i < key.length; i++) {
+            String k = key[i];
+            String v = value[i];
+            names.put(k, v);
+        }
+        return new AbstractName(new Artifact("test", "foo", "1", "car"), names, info.getInterfaces(), JMXUtil.getObjectName(DOMAIN, names));
+    }
+
     protected void setUp() throws Exception {
         Logger.getRootLogger().setLevel(Level.WARN);
         Logger.getRootLogger().addAppender(new ConsoleAppender(new PatternLayout("%p [%t] %m %n")));
@@ -57,36 +77,32 @@
         kernel.boot();
 
         ClassLoader classLoader = getClass().getClassLoader();
-        GBeanData gbean;
-        gbean = new GBeanData(SERVER_INFO_NAME, BasicServerInfo.getGBeanInfo());
-        gbean.setAttribute("baseDirectory", System.getProperty("java.io.tmpdir"));
-        kernel.loadGBean(gbean, classLoader);
-
-        gbean = new GBeanData(DOMAIN_NAME, J2EEDomainImpl.GBEAN_INFO);
-        kernel.loadGBean(gbean, classLoader);
-
-        gbean = new GBeanData(SERVER_NAME, J2EEServerImpl.GBEAN_INFO);
-        gbean.setReferencePatterns("ServerInfo", Collections.singleton(SERVER_INFO_NAME));
-        kernel.loadGBean(gbean, classLoader);
-
-
-        kernel.loadGBean(new GBeanData(JVM_NAME, JVMImpl.GBEAN_INFO), classLoader);
-        kernel.startGBean(SERVER_INFO_NAME);
-        kernel.startGBean(DOMAIN_NAME);
-        kernel.startGBean(SERVER_NAME);
-        kernel.startGBean(JVM_NAME);
+        SERVER_INFO_DATA.setAttribute("baseDirectory", System.getProperty("java.io.tmpdir"));
+        kernel.loadGBean(SERVER_INFO_DATA, classLoader);
+
+        kernel.loadGBean(DOMAIN_DATA, classLoader);
+
+        SERVER_DATA.setReferencePatterns("ServerInfo", Collections.singleton(new AbstractNameQuery(SERVER_INFO_DATA.getAbstractName())));
+        kernel.loadGBean(SERVER_DATA, classLoader);
+
+
+        kernel.loadGBean(JVM_DATA, classLoader);
+        kernel.startGBean(SERVER_INFO_DATA.getAbstractName());
+        kernel.startGBean(DOMAIN_DATA.getAbstractName());
+        kernel.startGBean(SERVER_DATA.getAbstractName());
+        kernel.startGBean(JVM_DATA.getAbstractName());
     }
 
     protected void tearDown() throws Exception {
         super.tearDown();
-        kernel.stopGBean(JVM_NAME);
-        kernel.stopGBean(SERVER_NAME);
-        kernel.stopGBean(DOMAIN_NAME);
-        kernel.stopGBean(SERVER_INFO_NAME);
-        kernel.unloadGBean(JVM_NAME);
-        kernel.unloadGBean(SERVER_NAME);
-        kernel.unloadGBean(DOMAIN_NAME);
-        kernel.unloadGBean(SERVER_INFO_NAME);
+        kernel.stopGBean(JVM_DATA.getAbstractName());
+        kernel.stopGBean(SERVER_DATA.getAbstractName());
+        kernel.stopGBean(DOMAIN_DATA.getAbstractName());
+        kernel.stopGBean(SERVER_INFO_DATA.getAbstractName());
+        kernel.unloadGBean(JVM_DATA.getAbstractName());
+        kernel.unloadGBean(SERVER_DATA.getAbstractName());
+        kernel.unloadGBean(DOMAIN_DATA.getAbstractName());
+        kernel.unloadGBean(SERVER_INFO_DATA.getAbstractName());
         kernel.shutdown();
         kernel = null;
     }

Modified: geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/DomainTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/DomainTest.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/DomainTest.java (original)
+++ geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/DomainTest.java Mon Mar  6 13:44:29 2006
@@ -25,18 +25,18 @@
     private J2EEDomain domain;
 
     public void testStandardInterface() throws Exception {
-        assertEquals(DOMAIN_NAME.toString(), domain.getObjectName());
-        assertObjectNamesEqual(new String[]{SERVER_NAME.toString()}, domain.getServers());
+        assertEquals(DOMAIN_DATA.getName().toString(), domain.getObjectName());
+        assertObjectNamesEqual(new String[]{SERVER_DATA.getName().toString()}, domain.getServers());
     }
 
     public void testStandardAttributes() throws Exception {
-        assertEquals(DOMAIN_NAME.toString(), kernel.getAttribute(DOMAIN_NAME, "objectName"));
-        assertObjectNamesEqual(new String[]{SERVER_NAME.toString()}, (String[]) kernel.getAttribute(DOMAIN_NAME, "servers"));
+        assertEquals(DOMAIN_DATA.getName().toString(), kernel.getAttribute(DOMAIN_DATA.getAbstractName(), "objectName"));
+        assertObjectNamesEqual(new String[]{SERVER_DATA.getName().toString()}, (String[]) kernel.getAttribute(DOMAIN_DATA.getAbstractName(), "servers"));
     }
 
     protected void setUp() throws Exception {
         super.setUp();
-        domain = (J2EEDomain) kernel.getProxyManager().createProxy(DOMAIN_NAME, J2EEDomain.class);
+        domain = (J2EEDomain) kernel.getProxyManager().createProxy(DOMAIN_DATA.getAbstractName(), J2EEDomain.class);
     }
 
     protected void tearDown() throws Exception {

Modified: geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/JVMTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/JVMTest.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/JVMTest.java (original)
+++ geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/JVMTest.java Mon Mar  6 13:44:29 2006
@@ -31,17 +31,17 @@
     private Runtime runtime;
 
     public void testStandardInterface() {
-        assertEquals(JVM_NAME.getCanonicalName(), jvm.getObjectName());
+        assertEquals(JVM_DATA.getName().getCanonicalName(), jvm.getObjectName());
         assertEquals(System.getProperty("java.version"), jvm.getJavaVersion());
         assertEquals(System.getProperty("java.vendor"), jvm.getJavaVendor());
         assertEquals(node, jvm.getNode());
     }
 
     public void testStandardAttributes() throws Exception {
-        assertEquals(JVM_NAME.getCanonicalName(), kernel.getAttribute(JVM_NAME, "objectName"));
-        assertEquals(System.getProperty("java.version"), kernel.getAttribute(JVM_NAME, "javaVersion"));
-        assertEquals(System.getProperty("java.vendor"), kernel.getAttribute(JVM_NAME, "javaVendor"));
-        assertEquals(node, kernel.getAttribute(JVM_NAME, "node"));
+        assertEquals(JVM_DATA.getName().getCanonicalName(), kernel.getAttribute(JVM_DATA.getName(), "objectName"));
+        assertEquals(System.getProperty("java.version"), kernel.getAttribute(JVM_DATA.getName(), "javaVersion"));
+        assertEquals(System.getProperty("java.vendor"), kernel.getAttribute(JVM_DATA.getName(), "javaVendor"));
+        assertEquals(node, kernel.getAttribute(JVM_DATA.getName(), "node"));
     }
 
     public void testGeronimoInterface() {
@@ -50,12 +50,12 @@
     }
 
     public void testGeronimoAttributes() throws Exception {
-        assertEquals(new Integer(runtime.availableProcessors()), kernel.getAttribute(JVM_NAME, "availableProcessors"));
+        assertEquals(new Integer(runtime.availableProcessors()), kernel.getAttribute(JVM_DATA.getName(), "availableProcessors"));
     }
 
     public void testStatistics() throws Exception {
-        assertEquals(Boolean.TRUE, kernel.getAttribute(JVM_NAME, "statisticsProvider"));
-        JVMStats stats = (JVMStats) kernel.getAttribute(JVM_NAME, "stats");
+        assertEquals(Boolean.TRUE, kernel.getAttribute(JVM_DATA.getName(), "statisticsProvider"));
+        JVMStats stats = (JVMStats) kernel.getAttribute(JVM_DATA.getName(), "stats");
         assertNotNull(stats.getHeapSize());
         assertTrue(stats.getHeapSize().getCurrent() > 0);
         assertNotNull(stats.getHeapSize().getDescription());
@@ -78,8 +78,8 @@
 
     protected void setUp() throws Exception {
         super.setUp();
-        jvm = (JVM) kernel.getProxyManager().createProxy(JVM_NAME, JVM.class);
-        jvmEx = (org.apache.geronimo.management.geronimo.JVM) kernel.getProxyManager().createProxy(JVM_NAME, org.apache.geronimo.management.geronimo.JVM.class);
+        jvm = (JVM) kernel.getProxyManager().createProxy(JVM_DATA.getName(), JVM.class);
+        jvmEx = (org.apache.geronimo.management.geronimo.JVM) kernel.getProxyManager().createProxy(JVM_DATA.getName(), org.apache.geronimo.management.geronimo.JVM.class);
         node = InetAddress.getLocalHost().toString();
         runtime = Runtime.getRuntime();
     }

Modified: geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/ServerTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/ServerTest.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/ServerTest.java (original)
+++ geronimo/branches/1.1/modules/j2ee/src/test/org/apache/geronimo/j2ee/management/ServerTest.java Mon Mar  6 13:44:29 2006
@@ -28,27 +28,27 @@
     private String version;
 
     public void testStandardInterface() throws Exception {
-        assertEquals(SERVER_NAME.toString(), server.getObjectName());
+        assertEquals(SERVER_DATA.getName().toString(), server.getObjectName());
         assertEquals(0, server.getDeployedObjects().length);
         assertEquals(0, server.getResources().length);
-        assertObjectNamesEqual(new String[]{JVM_NAME.toString()}, server.getJavaVMs());
+        assertObjectNamesEqual(new String[]{JVM_DATA.getName().toString()}, server.getJavaVMs());
         assertEquals("The Apache Software Foundation", server.getServerVendor());
         assertEquals(version, server.getServerVersion());
     }
 
     public void testStandardAttributes() throws Exception {
-        assertEquals(SERVER_NAME.toString(), kernel.getAttribute(SERVER_NAME, "objectName"));
-        assertEquals(0, ((String[]) kernel.getAttribute(SERVER_NAME, "deployedObjects")).length);
-        assertEquals(0, ((String[]) kernel.getAttribute(SERVER_NAME, "resources")).length);
-        assertObjectNamesEqual(new String[]{JVM_NAME.toString()}, (String[]) kernel.getAttribute(SERVER_NAME, "javaVMs"));
-        assertEquals("The Apache Software Foundation", kernel.getAttribute(SERVER_NAME, "serverVendor"));
-        assertEquals(version, kernel.getAttribute(SERVER_NAME, "serverVersion"));
+        assertEquals(SERVER_DATA.getName().toString(), kernel.getAttribute(SERVER_DATA.getName(), "objectName"));
+        assertEquals(0, ((String[]) kernel.getAttribute(SERVER_DATA.getName(), "deployedObjects")).length);
+        assertEquals(0, ((String[]) kernel.getAttribute(SERVER_DATA.getName(), "resources")).length);
+        assertObjectNamesEqual(new String[]{JVM_DATA.getName().toString()}, (String[]) kernel.getAttribute(SERVER_DATA.getName(), "javaVMs"));
+        assertEquals("The Apache Software Foundation", kernel.getAttribute(SERVER_DATA.getName(), "serverVendor"));
+        assertEquals(version, kernel.getAttribute(SERVER_DATA.getName(), "serverVersion"));
     }
 
     protected void setUp() throws Exception {
         super.setUp();
-        server = (J2EEServer) kernel.getProxyManager().createProxy(SERVER_NAME, J2EEServer.class);
-        version = (String) kernel.getAttribute(SERVER_INFO_NAME, "version");
+        server = (J2EEServer) kernel.getProxyManager().createProxy(SERVER_DATA.getName(), J2EEServer.class);
+        version = (String) kernel.getAttribute(SERVER_INFO_DATA.getName(), "version");
     }
 
     protected void tearDown() throws Exception {

Added: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractName.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractName.java?rev=383682&view=auto
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractName.java (added)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractName.java Mon Mar  6 13:44:29 2006
@@ -0,0 +1,103 @@
+/**
+ *
+ * Copyright 2006 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.gbean;
+
+import org.apache.geronimo.kernel.repository.Artifact;
+
+import javax.management.ObjectName;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class AbstractName implements Serializable {
+
+    private final Artifact artifact;
+    private final Map name;
+    private final Set interfaceTypes;
+
+    private final ObjectName objectName;
+
+    public AbstractName(Artifact artifact, Map name, String interfaceType, ObjectName objectName) {
+        this.artifact = artifact;
+        this.name = name;
+        this.interfaceTypes = Collections.singleton(interfaceType);
+        this.objectName = objectName;
+    }
+
+    public AbstractName(Artifact artifact, Map name, Set interfaceTypes, ObjectName objectName) {
+        this.artifact = artifact;
+        this.name = name;
+        this.interfaceTypes = interfaceTypes;
+        this.objectName = objectName;
+    }
+
+    public Artifact getArtifact() {
+        return artifact;
+    }
+
+    public Map getName() {
+        return name;
+    }
+
+    public Set getInterfaceTypes() {
+        return interfaceTypes;
+    }
+
+    public ObjectName getObjectName() {
+        return objectName;
+    }
+
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+            buf.append("artifact=").append(artifact);
+        for (Iterator iterator = interfaceTypes.iterator(); iterator.hasNext();) {
+            String interfaceType = (String) iterator.next();
+            buf.append(",interface=").append(interfaceType);
+        }
+        for (Iterator iterator = name.entrySet().iterator(); iterator.hasNext();) {
+            Map.Entry entry = (Map.Entry) iterator.next();
+            buf.append(",").append(entry.getKey()).append("=").append(entry.getValue());
+        }
+        return buf.toString();
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        final AbstractName that = (AbstractName) o;
+
+        if (artifact != null ? !artifact.equals(that.artifact) : that.artifact != null) return false;
+        if (name != null ? !name.equals(that.name) : that.name != null) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        int result;
+        result = (artifact != null ? artifact.hashCode() : 0);
+        result = 29 * result + (name != null ? name.hashCode() : 0);
+        return result;
+    }
+
+}

Added: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractNameQuery.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractNameQuery.java?rev=383682&view=auto
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractNameQuery.java (added)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractNameQuery.java Mon Mar  6 13:44:29 2006
@@ -0,0 +1,169 @@
+/**
+ *
+ * Copyright 2006 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.gbean;
+
+import org.apache.geronimo.kernel.repository.Artifact;
+
+import java.io.Serializable;
+import java.util.Map;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.Collections;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class AbstractNameQuery implements Serializable {
+
+    private final List artifacts;
+    private final Map name;
+    private final Set interfaceTypes;
+
+    public AbstractNameQuery(AbstractName abstractName) {
+        this.artifacts = Collections.singletonList(abstractName.getArtifact());
+        this.name = abstractName.getName();
+        this.interfaceTypes = abstractName.getInterfaceTypes();
+    }
+
+    public AbstractNameQuery(Artifact artifact, Map name, String interfaceType) {
+        this.artifacts = Collections.singletonList(artifact);
+        this.name = name;
+        this.interfaceTypes = Collections.singleton(interfaceType);
+    }
+
+    public AbstractNameQuery(String interfaceType) {
+        this.artifacts = Collections.EMPTY_LIST;
+        this.name = Collections.EMPTY_MAP;
+        this.interfaceTypes = Collections.singleton(interfaceType);
+    }
+
+    public AbstractNameQuery(List artifacts, Map name, Set interfaceTypes) {
+        this.artifacts = artifacts;
+        this.name = name;
+        this.interfaceTypes = interfaceTypes;
+    }
+
+    public AbstractNameQuery(Artifact artifact, Map name, Set interfaceTypes) {
+        this.artifacts = Collections.singletonList(artifact);
+        this.name = name;
+        this.interfaceTypes = interfaceTypes;
+    }
+
+    public List getArtifacts() {
+        return artifacts;
+    }
+
+    public Map getName() {
+        return name;
+    }
+
+    public Set getInterfaceTypes() {
+        return interfaceTypes;
+    }
+
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        String separator = "";
+        for (Iterator iterator = artifacts.iterator(); iterator.hasNext();) {
+            Artifact artifact = (Artifact) iterator.next();
+            buf.append(separator).append("artifact=").append(artifact);
+            separator = ",";
+        }
+        for (Iterator iterator = interfaceTypes.iterator(); iterator.hasNext();) {
+            String interfaceType = (String) iterator.next();
+            buf.append(",interface=").append(interfaceType);
+        }
+        for (Iterator iterator = name.entrySet().iterator(); iterator.hasNext();) {
+            Map.Entry entry = (Map.Entry) iterator.next();
+            buf.append(",").append(entry.getKey()).append("=").append(entry.getValue());
+        }
+        return buf.toString();
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        final AbstractNameQuery that = (AbstractNameQuery) o;
+
+        if (artifacts != null ? !artifacts.equals(that.artifacts) : that.artifacts != null) return false;
+        if (interfaceTypes != null ? !interfaceTypes.equals(that.interfaceTypes) : that.interfaceTypes != null)
+            return false;
+        return !(name != null ? !name.equals(that.name) : that.name != null);
+
+    }
+
+    public int hashCode() {
+        int result;
+        result = (artifacts != null ? artifacts.hashCode() : 0);
+        result = 29 * result + (name != null ? name.hashCode() : 0);
+        result = 29 * result + (interfaceTypes != null ? interfaceTypes.hashCode() : 0);
+        return result;
+    }
+
+    /**
+     * determine if the supplied info is more specific and matches our patterns.  In this method
+     * "this" is the query, the info parameter is the test specific info.
+     * @param info
+     * @return if the specific info supplied matches our patterns.
+     */
+    public boolean matches(AbstractNameQuery info) {
+        List artifacts = info.getArtifacts();
+        if (artifacts.size() != 1) {
+            throw new IllegalArgumentException("source info must have only one artifact");
+        }
+        if (!info.getName().entrySet().containsAll(name.entrySet())) {
+            return false;
+        }
+        if (!info.getInterfaceTypes().containsAll(interfaceTypes)) {
+            return false;
+        }
+        if (getArtifacts().isEmpty()) {
+            return true;
+        }
+        Artifact otherArtifact = (Artifact) artifacts.iterator().next();
+        for (Iterator iterator = getArtifacts().iterator(); iterator.hasNext();) {
+            Artifact artifact = (Artifact) iterator.next();
+            if (artifact.matches(otherArtifact)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public boolean matches(AbstractName info) {
+        if (!info.getName().entrySet().containsAll(name.entrySet())) {
+            return false;
+        }
+        if (!info.getInterfaceTypes().containsAll(interfaceTypes)) {
+            return false;
+        }
+        if (getArtifacts().isEmpty()) {
+            return true;
+        }
+        Artifact otherArtifact = info.getArtifact();
+        for (Iterator iterator = getArtifacts().iterator(); iterator.hasNext();) {
+            Artifact artifact = (Artifact) iterator.next();
+            if (artifact.matches(otherArtifact)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/GBeanData.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/GBeanData.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/GBeanData.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/GBeanData.java Mon Mar  6 13:44:29 2006
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.gbean;
 
+import org.apache.geronimo.kernel.repository.Artifact;
+
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
@@ -36,11 +38,13 @@
 public class GBeanData implements Externalizable {
     private Map nameMap;
     private Set omit;
+    //TODO remove
     private ObjectName name;
     private GBeanInfo gbeanInfo;
     private final Map attributes;
     private final Map references;
     private final Set dependencies;
+    private AbstractName abstractName;
 
     public GBeanData() {
         nameMap = new HashMap();
@@ -61,6 +65,14 @@
         this.gbeanInfo = gbeanInfo;
     }
 
+    public GBeanData(AbstractName abstractName, GBeanInfo gbeanInfo) {
+        this();
+        this.abstractName = abstractName;
+        this.nameMap = abstractName.getName();
+        this.omit = new HashSet();
+        this.gbeanInfo = gbeanInfo;
+    }
+
     public GBeanData(Map nameMap, Set omitMap, GBeanInfo gbeanInfo) {
         this();
         this.nameMap.putAll(nameMap);
@@ -78,22 +90,30 @@
         attributes = new HashMap(gbeanData.attributes);
         references = new HashMap(gbeanData.references);
         dependencies = new HashSet(gbeanData.dependencies);
+        abstractName = gbeanData.abstractName;
     }
 
     public ObjectName getName() {
-        return name;
+        //TODO remove the name attribute
+        return abstractName == null? name: abstractName.getObjectName();
     }
 
+    //TODO remove
     public void setName(ObjectName name) {
         this.name = name;
     }
 
-    public void initializeName(ObjectName base) throws MalformedObjectNameException {
+    public void initializeName(Artifact configName, ObjectName base) throws MalformedObjectNameException {
         String domain = base.getDomain();
         Hashtable keys = base.getKeyPropertyList();
         keys.keySet().removeAll(omit);
         keys.putAll(nameMap);
-        name = new ObjectName(domain, keys);
+        ObjectName objectName = new ObjectName(domain, keys);
+        abstractName = new AbstractName(configName, nameMap, gbeanInfo.getInterfaces(), objectName);
+    }
+
+    public AbstractName getAbstractName() {
+        return abstractName;
     }
 
     public void setNameMap(Map nameMap) {
@@ -101,6 +121,10 @@
         this.nameMap.putAll(nameMap);
     }
 
+    public Map getNameMap() {
+        return nameMap;
+    }
+
     public void setOmit(Set omit) {
         this.omit.clear();
         this.omit.addAll(omit);
@@ -142,7 +166,7 @@
         return (Set) references.get(name);
     }
 
-    public void setReferencePattern(String name, ObjectName pattern) {
+    public void setReferencePattern(String name, AbstractNameQuery pattern) {
         setReferencePatterns(name, Collections.singleton(pattern));
     }
 

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/AbstractGBeanReference.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/AbstractGBeanReference.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/AbstractGBeanReference.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/AbstractGBeanReference.java Mon Mar  6 13:44:29 2006
@@ -16,14 +16,7 @@
  */
 package org.apache.geronimo.gbean.runtime;
 
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import javax.management.ObjectName;
-
+import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.gbean.GReferenceInfo;
 import org.apache.geronimo.gbean.InvalidConfigurationException;
 import org.apache.geronimo.kernel.ClassLoading;
@@ -33,6 +26,13 @@
 import org.apache.geronimo.kernel.lifecycle.LifecycleListener;
 import org.apache.geronimo.kernel.management.State;
 
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
 /**
  * @version $Rev$ $Date$
  */
@@ -141,9 +141,9 @@
 
     protected abstract LifecycleListener createLifecycleListener();
 
-    protected abstract void targetAdded(ObjectName target);
+    protected abstract void targetAdded(AbstractName target);
 
-    protected abstract void targetRemoved(ObjectName target);
+    protected abstract void targetRemoved(AbstractName target);
 
     protected final Kernel getKernel() {
         return kernel;
@@ -208,7 +208,7 @@
     public final synchronized void online() {
         Set gbeans = kernel.listGBeans(patterns);
         for (Iterator objectNameIterator = gbeans.iterator(); objectNameIterator.hasNext();) {
-            ObjectName target = (ObjectName) objectNameIterator.next();
+            AbstractName target = (AbstractName) objectNameIterator.next();
             if (!targets.contains(target)) {
 
                 // if the bean is running add it to the runningTargets list
@@ -236,17 +236,17 @@
         return targets;
     }
 
-    protected final void addTarget(ObjectName objectName) {
-        if (!targets.contains(objectName)) {
-            targets.add(objectName);
-            targetAdded(objectName);
+    protected final void addTarget(AbstractName abstractName) {
+        if (!targets.contains(abstractName)) {
+            targets.add(abstractName);
+            targetAdded(abstractName);
         }
     }
 
-    protected final void removeTarget(ObjectName objectName) {
-        boolean wasTarget = targets.remove(objectName);
+    protected final void removeTarget(AbstractName abstractName) {
+        boolean wasTarget = targets.remove(abstractName);
         if (wasTarget) {
-            targetRemoved(objectName);
+            targetRemoved(abstractName);
         }
     }
 
@@ -260,12 +260,12 @@
     /**
      * Is the component in the Running state
      *
-     * @param objectName name of the component to check
+     * @param abstractName name of the component to check
      * @return true if the component is running; false otherwise
      */
-    private boolean isRunning(Kernel kernel, ObjectName objectName) {
+    private boolean isRunning(Kernel kernel, AbstractName abstractName) {
         try {
-            final int state = kernel.getGBeanState(objectName);
+            final int state = kernel.getGBeanState(abstractName);
             return state == State.RUNNING_INDEX;
         } catch (GBeanNotFoundException e) {
             // mbean is no longer registerd

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanCollectionReference.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanCollectionReference.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanCollectionReference.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanCollectionReference.java Mon Mar  6 13:44:29 2006
@@ -17,10 +17,9 @@
 
 package org.apache.geronimo.gbean.runtime;
 
-import javax.management.ObjectName;
-
 import org.apache.geronimo.gbean.GReferenceInfo;
 import org.apache.geronimo.gbean.InvalidConfigurationException;
+import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.kernel.DependencyManager;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.lifecycle.LifecycleAdapter;
@@ -51,14 +50,14 @@
         }
     }
 
-    protected synchronized void targetAdded(ObjectName target) {
+    protected synchronized void targetAdded(AbstractName target) {
         ProxyCollection proxy = (ProxyCollection) getProxy();
         if (proxy != null) {
             proxy.addTarget(target);
         }
     }
 
-    protected synchronized void targetRemoved(ObjectName target) {
+    protected synchronized void targetRemoved(AbstractName target) {
         ProxyCollection proxy = (ProxyCollection) getProxy();
         if (proxy != null) {
             proxy.removeTarget(target);
@@ -67,24 +66,24 @@
 
     protected LifecycleListener createLifecycleListener() {
         return new LifecycleAdapter() {
-                    public void running(ObjectName objectName) {
-                        addTarget(objectName);
+                    public void running(AbstractName abstractName) {
+                        addTarget(abstractName);
                     }
 
-                    public void stopping(ObjectName objectName) {
-                        removeTarget(objectName);
+                    public void stopping(AbstractName abstractName) {
+                        removeTarget(abstractName);
                     }
 
-                    public void stopped(ObjectName objectName) {
-                        removeTarget(objectName);
+                    public void stopped(AbstractName abstractName) {
+                        removeTarget(abstractName);
                     }
 
-                    public void failed(ObjectName objectName) {
-                        removeTarget(objectName);
+                    public void failed(AbstractName abstractName) {
+                        removeTarget(abstractName);
                     }
 
-                    public void unloaded(ObjectName objectName) {
-                        removeTarget(objectName);
+                    public void unloaded(AbstractName abstractName) {
+                        removeTarget(abstractName);
                     }
                 };
     }

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanDependency.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanDependency.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanDependency.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanDependency.java Mon Mar  6 13:44:29 2006
@@ -16,14 +16,10 @@
  */
 package org.apache.geronimo.gbean.runtime;
 
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import javax.management.ObjectName;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
 import org.apache.geronimo.gbean.InvalidConfigurationException;
 import org.apache.geronimo.kernel.DependencyManager;
 import org.apache.geronimo.kernel.GBeanNotFoundException;
@@ -32,6 +28,11 @@
 import org.apache.geronimo.kernel.lifecycle.LifecycleListener;
 import org.apache.geronimo.kernel.management.State;
 
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
 /**
  * @version $Rev$ $Date$
  */
@@ -71,7 +72,7 @@
      */
     private boolean isOnline = false;
 
-    public GBeanDependency(GBeanInstance gbeanInstance, ObjectName pattern, Kernel kernel, DependencyManager dependencyManager) throws InvalidConfigurationException {
+    public GBeanDependency(GBeanInstance gbeanInstance, AbstractNameQuery pattern, Kernel kernel, DependencyManager dependencyManager) throws InvalidConfigurationException {
         this.gbeanInstance = gbeanInstance;
         this.kernel = kernel;
         this.dependencyManager = dependencyManager;
@@ -89,7 +90,7 @@
     /**
      * The object to which the proxy is bound
      */
-    private ObjectName proxyTarget;
+    private AbstractName proxyTarget;
 
 
     public synchronized boolean start() {
@@ -98,27 +99,27 @@
             //
             // We must have exactally one running target
             //
-            ObjectName objectName = getGBeanInstance().getObjectNameObject();
+            AbstractName abstractName = getGBeanInstance().getAbstractName();
             Set targets = getTargets();
             if (targets.size() == 0) {
                 waitingForMe = true;
-                log.debug("Waiting to start " + objectName + " because no targets are running for the dependency matching the patternspatterns " + getPatternsText());
+                log.debug("Waiting to start " + abstractName + " because no targets are running for the dependency matching the patternspatterns " + getPatternsText());
                 return false;
             } else if (targets.size() > 1) {
                 waitingForMe = true;
-                log.debug("Waiting to start " + objectName + " because more then one targets are running for the dependency matching the patternspatterns " + getPatternsText());
+                log.debug("Waiting to start " + abstractName + " because more then one targets are running for the dependency matching the patternspatterns " + getPatternsText());
                 return false;
             }
             waitingForMe = false;
 
             // stop all gbeans that would match our patterns from starting
             DependencyManager dependencyManager = getDependencyManager();
-            dependencyManager.addStartHolds(objectName, getPatterns());
+            dependencyManager.addStartHolds(abstractName, getPatterns());
 
             // add a dependency on our target and create the proxy
-            ObjectName target = (ObjectName) targets.iterator().next();
+            AbstractName target = (AbstractName) targets.iterator().next();
             proxyTarget = target;
-            dependencyManager.addDependency(objectName, target);
+            dependencyManager.addDependency(abstractName, target);
         }
 
         return true;
@@ -128,28 +129,28 @@
         StringBuffer buf = new StringBuffer();
         Set patterns = getPatterns();
         for (Iterator iterator = patterns.iterator(); iterator.hasNext();) {
-            ObjectName objectName = (ObjectName) iterator.next();
-            buf.append(objectName.getCanonicalName()).append(" ");
+            AbstractNameQuery objectName = (AbstractNameQuery) iterator.next();
+            buf.append(objectName).append(" ");
         }
         return buf.toString();
     }
 
     public synchronized void stop() {
         waitingForMe = false;
-        ObjectName objectName = getGBeanInstance().getObjectNameObject();
+        AbstractName abstractName = getGBeanInstance().getAbstractName();
         Set patterns = getPatterns();
         DependencyManager dependencyManager = getDependencyManager();
         if (!patterns.isEmpty()) {
-            dependencyManager.removeStartHolds(objectName, patterns);
+            dependencyManager.removeStartHolds(abstractName, patterns);
         }
 
         if (proxyTarget != null) {
-            dependencyManager.removeDependency(objectName, proxyTarget);
+            dependencyManager.removeDependency(abstractName, proxyTarget);
             proxyTarget = null;
         }
     }
 
-    protected synchronized void targetAdded(ObjectName target) {
+    protected synchronized void targetAdded(AbstractName target) {
         // if we are running, and we now have two valid targets, which is an illegal state so we need to fail
         GBeanInstance gbeanInstance = getGBeanInstance();
         if (gbeanInstance.getStateInstance() == State.RUNNING) {
@@ -166,7 +167,7 @@
         }
     }
 
-    protected synchronized void targetRemoved(ObjectName target) {
+    protected synchronized void targetRemoved(AbstractName target) {
         GBeanInstance gbeanInstance = getGBeanInstance();
         if (gbeanInstance.getStateInstance() == State.RUNNING) {
             // we no longer have a valid target, which is an illegal state so we need to fail
@@ -196,20 +197,20 @@
 
     protected LifecycleListener createLifecycleListener() {
         return new LifecycleAdapter() {
-                    public void running(ObjectName objectName) {
-                        addTarget(objectName);
+                    public void running(AbstractName abstractName) {
+                        addTarget(abstractName);
                     }
 
-                    public void stopped(ObjectName objectName) {
-                        removeTarget(objectName);
+                    public void stopped(AbstractName abstractName) {
+                        removeTarget(abstractName);
                     }
 
-                    public void failed(ObjectName objectName) {
-                        removeTarget(objectName);
+                    public void failed(AbstractName abstractName) {
+                        removeTarget(abstractName);
                     }
 
-                    public void unloaded(ObjectName objectName) {
-                        removeTarget(objectName);
+                    public void unloaded(AbstractName abstractName) {
+                        removeTarget(abstractName);
                     }
                 };
     }
@@ -253,7 +254,7 @@
     public final synchronized void online() {
         Set gbeans = kernel.listGBeans(patterns);
         for (Iterator objectNameIterator = gbeans.iterator(); objectNameIterator.hasNext();) {
-            ObjectName target = (ObjectName) objectNameIterator.next();
+            AbstractName target = (AbstractName) objectNameIterator.next();
             if (!targets.contains(target)) {
 
                 // if the bean is running add it to the runningTargets list
@@ -281,17 +282,17 @@
         return targets;
     }
 
-    protected final void addTarget(ObjectName objectName) {
-        if (!targets.contains(objectName)) {
-            targets.add(objectName);
-            targetAdded(objectName);
+    protected final void addTarget(AbstractName abstractName) {
+        if (!targets.contains(abstractName)) {
+            targets.add(abstractName);
+            targetAdded(abstractName);
         }
     }
 
-    protected final void removeTarget(ObjectName objectName) {
-        boolean wasTarget = targets.remove(objectName);
+    protected final void removeTarget(AbstractName abstractName) {
+        boolean wasTarget = targets.remove(abstractName);
         if (wasTarget) {
-            targetRemoved(objectName);
+            targetRemoved(abstractName);
         }
     }
 
@@ -302,7 +303,7 @@
      * @param objectName name of the component to check
      * @return true if the component is running; false otherwise
      */
-    private boolean isRunning(Kernel kernel, ObjectName objectName) {
+    private boolean isRunning(Kernel kernel, AbstractName objectName) {
         try {
             final int state = kernel.getGBeanState(objectName);
             return state == State.RUNNING_INDEX;

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java?rev=383682&r1=383681&r2=383682&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java Mon Mar  6 13:44:29 2006
@@ -70,9 +70,9 @@
     private ManageableAttributeStore manageableStore;
 
     /**
-     * The unique name of this service.
+     * the abstract name of this service
      */
-    private final ObjectName objectName;
+    private final AbstractName abstractName;
 
     /**
      * This handles all state transiitions for this instance.
@@ -195,10 +195,10 @@
      * mismatched attribute types or the intial data cannot be set
      */
     public GBeanInstance(GBeanData gbeanData, Kernel kernel, DependencyManager dependencyManager, LifecycleBroadcaster lifecycleBroadcaster, ClassLoader classLoader) throws InvalidConfigurationException {
-        this.objectName = gbeanData.getName();
+        this.abstractName = gbeanData.getAbstractName();
         this.kernel = kernel;
         this.lifecycleBroadcaster = lifecycleBroadcaster;
-        this.gbeanInstanceState = new GBeanInstanceState(objectName, kernel, dependencyManager, this, lifecycleBroadcaster);
+        this.gbeanInstanceState = new GBeanInstanceState(abstractName, kernel, dependencyManager, this, lifecycleBroadcaster);
         this.classLoader = classLoader;
 
         GBeanInfo gbeanInfo = gbeanData.getGBeanInfo();
@@ -247,7 +247,7 @@
         dependencies = new GBeanDependency[gbeanData.getDependencies().size()];
         int j = 0;
         for (Iterator iterator = gbeanData.getDependencies().iterator(); iterator.hasNext();) {
-            ObjectName dependencyName = (ObjectName) iterator.next();
+            AbstractNameQuery dependencyName = (AbstractNameQuery) iterator.next();
             GBeanDependency dependency = new GBeanDependency(this, dependencyName, kernel, dependencyManager);
             dependencies[j++] = dependency;
         }
@@ -296,7 +296,7 @@
             Constructor[] constructors = type.getConstructors();
             for (int i = 0; i < constructors.length; i++) {
                 Constructor testConstructor = constructors[i];
-                buf.append("constructor types: " + testConstructor.getParameterTypes() + "\n");
+                buf.append("constructor types: ").append(testConstructor.getParameterTypes()).append("\n");
                 if (testConstructor.getParameterTypes().length == parameterTypes.length) {
                     Class[] testParameterTypes = testConstructor.getParameterTypes();
                     for (int k = 0; k < testParameterTypes.length; k++) {
@@ -349,7 +349,7 @@
                 getReferenceByName(referenceName).setPatterns(referencePattern);
             }
         } catch (Exception e) {
-            throw new InvalidConfigurationException("Could not inject configuration data into the GBean " + objectName, e);
+            throw new InvalidConfigurationException("Could not inject configuration data into the GBean " + abstractName, e);
         }
 
         for (int i = 0; i < references.length; i++) {
@@ -365,7 +365,7 @@
         synchronized (this) {
             if (dead) {
                 // someone beat us to the punch... this instance should have never been found in the first place
-                throw new GBeanNotFoundException(objectName);
+                throw new GBeanNotFoundException(abstractName);
             }
             dead = true;
         }
@@ -373,7 +373,7 @@
         // if the bean is already stopped or failed, this will do nothing; otherwise it will shutdown the bean
         int state = getState();
         if (state != State.STOPPED_INDEX && state != State.FAILED_INDEX) {
-            log.error("GBeanInstance should already be stopped before die() is called: objectName=" + objectName + " state=" + State.fromInt(state));
+            log.error("GBeanInstance should already be stopped before die() is called: abstractName=" + abstractName + " state=" + State.fromInt(state));
         }
 
         gbeanInstanceState.fail();
@@ -436,11 +436,15 @@
     }
 
     public final String getObjectName() {
-        return objectName.getCanonicalName();
+        return abstractName.getObjectName().getCanonicalName();
     }
 
     public final ObjectName getObjectNameObject() {
-        return objectName;
+        return abstractName.getObjectName();
+    }
+
+    public final AbstractName getAbstractName() {
+        return abstractName;
     }
 
     /**
@@ -511,10 +515,10 @@
     public final void start() {
         synchronized (this) {
             if (dead) {
-                throw new IllegalStateException("A dead GBean can not be started: objectName=" + objectName);
+                throw new IllegalStateException("A dead GBean can not be started: abstractName=" + abstractName);
             }
             if (!enabled) {
-                throw new IllegalStateException("A disabled GBean can not be started: objectName=" + objectName);
+                throw new IllegalStateException("A disabled GBean can not be started: abstractName=" + abstractName);
             }
         }
         gbeanInstanceState.start();
@@ -528,10 +532,10 @@
     public final void startRecursive() {
         synchronized (this) {
             if (dead) {
-                throw new IllegalStateException("A dead GBean can not be started: objectName=" + objectName);
+                throw new IllegalStateException("A dead GBean can not be started: abstractName=" + abstractName);
             }
             if (!enabled) {
-                throw new IllegalStateException("A disabled GBean can not be started: objectName=" + objectName);
+                throw new IllegalStateException("A disabled GBean can not be started: abstractName=" + abstractName);
             }
         }
         gbeanInstanceState.startRecursive();
@@ -559,7 +563,7 @@
      * @return the gbean data
      */
     public GBeanData getGBeanData() {
-        GBeanData gbeanData = new GBeanData(objectName, gbeanInfo);
+        GBeanData gbeanData = new GBeanData(abstractName, gbeanInfo);
 
         // copy target into local variables from within a synchronized block to gaurentee a consistent read
         int state;
@@ -597,6 +601,7 @@
             Set patterns = reference.getPatterns();
             gbeanData.setReferencePatterns(name, patterns);
         }
+        //TODO copy the dependencies??
         return gbeanData;
     }
 
@@ -748,7 +753,7 @@
                                                                                               ManageableAttributeStore.class);
         }
         String configName = null;
-        Set set = kernel.getDependencyManager().getParents(objectName);
+        Set set = kernel.getDependencyManager().getParents(abstractName);
         for (Iterator iterator = set.iterator(); iterator.hasNext();) {
             ObjectName name = (ObjectName) iterator.next();
             if(Configuration.isConfigurationObjectName(name)) {
@@ -757,16 +762,16 @@
             }
         }
         if(configName != null) {
-            manageableStore.setValue(configName, objectName, attribute.getAttributeInfo(), value);
+            manageableStore.setValue(configName, abstractName.getObjectName(), attribute.getAttributeInfo(), value);
         } else {
-            log.error("Unable to identify Configuration for GBean "+objectName+".  Manageable attribute "+attribute.getName()+" was not updated in persistent store.");
+            log.error("Unable to identify Configuration for GBean "+abstractName.getObjectName()+".  Manageable attribute "+attribute.getName()+" was not updated in persistent store.");
         }
     }
 
     private GBeanAttribute getAttributeByName(String name) throws NoSuchAttributeException {
         Integer index = (Integer) attributeIndex.get(name);
         if (index == null) {
-            throw new NoSuchAttributeException("Unknown attribute " + name + " in gbean " + objectName);
+            throw new NoSuchAttributeException("Unknown attribute " + name + " in gbean " + abstractName.getObjectName());
         }
         GBeanAttribute attribute = attributes[index.intValue()];
         return attribute;
@@ -795,7 +800,7 @@
         }
 
         if (state == DESTROYED && !operation.isFramework()) {
-            throw new IllegalStateException("Operations can only be invoke while the GBean instance is running: " + objectName);
+            throw new IllegalStateException("Operations can only be invoke while the GBean instance is running: " + abstractName.getObjectName());
         }
         return operation.invoke(instance, arguments);
     }
@@ -830,7 +835,7 @@
         }
 
         if (state == DESTROYED && !operation.isFramework()) {
-            throw new IllegalStateException("Operations can only be invoke while the GBean is running: " + objectName);
+            throw new IllegalStateException("Operations can only be invoke while the GBean is running: " + abstractName);
         }
         return operation.invoke(instance, arguments);
     }
@@ -908,7 +913,7 @@
                 }
                 throw e;
             } catch (IllegalArgumentException e) {
-                log.warn("Constructor mismatch for " + objectName, e);
+                log.warn("Constructor mismatch for " + abstractName.getObjectName(), e);
                 throw e;
             }
 
@@ -954,7 +959,7 @@
                 try {
                     ((GBeanLifecycle) instance).doFail();
                 } catch (Throwable ignored) {
-                    log.error("Problem in doFail of " + objectName, ignored);
+                    log.error("Problem in doFail of " + abstractName.getObjectName(), ignored);
                 }
             }
 
@@ -1078,13 +1083,13 @@
                     try {
                         ((GBeanLifecycle) instance).doStop();
                     } catch (Throwable ignored) {
-                        log.error("Problem in doStop of " + objectName, ignored);
+                        log.error("Problem in doStop of " + abstractName.getObjectName(), ignored);
                     }
                 } else {
                     try {
                         ((GBeanLifecycle) instance).doFail();
                     } catch (Throwable ignored) {
-                        log.error("Problem in doFail of " + objectName, ignored);
+                        log.error("Problem in doFail of " + abstractName.getObjectName(), ignored);
                     }
                 }
             }
@@ -1174,14 +1179,14 @@
     public boolean equals(Object obj) {
         if (obj == this) return true;
         if (obj instanceof GBeanInstance == false) return false;
-        return objectName.equals(((GBeanInstance)obj).objectName);
+        return abstractName.equals(((GBeanInstance)obj).abstractName);
     }
 
     public int hashCode() {
-        return objectName.hashCode();
+        return abstractName.hashCode();
     }
 
     public String toString() {
-        return objectName.toString();
+        return abstractName.toString();
     }
 }