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/08 23:28:38 UTC

svn commit: r384351 - in /geronimo/branches/1.1/modules: jetty-builder/src/java/org/apache/geronimo/jetty/deployment/ kernel/src/java/org/apache/geronimo/gbean/ kernel/src/java/org/apache/geronimo/gbean/runtime/ kernel/src/java/org/apache/geronimo/kern...

Author: djencks
Date: Wed Mar  8 14:28:35 2006
New Revision: 384351

URL: http://svn.apache.org/viewcvs?rev=384351&view=rev
Log:
resolve gbean dependencies and single valued references.  builds through j2ee-management.

Modified:
    geronimo/branches/1.1/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
    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
    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/GBeanInstance.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/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/config/EditableConfigurationManager.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/EditableConfigurationManagerImpl.java
    geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanDependencyTest.java
    geronimo/branches/1.1/modules/service-builder/src/java/org/apache/geronimo/deployment/service/GBeanBuilder.java
    geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/GBeanOverride.java
    geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java
    geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/ServerOverride.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/ServerOverrideTest.java
    geronimo/branches/1.1/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
    geronimo/branches/1.1/modules/web-builder/src/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java

Modified: geronimo/branches/1.1/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java (original)
+++ geronimo/branches/1.1/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java Wed Mar  8 14:28:35 2006
@@ -382,7 +382,7 @@
             //This is overkill, but allows for people not using java:comp context (even though we don't support it)
             //and sidesteps the problem of circular references between ejbs.
             Set dependencies = findGBeanDependencies(earContext);
-            webModuleData.getDependencies().addAll(dependencies);
+            webModuleData.addDependencies(dependencies);
 
             webModuleData.setAttribute("componentContext", compContext);
             webModuleData.setAttribute("userTransaction", userTransaction);

Modified: 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=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractName.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractName.java Wed Mar  8 14:28:35 2006
@@ -38,13 +38,15 @@
     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;
