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/04/16 05:52:05 UTC

svn commit: r394430 - in /geronimo/branches/1.1: assemblies/j2ee-jetty-server/src/var/config/ assemblies/j2ee-tomcat-server/src/var/config/ modules/kernel/src/java/org/apache/geronimo/kernel/ modules/kernel/src/java/org/apache/geronimo/kernel/config/ m...

Author: djencks
Date: Sat Apr 15 20:52:01 2006
New Revision: 394430

URL: http://svn.apache.org/viewcvs?rev=394430&view=rev
Log:
GERONIMO-1852 modify the gbeans when the configuration is constructed, not an indefinite time later

Modified:
    geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml
    geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/ClassLoading.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/ConfigurationUtil.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java
    geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/repository/ArtifactResolverTest.java
    geronimo/branches/1.1/modules/naming-builder/src/test/org/apache/geronimo/naming/deployment/MessageDestinationTest.java

Modified: geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml?rev=394430&r1=394429&r2=394430&view=diff
==============================================================================
--- geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml (original)
+++ geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml Sat Apr 15 20:52:01 2006
@@ -78,6 +78,8 @@
             <attribute name="port">8009</attribute>
         </gbean>
     </configuration>
+    <!-- n.b. be sure the gbean deployer is explicitly loaded before j2ee-deployer so that defaultEnvironment
+    overrides work properly -->
     <configuration name="geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car"/>
     <configuration name="geronimo/j2ee-deployer/${pom.currentVersion}/car">
         <gbean name="WebBuilder">

Modified: geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml?rev=394430&r1=394429&r2=394430&view=diff
==============================================================================
--- geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml (original)
+++ geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml Sat Apr 15 20:52:01 2006
@@ -91,6 +91,8 @@
             <attribute name="port">${PlanHTTPSPortPrimary}</attribute>
         </gbean>
     </configuration>
+    <!-- n.b. be sure the gbean deployer is explicitly loaded before j2ee-deployer so that defaultEnvironment
+    overrides work properly -->
     <configuration name="geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car"/>
     <configuration name="geronimo/j2ee-deployer/${pom.currentVersion}/car">
         <gbean name="WebBuilder">

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/ClassLoading.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/ClassLoading.java?rev=394430&r1=394429&r2=394430&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/ClassLoading.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/ClassLoading.java Sat Apr 15 20:52:01 2006
@@ -26,6 +26,8 @@
 import java.util.List;
 import java.util.ArrayList;
 
+import org.apache.geronimo.kernel.config.MultiParentClassLoader;
+
 /**
  * Utility class for loading classes by a variety of name variations.
  * <p/>
@@ -206,7 +208,11 @@
         }
 
         // We're out of options, just toss an exception over the wall.
-        throw new ClassNotFoundException(className);
+        if (classLoader instanceof MultiParentClassLoader) {
+            MultiParentClassLoader cl = (MultiParentClassLoader) classLoader;
+            throw new ClassNotFoundException("Could not load class " + className + " from classloader: " + cl.getId() + ", destroyed state: " + cl.isDestroyed());
+        }
+        throw new ClassNotFoundException("Could not load class " + className + " from unknown classloader; " + classLoader);
     }
 
 

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=394430&r1=394429&r2=394430&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 Sat Apr 15 20:52:01 2006
@@ -208,7 +208,8 @@
      */
     public Configuration(Collection parents,
             ConfigurationData configurationData,
-            ConfigurationResolver configurationResolver) throws MissingDependencyException, MalformedURLException, NoSuchConfigException, InvalidConfigException {
+            ConfigurationResolver configurationResolver,
+            ManageableAttributeStore attributeStore) throws MissingDependencyException, MalformedURLException, NoSuchConfigException, InvalidConfigException {
         if (parents == null) parents = Collections.EMPTY_SET;
         if (configurationData == null) throw new NullPointerException("configurationData is null");
         if (configurationResolver == null) throw new NullPointerException("configurationResolver is null");
@@ -268,7 +269,10 @@
         //
         // Deserialize the GBeans in the configurationData
         //
-        List gbeans = configurationData.getGBeans(configurationClassLoader);
+        Collection gbeans = configurationData.getGBeans(configurationClassLoader);
+        if (attributeStore != null) {
+            gbeans = attributeStore.applyOverrides(id, gbeans, configurationClassLoader);
+        }
         for (Iterator iterator = gbeans.iterator(); iterator.hasNext();) {
             GBeanData gbeanData = (GBeanData) iterator.next();
             this.gbeans.put(gbeanData.getAbstractName(), gbeanData);
@@ -283,7 +287,7 @@
             Map.Entry entry = (Map.Entry) iterator.next();
             String moduleName = (String) entry.getKey();
             ConfigurationData childConfigurationData = (ConfigurationData) entry.getValue();
-            Configuration childConfiguration = new Configuration(childParents, childConfigurationData, configurationResolver.createChildResolver(moduleName));
+            Configuration childConfiguration = new Configuration(childParents, childConfigurationData, configurationResolver.createChildResolver(moduleName), attributeStore);
             childConfiguration.parent = this;
             children.add(childConfiguration);
         }
@@ -578,7 +582,12 @@
 
             // if we already found a match we have an ambiguous query
             if (result.size() > 1) {
-                throw new GBeanNotFoundException("More than one match to referencePatterns", patterns);
+                List names = new ArrayList(result.size());
+                for (Iterator iterator1 = result.iterator(); iterator1.hasNext();) {
+                    GBeanData gBeanData = (GBeanData) iterator1.next();
+                    names.add(gBeanData.getAbstractName());
+                }
+                throw new GBeanNotFoundException("More than one match to referencePatterns: " + names , patterns);
             }
         }
 
