[jboss-cvs] JBossAS SVN: r61523 - in trunk/server/src/main/org/jboss: metadata and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Mar 21 03:58:16 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-03-21 03:58:16 -0400 (Wed, 21 Mar 2007)
New Revision: 61523

Modified:
   trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java
   trunk/server/src/main/org/jboss/metadata/BeanMetaData.java
Log:
Fix not handling an implicit container configuration override. This is one that uses a container-name matching an existing config rather the extends attribute.

Modified: trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java	2007-03-21 07:58:13 UTC (rev 61522)
+++ trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java	2007-03-21 07:58:16 UTC (rev 61523)
@@ -76,12 +76,6 @@
 
    private ApplicationMetaData appMetaData;
 
-   static class BeanHolder
-   {
-      String ejbName;
-      BeanMetaData metaData;
-   }
-
    public JBossEjbObjectFactory(ApplicationMetaData dd)
    {
       super();
@@ -149,11 +143,11 @@
                );
             }
 
-            child = extendConfig.clone();
+            child = new ConfigurationHolder(dd, (ConfigurationMetaData)extendConfig.clone());
          }
          else
          {
-            child = new ConfigurationMetaData();
+            child = new ConfigurationHolder(dd, new ConfigurationMetaData());
          }
       }
       else if(localName.equals("webservices"))
@@ -266,7 +260,7 @@
       return child;
    }
 
-   public Object newChild(ConfigurationMetaData md, UnmarshallingContext navigator,
+   public Object newChild(ConfigurationHolder md, UnmarshallingContext navigator,
          String namespaceURI, String localName, Attributes attrs)
    {
       Object child = null;
@@ -284,7 +278,7 @@
       {
          //Handle the <security-domain/> usecase
          child = md;
-         md.setSecurityDomain("");
+         md.getConfiguration().setSecurityDomain("");
       }
       return child;
    }
@@ -345,10 +339,10 @@
       parent.addInvokerProxyBinding(binding);
    }
 
-   public void addChild(ApplicationMetaData parent, ConfigurationMetaData container,
+   public void addChild(ApplicationMetaData parent, ConfigurationHolder container,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      parent.addContainerConfiguration(container);
+      parent.addContainerConfiguration(container.getConfiguration());
    }
 
    public void addChild(ApplicationMetaData parent, ResourceManagerMetaData child,
@@ -376,26 +370,26 @@
       parent.getWsdlPublishLocations().put(child.name, child.location);
    }
 
-   public void addChild(ConfigurationMetaData parent, ClusterConfigMetaData child,
+   public void addChild(ConfigurationHolder parent, ClusterConfigMetaData child,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      parent.setClusterConfig(child);
+      parent.getConfiguration().setClusterConfig(child);
    }
 
-   public void addChild(ConfigurationMetaData parent, DomElement child,
+   public void addChild(ConfigurationHolder parent, DomElement child,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       if(localName.equals("container-interceptors"))
       {
-         parent.setContainerInterceptorsConf(child.element);
+         parent.getConfiguration().setContainerInterceptorsConf(child.element);
       }
       else if(localName.equals("container-cache-conf"))
       {
-         parent.setContainerCacheConf(child.element);
+         parent.getConfiguration().setContainerCacheConf(child.element);
       }
       else if(localName.equals("container-pool-conf"))
       {
-         parent.setContainerPoolConf(child.element);
+         parent.getConfiguration().setContainerPoolConf(child.element);
       }
    }
 
@@ -818,12 +812,21 @@
       }
    }
 
-   public void setValue(ConfigurationMetaData container,
+   public void setValue(ConfigurationHolder ch,
          UnmarshallingContext navigator, String namespaceURI, String localName,
          String value)
    {
+      ConfigurationMetaData container = ch.getConfiguration();
       if (localName.equals("container-name"))
       {
+         // Here we may implicitly be extending an existing config
+         ConfigurationMetaData cmd = ch.amd.getConfigurationMetaDataByName(value);
+         if( cmd != null )
+         {
+            // Set the extended value to the implicit override
+            container = (ConfigurationMetaData) cmd.clone();
+            ch.extended = container;
+         }
          container.setName(value);
       }
       else if(localName.equals("call-logging"))
@@ -1192,4 +1195,37 @@
       String configFile;
       String location;
    }
+   
+   static class BeanHolder
+   {
+      String ejbName;
+      BeanMetaData metaData;
+   }
+   /**
+    * Because of how ConfigurationMetaData can both explicitly and implicitly
+    * extend and existing configuration, we need a holder to allow the ConfigurationMetaData
+    * instance to be replaced by an existing config when the container-name is seen
+    * as would be the case for this jboss.xml fragment:
+    <container-configurations>
+        <container-configuration>
+            <container-name>Standard Stateless SessionBean</container-name>
+            <depends>test:name=Test</depends>
+        </container-configuration>
+    </container-configurations>
+    */
+   static class ConfigurationHolder
+   {
+      ApplicationMetaData amd;
+      ConfigurationMetaData base;
+      ConfigurationMetaData extended;
+      ConfigurationHolder(ApplicationMetaData amd, ConfigurationMetaData base)
+      {
+         this.amd = amd;
+         this.base = base;
+      }
+      ConfigurationMetaData getConfiguration()
+      {
+         return extended != null ? extended : base;
+      }
+   }
 }

Modified: trunk/server/src/main/org/jboss/metadata/BeanMetaData.java
===================================================================
--- trunk/server/src/main/org/jboss/metadata/BeanMetaData.java	2007-03-21 07:58:13 UTC (rev 61522)
+++ trunk/server/src/main/org/jboss/metadata/BeanMetaData.java	2007-03-21 07:58:16 UTC (rev 61523)
@@ -310,7 +310,7 @@
       if (invokerBindings == null)
       {
          // See if there is a container default invoker name
-         String[] defaultNames = configuration.getInvokers();
+         String[] defaultNames = this.getContainerConfiguration().getInvokers();
          if (defaultNames.length > 0)
          {
             invokerBindings = new HashMap();




More information about the jboss-cvs-commits mailing list