+        this(artifact, name, Collections.singleton(interfaceType), objectName);
+        assert interfaceType != null;
     }
 
     public AbstractName(Artifact artifact, Map name, Set interfaceTypes, ObjectName objectName) {
+        assert artifact != null;
+        assert name != null;
+        assert interfaceTypes != null;
+        assert objectName != null;
         this.artifact = artifact;
         this.name = name;
         this.interfaceTypes = interfaceTypes;

Modified: 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=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractNameQuery.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/gbean/AbstractNameQuery.java Wed Mar  8 14:28:35 2006
@@ -31,42 +31,36 @@
  */
 public class AbstractNameQuery implements Serializable {
 
-    private final List artifacts;
+    private final Artifact artifact;
     private final Map name;
     private final Set interfaceTypes;
 
     public AbstractNameQuery(AbstractName abstractName) {
-        this.artifacts = Collections.singletonList(abstractName.getArtifact());
+        this.artifact = abstractName.getArtifact();
         this.name = abstractName.getName();
         this.interfaceTypes = abstractName.getInterfaceTypes();
     }
 
     public AbstractNameQuery(Artifact artifact, Map name, String interfaceType) {
-        this.artifacts = Collections.singletonList(artifact);
+        this.artifact = artifact;
         this.name = name;
         this.interfaceTypes = Collections.singleton(interfaceType);
     }
 
     public AbstractNameQuery(String interfaceType) {
-        this.artifacts = Collections.EMPTY_LIST;
+        this.artifact = null;
         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.artifact = artifact;
         this.name = name;
         this.interfaceTypes = interfaceTypes;
     }
 
-    public List getArtifacts() {
-        return artifacts;
+    public Artifact getArtifact() {
+        return artifact;
     }
 
     public Map getName() {
@@ -78,13 +72,8 @@
     }
 
     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 = ",";
-        }
+        StringBuffer buf = new StringBuffer("artifact=");
+        buf.append(artifact);
         for (Iterator iterator = interfaceTypes.iterator(); iterator.hasNext();) {
             String interfaceType = (String) iterator.next();
             buf.append(",interface=").append(interfaceType);
@@ -102,7 +91,7 @@
 
         final AbstractNameQuery that = (AbstractNameQuery) o;
 
-        if (artifacts != null ? !artifacts.equals(that.artifacts) : that.artifacts != null) return false;
+        if (artifact != null ? !artifact.equals(that.artifact) : that.artifact != 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);
@@ -111,41 +100,12 @@
 
     public int hashCode() {
         int result;
-        result = (artifacts != null ? artifacts.hashCode() : 0);
+        result = (artifact != null ? artifact.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())) {
@@ -154,16 +114,10 @@
         if (!info.getInterfaceTypes().containsAll(interfaceTypes)) {
             return false;
         }
-        if (getArtifacts().isEmpty()) {
+        if (artifact == null) {
             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;
+        return artifact.matches(otherArtifact);
     }
 }

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=384351&r1=384350&r2=384351&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 Wed Mar  8 14:28:35 2006
@@ -128,7 +128,28 @@
     }
 
     public Set getDependencies() {
-        return dependencies;
+        return new HashSet(dependencies);
+    }
+
+    public void setDependencies(Set dependencies) {
+        this.dependencies.clear();
+        this.dependencies.addAll(dependencies);
+    }
+
+    public void addDependencies(Set dependencies) {
+        this.dependencies.addAll(dependencies);
+    }
+
+    public void addDependency(ReferencePatterns dependency) {
+        this.dependencies.add(dependency);
+    }
+
+    public void addDependency(AbstractNameQuery refInfo) {
+        this.dependencies.add(new ReferencePatterns(Collections.singleton(refInfo)));
+    }
+
+    public void addDependency(AbstractName dependency) {
+        this.dependencies.add(new ReferencePatterns(dependency));
     }
 
     public void writeExternal(ObjectOutput out) throws IOException {
@@ -213,5 +234,6 @@
             throw new ClassNotFoundException("Unable to find class used in GBeanData " + abstractName, e);
         }
     }
+
 }
 

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=384351&r1=384350&r2=384351&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 Wed Mar  8 14:28:35 2006
@@ -262,7 +262,7 @@
 
         //dependencies
         for (Iterator iterator = gbeanData.getDependencies().iterator(); iterator.hasNext();) {
-            AbstractName dependencyName = (AbstractName) iterator.next();
+            AbstractName dependencyName = ((ReferencePatterns) iterator.next()).getAbstractName();
             dependencySet.add(new GBeanDependency(this, dependencyName, kernel));
         }
 
@@ -771,7 +771,7 @@
             }
         }
         if (configName != null) {
-            manageableStore.setValue(configName, abstractName.getObjectName(), attribute.getAttributeInfo(), value);
+            manageableStore.setValue(configName, abstractName, attribute.getAttributeInfo(), value);
         } else {
             log.error("Unable to identify Configuration for GBean " + abstractName.getObjectName() + ".  Manageable attribute " + attribute.getName() + " was not updated in persistent store.");
         }

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicDependencyManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicDependencyManager.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicDependencyManager.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicDependencyManager.java Wed Mar  8 14:28:35 2006
@@ -69,7 +69,7 @@
     public BasicDependencyManager(LifecycleMonitor lifecycleMonitor) throws Exception {
         assert lifecycleMonitor != null;
         this.lifecycleMonitor = lifecycleMonitor;
-        lifecycleMonitor.addLifecycleListener(lifecycleListener, new AbstractNameQuery(Collections.EMPTY_LIST, Collections.EMPTY_MAP, Collections.EMPTY_SET));
+        lifecycleMonitor.addLifecycleListener(lifecycleListener, new AbstractNameQuery(null, Collections.EMPTY_MAP, Collections.EMPTY_SET));
     }
 
     public synchronized void close() {

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java Wed Mar  8 14:28:35 2006
@@ -25,6 +25,7 @@
 import org.apache.geronimo.gbean.GBeanLifecycle;
 import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.ReferencePatterns;
 import org.apache.geronimo.kernel.DependencyManager;
 import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
 import org.apache.geronimo.kernel.GBeanNotFoundException;
@@ -441,6 +442,7 @@
         return Collections.unmodifiableMap(gbeans);
     }
 