@@ -695,13 +704,15 @@
         infoFactory.addReference("Parents", Configuration.class);
         infoFactory.addAttribute("configurationData", ConfigurationData.class, true, false);
         infoFactory.addAttribute("configurationResolver", ConfigurationResolver.class, true);
+        infoFactory.addAttribute("managedAttributeStore", ManageableAttributeStore.class, true);
 
         infoFactory.addInterface(Configuration.class);
 
         infoFactory.setConstructor(new String[]{
                 "Parents",
                 "configurationData",
-                "configurationResolver"
+                "configurationResolver",
+                "managedAttributeStore"
         });
 
         GBEAN_INFO = infoFactory.getBeanInfo();

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=394430&r1=394429&r2=394430&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 Sat Apr 15 20:52:01 2006
@@ -152,7 +152,7 @@
         Configuration configuration = (Configuration) kernel.getGBean(gbeanData.getAbstractName());
 
         // start the gbeans
-        startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel, null);
+        startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel);
 
         ConfigurationManager configurationManager = getConfigurationManager(kernel);
         configurationManager.loadConfiguration(configId);
@@ -299,7 +299,7 @@
         gbeanData.setDependencies(newDependencies);
 
         // If the GBean has a configurationBaseUrl attribute, set it
-        // todo remove this when web app cl are config. cl.
+        // todo Even though this is not used by the classloader, web apps still need this.  WHY???
         GAttributeInfo attribute = gbeanData.getGBeanInfo().getAttribute("configurationBaseUrl");
         if (attribute != null && attribute.getType().equals("java.net.URL")) {
             try {
@@ -314,11 +314,8 @@
         gbeanData.addDependency(configurationName);
     }
 
-    static void startConfigurationGBeans(AbstractName configurationName, Configuration configuration, Kernel kernel, ManageableAttributeStore attributeStore) throws InvalidConfigException {
+    static void startConfigurationGBeans(AbstractName configurationName, Configuration configuration, Kernel kernel) throws InvalidConfigException {
         Collection gbeans = configuration.getGBeans().values();
-        if (attributeStore != null) {
-            gbeans = attributeStore.applyOverrides(configuration.getId(), gbeans, configuration.getConfigurationClassLoader());
-        }
 
         List loaded = new ArrayList(gbeans.size());
         List started = new ArrayList(gbeans.size());
@@ -384,7 +381,7 @@
 
             for (Iterator iterator = configuration.getChildren().iterator(); iterator.hasNext();) {
                 Configuration childConfiguration = (Configuration) iterator.next();
-                ConfigurationUtil.startConfigurationGBeans(configurationName, childConfiguration, kernel, attributeStore);
+                ConfigurationUtil.startConfigurationGBeans(configurationName, childConfiguration, kernel);
             }
         } catch (Throwable e) {
             for (Iterator iterator = started.iterator(); iterator.hasNext();) {
@@ -409,7 +406,7 @@
             }
             if (e instanceof Error) {
                 throw (Error) e;
-            }
+            }                         
             if (e instanceof InvalidConfigException) {
                 throw (InvalidConfigException) e;
             }

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java?rev=394430&r1=394429&r2=394430&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java Sat Apr 15 20:52:01 2006
@@ -114,6 +114,8 @@
         GBeanData gbeanData = new GBeanData(configurationName, Configuration.GBEAN_INFO);
         gbeanData.setAttribute("configurationData", configurationData);
         gbeanData.setAttribute("configurationResolver", new ConfigurationResolver(configurationData, repositories, artifactResolver));
+        //TODO is this dangerous?
+        gbeanData.setAttribute("managedAttributeStore", attributeStore);
 
         // add parents to the parents reference collection
         LinkedHashSet parentNames = new LinkedHashSet();
@@ -160,7 +162,7 @@
     }
 
     public void start(Configuration configuration) throws InvalidConfigException {
-        ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel, attributeStore);
+        ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel);
 
         if (configurationList != null) {
             configurationList.addConfiguration(configuration.getId().toString());

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java?rev=394430&r1=394429&r2=394430&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java Sat Apr 15 20:52:01 2006
@@ -27,12 +27,11 @@
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
-import javax.management.ObjectName;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.geronimo.gbean.InvalidConfigurationException;
 import org.apache.geronimo.gbean.AbstractName;
-import org.apache.geronimo.kernel.jmx.JMXUtil;
+import org.apache.geronimo.gbean.InvalidConfigurationException;
 import org.apache.geronimo.kernel.management.State;
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.repository.ArtifactResolver;
@@ -230,7 +229,7 @@
         try {
             Collection parents = findParentConfigurations(resolvedParentIds, loadedConfigurations);
 
-            Configuration configuration = new Configuration(parents, configurationData, new ConfigurationResolver(configurationData, repositories, artifactResolver));
+            Configuration configuration = new Configuration(parents, configurationData, new ConfigurationResolver(configurationData, repositories, artifactResolver), null);
             configuration.doStart();
             return configuration;
         } catch (Exception e) {

Modified: geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/repository/ArtifactResolverTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/repository/ArtifactResolverTest.java?rev=394430&r1=394429&r2=394430&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/repository/ArtifactResolverTest.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/repository/ArtifactResolverTest.java Sat Apr 15 20:52:01 2006
@@ -113,7 +113,8 @@
 
         Configuration parent = new Configuration(null,
                 parentConfigurationData,
-                configurationResolver);
+                configurationResolver,
+                null);
 
         LinkedHashSet parents = new LinkedHashSet();
         parents.add(parent);

Modified: geronimo/branches/1.1/modules/naming-builder/src/test/org/apache/geronimo/naming/deployment/MessageDestinationTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/naming-builder/src/test/org/apache/geronimo/naming/deployment/MessageDestinationTest.java?rev=394430&r1=394429&r2=394430&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/naming-builder/src/test/org/apache/geronimo/naming/deployment/MessageDestinationTest.java (original)
+++ geronimo/branches/1.1/modules/naming-builder/src/test/org/apache/geronimo/naming/deployment/MessageDestinationTest.java Sat Apr 15 20:52:01 2006
@@ -47,7 +47,7 @@
 import java.util.Map;
 
 /**
- * @version $Rev: 385372 $ $Date$
+ * @version $Rev:390932 $ $Date$
  */
 public class MessageDestinationTest extends TestCase {
     private RefContext refContext = new RefContext(new EJBReferenceBuilder() {
@@ -111,7 +111,8 @@
         Artifact id = new Artifact("test", "test", "", "car");
         configuration = new Configuration(Collections.EMPTY_LIST,
                 new ConfigurationData(id, naming),
-                new ConfigurationResolver(id, null));
+                new ConfigurationResolver(id, null),
+                null);
         baseName = naming.createRootName(configuration.getId(), "testRoot", NameFactory.RESOURCE_ADAPTER_MODULE);
     }