+    //TODO this is pretty much broken, it assumes everything is pre-resolved
     public synchronized void addGBean(GBeanData beanData, boolean start) throws InvalidConfigException, GBeanAlreadyExistsException {
         ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
         try {
@@ -449,7 +451,7 @@
             log.trace("Registering GBean " + beanData.getName());
 
             // add a dependency on this configuration
-            beanData.getDependencies().add(abstractName);
+            beanData.addDependency(abstractName);
 
             // register the bean with the kernel
             kernel.loadGBean(beanData, configurationClassLoader);

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java Wed Mar  8 14:28:35 2006
@@ -27,6 +27,8 @@
 import org.apache.geronimo.gbean.GBeanLifecycle;
 import org.apache.geronimo.gbean.AbstractNameQuery;
 import org.apache.geronimo.gbean.InvalidConfigurationException;
+import org.apache.geronimo.gbean.GReferenceInfo;
+import org.apache.geronimo.gbean.ReferencePatterns;
 import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
 import org.apache.geronimo.kernel.GBeanNotFoundException;
 import org.apache.geronimo.kernel.InternalKernelException;
@@ -56,6 +58,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.HashSet;
 
 /**
  * The standard non-editable ConfigurationManager implementation.  That is,
@@ -336,13 +339,13 @@
         for (Iterator iterator = imports.iterator(); iterator.hasNext();) {
             Artifact artifact = (Artifact) iterator.next();
             AbstractName importName = Configuration.getConfigurationAbstractName(artifact);
-            gbeanData.getDependencies().add(importName);
+            gbeanData.addDependency(importName);
             importNames.add(new AbstractNameQuery(importName));
         }
         for (Iterator iterator = references.iterator(); iterator.hasNext();) {
             Artifact artifact = (Artifact) iterator.next();
             AbstractName referenceName = Configuration.getConfigurationAbstractName(artifact);
-            gbeanData.getDependencies().add(referenceName);
+            gbeanData.addDependency(referenceName);
         }
 
         // imports become the parents
@@ -383,6 +386,9 @@
             gbeans = attributeStore.applyOverrides(getConfigurationId(configuration), gbeans, configuration.getConfigurationClassLoader());
         }
 
+        List ancestors = new ArrayList();
+        resolveAncestors(configuration, ancestors);
+
         // register all the GBeans
         AbstractName configurationName = Configuration.getConfigurationAbstractName(configuration.getId());
         ConfigurationStore configurationStore = configuration.getConfigurationStore();
@@ -392,6 +398,28 @@
             // copy the gbeanData object as not to mutate the original
             gbeanData = new GBeanData(gbeanData);
 
+            for (Iterator references = gbeanData.getReferencesNames().iterator(); references.hasNext();) {
+                String referenceName = (String) references.next();
+                GReferenceInfo referenceInfo = gbeanData.getGBeanInfo().getReference(referenceName);
+                if (referenceInfo == null) {
+                    throw new InvalidConfigException("No reference named " + referenceName + " in gbean " + gbeanData.getAbstractName());
+                }
+                boolean isSingleValued = !referenceInfo.getProxyType().equals(Collection.class.getName());
+                if (isSingleValued) {
+                    ReferencePatterns referencePatterns = gbeanData.getReferencePatterns(referenceName);
+                    ReferencePatterns resolvedPatterns = resolveReferencePatterns(referencePatterns, ancestors);
+                    gbeanData.setReferencePatterns(referenceName, resolvedPatterns);
+                }
+            }
+
+            Set newDependencies = new HashSet();
+            for (Iterator dependencies = gbeanData.getDependencies().iterator(); dependencies.hasNext();) {
+                ReferencePatterns referencePatterns = (ReferencePatterns) dependencies.next();
+                ReferencePatterns resolvedPatterns = resolveReferencePatterns(referencePatterns, ancestors);
+                newDependencies.add(resolvedPatterns);
+            }
+            gbeanData.setDependencies(newDependencies);
+
             // If the GBean has a configurationBaseUrl attribute, set it
             // todo remove this when web app cl are config. cl.
             GAttributeInfo attribute = gbeanData.getGBeanInfo().getAttribute("configurationBaseUrl");
@@ -401,7 +429,7 @@
             }
 
             // add a dependency from the gbean to the configuration
-            gbeanData.getDependencies().add(configurationName);
+            gbeanData.addDependency(configurationName);
 
             log.trace("Registering GBean " + gbeanData.getName());
 
@@ -410,6 +438,61 @@
             } catch (GBeanAlreadyExistsException e) {
                 throw new InvalidConfigException(e);
             }
+        }
+    }
+
+    private ReferencePatterns resolveReferencePatterns(ReferencePatterns referencePatterns, List ancestors) throws InvalidConfigException {
+        ReferencePatterns result = null;
+        boolean first = true;
+        for (Iterator iterator = ancestors.iterator(); iterator.hasNext();) {
+            Configuration configuration = (Configuration) iterator.next();
+            ReferencePatterns match = resolve(referencePatterns, configuration);
+            if (first && match != null) {
+                return match;
+            }
+            first = false;
+            if (result != null) {
+                throw new InvalidConfigException("More than one match for referencePatterns " + referencePatterns);
+            }
+            result = match;
+        }
+        if (result == null) {
+            throw new InvalidConfigException("No matches for referencePatterns: " + referencePatterns);
+        }
+        return result;
+    }
+
+    private ReferencePatterns resolve(ReferencePatterns referencePatterns, Configuration configuration) throws InvalidConfigException {
+        if (referencePatterns.getAbstractName() != null) {
+            //this should not occur, but it means no further resolution is needed
+            return referencePatterns;
+        }
+        ReferencePatterns result = null;
+        Set gbeanNames = configuration.getGBeans().keySet();
+        for (Iterator abstractNameQueries = referencePatterns.getPatterns().iterator(); abstractNameQueries.hasNext();) {
+            AbstractNameQuery abstractNameQuery =  (AbstractNameQuery) abstractNameQueries.next();
+            Artifact queryArtifact = abstractNameQuery.getArtifact();
+            //skip this configuration if we know it can't match.
+            if (queryArtifact == null || queryArtifact.matches(configuration.getId())) {
+                for (Iterator iterator = gbeanNames.iterator(); iterator.hasNext();) {
+                    AbstractName abstractName = (AbstractName) iterator.next();
+                    if (abstractNameQuery.matches(abstractName)) {
+                        if (result != null ) {
+                            throw new InvalidConfigException("More than one match to referencePatterns " + referencePatterns + " in configuration " + configuration.getId());
+                        }
+                        result = new ReferencePatterns(abstractName);
+                    }
+                }
+            }
+        }
+        return result;
+    }
+
+    private void resolveAncestors(Configuration configuration, List ancestors) {
+        ancestors.add(configuration);
+        for (Iterator parents = configuration.getParents().iterator(); parents.hasNext();) {
+            Configuration parent = (Configuration) parents.next();
+            resolveAncestors(parent, ancestors);
         }
     }
 

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationUtil.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationUtil.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationUtil.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationUtil.java Wed Mar  8 14:28:35 2006
@@ -77,7 +77,7 @@
         // register all the GBeans
         for (Iterator i = gbeans.values().iterator(); i.hasNext();) {
             GBeanData gbeanData = (GBeanData) i.next();
-            gbeanData.getDependencies().add(configurationName);
+            gbeanData.addDependency(configurationName);
 
             // load the gbean into the kernel
             kernel.loadGBean(gbeanData, configurationClassLoader);

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/EditableConfigurationManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/EditableConfigurationManager.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/EditableConfigurationManager.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/EditableConfigurationManager.java Wed Mar  8 14:28:35 2006
@@ -16,8 +16,7 @@
  */
 package org.apache.geronimo.kernel.config;
 
-import java.net.URI;
-import javax.management.ObjectName;
+import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.gbean.GBeanData;
 import org.apache.geronimo.kernel.GBeanNotFoundException;
 import org.apache.geronimo.kernel.repository.Artifact;
@@ -44,5 +43,5 @@
      * @param configID  The configuration to remove the GBean from.
      * @param gbean     The ObjectName of the GBean to remove.
      */
-    void removeGBeanFromConfiguration(Artifact configID, ObjectName gbean) throws InvalidConfigException, GBeanNotFoundException;
+    void removeGBeanFromConfiguration(Artifact configID, AbstractName gbean) throws InvalidConfigException, GBeanNotFoundException;
 }

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/EditableConfigurationManagerImpl.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/EditableConfigurationManagerImpl.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/EditableConfigurationManagerImpl.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/EditableConfigurationManagerImpl.java Wed Mar  8 14:28:35 2006
@@ -27,6 +27,7 @@
 import org.apache.geronimo.gbean.GBeanData;
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.AbstractName;
 
 /**
  * Standard implementation of an editable ConfigurationManager.
@@ -35,12 +36,12 @@
  */
 public class EditableConfigurationManagerImpl extends ConfigurationManagerImpl implements EditableConfigurationManager {
     public EditableConfigurationManagerImpl(Kernel kernel,
-            Collection stores,
-            ManageableAttributeStore attributeStore,
-            PersistentConfigurationList configurationList,
-            ArtifactManager artifactManager,
-            ArtifactResolver artifactResolver,
-            ClassLoader classLoader) {
+                                            Collection stores,
+                                            ManageableAttributeStore attributeStore,
+                                            PersistentConfigurationList configurationList,
+                                            ArtifactManager artifactManager,
+                                            ArtifactResolver artifactResolver,
+                                            ClassLoader classLoader) {
         super(kernel, stores, attributeStore, configurationList, artifactManager, artifactResolver, classLoader);
     }
 
@@ -55,7 +56,7 @@
         attributeStore.addGBean(configID.toString(), gbean);
     }
 
-    public void removeGBeanFromConfiguration(Artifact configID, ObjectName gbean) throws GBeanNotFoundException, InvalidConfigException {
+    public void removeGBeanFromConfiguration(Artifact configID, AbstractName gbean) throws GBeanNotFoundException, InvalidConfigException {
         // Make sure the specified configuration has the specified GBean
         try {
             ObjectName name = Configuration.getConfigurationObjectName(configID);

Modified: geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanDependencyTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanDependencyTest.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanDependencyTest.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanDependencyTest.java Wed Mar  8 14:28:35 2006
@@ -43,7 +43,7 @@
         AbstractName parentName = buildAbstractName("parent", MockGBean.getGBeanInfo());
         GBeanData gbeanDataParent = new GBeanData(parentName, MockGBean.getGBeanInfo());
         GBeanData gbeanDataChild = new GBeanData(buildAbstractName("child", MockGBean.getGBeanInfo()), MockGBean.getGBeanInfo());
-        gbeanDataChild.getDependencies().add(parentName);
+        gbeanDataChild.addDependency(new ReferencePatterns(parentName));
         kernel.loadGBean(gbeanDataChild, MockGBean.class.getClassLoader());
         kernel.startGBean(gbeanDataChild.getName());
         assertEquals(State.STARTING_INDEX, kernel.getGBeanState(gbeanDataChild.getName()));

Modified: geronimo/branches/1.1/modules/service-builder/src/java/org/apache/geronimo/deployment/service/GBeanBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/service-builder/src/java/org/apache/geronimo/deployment/service/GBeanBuilder.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/service-builder/src/java/org/apache/geronimo/deployment/service/GBeanBuilder.java (original)
+++ geronimo/branches/1.1/modules/service-builder/src/java/org/apache/geronimo/deployment/service/GBeanBuilder.java Wed Mar  8 14:28:35 2006
@@ -38,7 +38,6 @@
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
-import java.util.List;
 import java.util.Collections;
 
 /**
@@ -126,17 +125,17 @@
     public void setReference(String name, PatternType[] patterns, J2eeContext j2eeContext) throws DeploymentException {
         Set patternNames = new HashSet(patterns.length);
         for (int i = 0; i < patterns.length; i++) {
-            patternNames.add(buildUnresolvedReferenceInfo(name, patterns[i]));
+            patternNames.add(buildAbstractNameQuery(name, patterns[i]));
         }
         gbean.setReferencePatterns(name, patternNames);
     }
 
     public void addDependency(PatternType patternType, J2eeContext j2eeContext) throws DeploymentException {
-        AbstractNameQuery refInfo = buildUnresolvedReferenceInfo(null, patternType);
-        gbean.getDependencies().add(refInfo);
+        AbstractNameQuery refInfo = buildAbstractNameQuery(null, patternType);
+        gbean.addDependency(refInfo);
     }
 
-    private AbstractNameQuery buildUnresolvedReferenceInfo(String refName, PatternType pattern) throws DeploymentException {
+    private AbstractNameQuery buildAbstractNameQuery(String refName, PatternType pattern) throws DeploymentException {
 //        if (refName == null) {
 //            throw new DeploymentException("No type specified in dependency pattern " + pattern + " for gbean " + gbean.getName());
 //        }
@@ -161,10 +160,7 @@
         String type = pattern.isSetType() ? pattern.getType().trim() : null;
         String name = pattern.getName().trim();
 
-        List artifacts = Collections.EMPTY_LIST;
-        if (artifactid != null) {
-            artifacts = Collections.singletonList(new Artifact(groupId, artifactid, version, "car"));
-        }
+        Artifact artifact = artifactid != null? new Artifact(groupId, artifactid, version, "car"): null;
         //get the type from the gbean info if not supplied explicitly
         if (type == null) {
             type = referenceInfo.getNameTypeName();
@@ -178,7 +174,7 @@
             nameMap.put("module", module);
         }
         String interfaceType = referenceInfo.getProxyType();
-        return new AbstractNameQuery(artifacts, nameMap, Collections.singleton(interfaceType));
+        return new AbstractNameQuery(artifact, nameMap, Collections.singleton(interfaceType));
     }
 
     public GBeanData getGBeanData() {

Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/GBeanOverride.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/GBeanOverride.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/GBeanOverride.java (original)
+++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/GBeanOverride.java Wed Mar  8 14:28:35 2006
@@ -264,9 +264,8 @@
             for (Iterator patternIterator = patterns.getPatterns().iterator(); patternIterator.hasNext();) {
                 AbstractNameQuery pattern = (AbstractNameQuery) patternIterator.next();
                 out.println("          <pattern>");
-                List artifacts = pattern.getArtifacts();
-                if (artifacts != null && !artifacts.isEmpty()) {
-                    Artifact artifact = (Artifact) artifacts.get(0);
+                Artifact artifact = pattern.getArtifact();
+                if (artifact != null) {
                     if (artifact.getGroupId() != null) {
                         out.println("              <groupId>" + artifact.getGroupId() + "</groupId>");
                     }

Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java (original)
+++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java Wed Mar  8 14:28:35 2006
@@ -31,6 +31,7 @@
 import org.apache.geronimo.kernel.config.ManageableAttributeStore;
 import org.apache.geronimo.kernel.config.PersistentConfigurationList;
 import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.kernel.InvalidGBeanException;
 import org.apache.geronimo.system.serverinfo.ServerInfo;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -320,6 +321,8 @@
         } catch (ParserConfigurationException e) {
             log.error("Unable to read saved manageable attributes", e);
         } catch (MalformedObjectNameException e) {
+            log.error("Unable to read saved manageable attributes", e);
+        } catch (InvalidGBeanException e) {
             log.error("Unable to read saved manageable attributes", e);
         }
     }

Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/ServerOverride.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/ServerOverride.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/ServerOverride.java (original)
+++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/ServerOverride.java Wed Mar  8 14:28:35 2006
@@ -18,6 +18,7 @@
 
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
+import org.apache.geronimo.kernel.InvalidGBeanException;
 
 import javax.management.MalformedObjectNameException;
 import java.io.PrintWriter;
@@ -34,7 +35,7 @@
     public ServerOverride() {
     }
 
-    public ServerOverride(Element element) throws MalformedObjectNameException {
+    public ServerOverride(Element element) throws MalformedObjectNameException, InvalidGBeanException {
         NodeList configs = element.getElementsByTagName("configuration");
         for (int i = 0; i < configs.getLength(); i++) {
             Element configurationElement = (Element) configs.item(i);

Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/jmx/MBeanServerKernelBridge.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/jmx/MBeanServerKernelBridge.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/jmx/MBeanServerKernelBridge.java (original)
+++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/jmx/MBeanServerKernelBridge.java Wed Mar  8 14:28:35 2006
@@ -51,7 +51,7 @@
     private final HashMap registry = new HashMap();
     private final Kernel kernel;
     private final MBeanServer mbeanServer;
-    private static final AbstractNameQuery ALL = new AbstractNameQuery(Collections.EMPTY_LIST, Collections.EMPTY_MAP, Collections.EMPTY_SET);
+    private static final AbstractNameQuery ALL = new AbstractNameQuery(null, Collections.EMPTY_MAP, Collections.EMPTY_SET);
 
     public MBeanServerKernelBridge(Kernel kernel, String mbeanServerId) throws MBeanServerNotFound {
         this.kernel = kernel;

Modified: geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/configuration/ServerOverrideTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/configuration/ServerOverrideTest.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/configuration/ServerOverrideTest.java (original)
+++ geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/configuration/ServerOverrideTest.java Wed Mar  8 14:28:35 2006
@@ -82,7 +82,7 @@
 
     private AbstractNameQuery getAbstractNameQuery(String pizzaOvenString) throws MalformedObjectNameException {
         ObjectName pizzaOvenPattern = new ObjectName(pizzaOvenString);
-        return new AbstractNameQuery(Collections.EMPTY_LIST, pizzaOvenPattern.getKeyPropertyList(), Collections.EMPTY_SET);
+        return new AbstractNameQuery(null, pizzaOvenPattern.getKeyPropertyList(), Collections.EMPTY_SET);
     }
 
     public void testGBeanXml() throws Exception {

Modified: geronimo/branches/1.1/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java (original)
+++ geronimo/branches/1.1/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java Wed Mar  8 14:28:35 2006
@@ -311,7 +311,7 @@
             //This is overkill, but allows for people not using java:comp context (even though we don't support it)
             //and sidesteps the problem of circular references between ejbs.
             Set dependencies = findGBeanDependencies(earContext);
-            webModuleData.getDependencies().addAll(dependencies);
+            webModuleData.addDependencies(dependencies);
 
             webModuleData.setAttribute("componentContext", compContext);
             webModuleData.setAttribute("userTransaction", userTransaction);

Modified: geronimo/branches/1.1/modules/web-builder/src/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/web-builder/src/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java?rev=384351&r1=384350&r2=384351&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/web-builder/src/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java (original)
+++ geronimo/branches/1.1/modules/web-builder/src/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java Wed Mar  8 14:28:35 2006
@@ -94,6 +94,7 @@
 
     }
 
+    //TODO configid these need to be converted to ReferencePatterns
     protected Set findGBeanDependencies(EARContext earContext) {
         Set dependencies = new HashSet();
         dependencies.addAll(earContext.listGBeans(MANAGED_CONNECTION_FACTORY_PATTERN));