[jboss-cvs] JBossAS SVN: r76833 - in projects/microcontainer/trunk: dependency/src/main/org/jboss/dependency/spi and 6 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Aug 8 11:11:07 EDT 2008


Author: adrian at jboss.org
Date: 2008-08-08 11:11:04 -0400 (Fri, 08 Aug 2008)
New Revision: 76833

Added:
   projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/PreconfiguredScopeTestCase.java
Modified:
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractScopeInfo.java
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ScopeInfo.java
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableScopeInfo.java
   projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ControllerTestSuite.java
   projects/microcontainer/trunk/kernel/pom.xml
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelScopeInfo.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/metadata/basic/BasicKernelMetaDataRepository.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/DeploymentTestSuite.java
Log:
[JBMICROCONT-330] - Don't override metadata contexts if they already exist and only remove contexts we create. Additionally some refactoring see the forum thread attached to the JIRA issue.

Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractScopeInfo.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractScopeInfo.java	2008-08-08 14:37:38 UTC (rev 76832)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractScopeInfo.java	2008-08-08 15:11:04 UTC (rev 76833)
@@ -21,11 +21,18 @@
 */
 package org.jboss.dependency.plugins;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArraySet;
+
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ScopeInfo;
 import org.jboss.logging.Logger;
+import org.jboss.metadata.plugins.context.AbstractMetaDataContext;
 import org.jboss.metadata.plugins.loader.memory.MemoryMetaDataLoader;
 import org.jboss.metadata.spi.MetaData;
+import org.jboss.metadata.spi.context.MetaDataContext;
+import org.jboss.metadata.spi.loader.MutableMetaDataLoader;
 import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
 import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
 import org.jboss.metadata.spi.scope.CommonLevels;
@@ -55,6 +62,9 @@
    /** The repository */
    private MutableMetaDataRepository repository;
 
+   /** The added scopes */
+   private CopyOnWriteArraySet<ScopeKey> addedScopes = new CopyOnWriteArraySet<ScopeKey>();
+   
    /**
     * Create a new AbstractScopeInfo.
     * 
@@ -109,8 +119,38 @@
    {
       this.repository = repository;
       ScopeKey scope = getMutableScope();
-      MemoryMetaDataLoader mutable = new MemoryMetaDataLoader(scope);
-      repository.addMetaDataRetrieval(mutable);
+      MetaDataRetrieval retrieval = repository.getMetaDataRetrieval(scope);
+      MutableMetaDataLoader mutable = null;
+      if (retrieval == null)
+      {
+         mutable = initMutableMetaDataRetrieval(repository, context, scope);
+         repository.addMetaDataRetrieval(mutable);
+         addedScopes.add(scope);
+      }
+      else if (retrieval instanceof MutableMetaDataLoader)
+      {
+         mutable = (MutableMetaDataLoader) retrieval;
+      }
+      else if (retrieval instanceof MetaDataContext)
+      {
+         MetaDataContext metaDataContext = (MetaDataContext) retrieval;
+         List<MetaDataRetrieval> locals = metaDataContext.getLocalRetrievals();
+         if (locals != null)
+         {
+            for (MetaDataRetrieval local : locals)
+            {
+               if (local instanceof MutableMetaDataLoader)
+                  mutable = (MutableMetaDataLoader) local;
+            }
+         }
+      }
+      
+      if (mutable == null)
+      {
+         log.warn("MetaData context is not mutable: " + retrieval + " for " + context.toShortString());
+         return;
+      }
+      
       addMetaData(repository, context, mutable);
    }
 
@@ -121,43 +161,66 @@
     * @param context the context
     * @param mutable the mutable
     */
-   protected void addMetaData(MutableMetaDataRepository repository, ControllerContext context, MemoryMetaDataLoader mutable)
+   protected void addMetaData(MutableMetaDataRepository repository, ControllerContext context, MutableMetaDataLoader mutable)
    {
       // nothing
    }
 
    public void removeMetaData(MutableMetaDataRepository repository, ControllerContext context)
    {
-      // Remove the read only/full scope
-      try
+      for (ScopeKey scope : addedScopes)
       {
-         ScopeKey scope = getScope();
-         repository.removeMetaDataRetrieval(scope);
+         try
+         {
+            repository.removeMetaDataRetrieval(scope);
+         }
+         catch (Exception e)
+         {
+            log.trace("Ignored", e);
+         }
       }
-      catch (Exception e)
-      {
-         log.trace("Ignored", e);
-      }
-      try
-      {
-         // Remove the mutable scope
-         ScopeKey scope = getMutableScope();
-         repository.removeMetaDataRetrieval(scope);
-      }
-      catch (Exception e)
-      {
-         log.trace("Ignored", e);
-      }
+      addedScopes.clear();
       this.repository = null;
       
    }
 
+   public MutableMetaDataLoader initMutableMetaDataRetrieval(MutableMetaDataRepository repository, ControllerContext context, ScopeKey scopeKey)
+   {
+      return new MemoryMetaDataLoader(scopeKey);
+   }
+
    public MetaDataRetrieval initMetaDataRetrieval(MutableMetaDataRepository repository, ControllerContext context, Scope scope)
    {
       // Nothing
       return null;
    }
 
+   public MetaDataRetrieval initMetaDataRetrieval(MutableMetaDataRepository repository, ControllerContext context)
+   {
+      ScopeKey scopeKey = getScope();
+      List<MetaDataRetrieval> retrievals = new ArrayList<MetaDataRetrieval>();
+      for (Scope scope : scopeKey.getScopes())
+      {
+         ScopeKey thisScope = new ScopeKey(scope);
+         MetaDataRetrieval retrieval = repository.getMetaDataRetrieval(thisScope);
+         if (retrieval == null)
+         {
+            retrieval = initMetaDataRetrieval(repository, context, scope);
+            if (retrieval == null)
+            {
+               retrieval = initMutableMetaDataRetrieval(repository, context, thisScope);
+               repository.addMetaDataRetrieval(retrieval);
+               addedScopes.add(thisScope);
+            }
+         }
+         retrievals.add(0, retrieval);
+      }
+      MetaDataContext metaDataContext = createMetaDataContext(retrievals);
+      repository.addMetaDataRetrieval(metaDataContext);
+      addedScopes.add(metaDataContext.getScope());
+      return metaDataContext;
+   }
+   
    public ScopeKey getScope()
    {
       return scopeKey;
@@ -191,4 +254,15 @@
    {
       this.installScope = key;
    }
+
+   /**
+    * Create metadata context.
+    *
+    * @param retrievals the retrievals
+    * @return new metadata context instance
+    */
+   protected MetaDataContext createMetaDataContext(List<MetaDataRetrieval> retrievals)
+   {
+      return new AbstractMetaDataContext(null, retrievals);
+   }
 }

Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ScopeInfo.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ScopeInfo.java	2008-08-08 14:37:38 UTC (rev 76832)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ScopeInfo.java	2008-08-08 15:11:04 UTC (rev 76833)
@@ -69,6 +69,15 @@
    MetaDataRetrieval initMetaDataRetrieval(MutableMetaDataRepository repository, ControllerContext context, Scope scope);
 
    /**
+    * Initialise the main metadata retrieval
+    * 
+    * @param repository the repository
+    * @param context the context
+    * @return the retrieval
+    */
+   MetaDataRetrieval initMetaDataRetrieval(MutableMetaDataRepository repository, ControllerContext context);
+
+   /**
     * Get the scope
     * 
     * @return the scope

Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableScopeInfo.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableScopeInfo.java	2008-08-08 14:37:38 UTC (rev 76832)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableScopeInfo.java	2008-08-08 15:11:04 UTC (rev 76833)
@@ -67,6 +67,11 @@
       throw new UnsupportedOperationException("Cannot modify immutable");
    }
 
+   public MetaDataRetrieval initMetaDataRetrieval(MutableMetaDataRepository repository, ControllerContext context)
+   {
+      throw new UnsupportedOperationException("Cannot modify immutable");
+   }
+
    public MetaData getMetaData()
    {
       return delegate.getMetaData();

Modified: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ControllerTestSuite.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ControllerTestSuite.java	2008-08-08 14:37:38 UTC (rev 76832)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ControllerTestSuite.java	2008-08-08 15:11:04 UTC (rev 76833)
@@ -57,6 +57,7 @@
       suite.addTest(AliasUnitTestCase.suite());
       suite.addTest(ShutdownControllerTestCase.suite());
       suite.addTest(BadDependencyInfoTestCase.suite());
+      suite.addTest(PreconfiguredScopeTestCase.suite());
 
       return suite;
    }

Added: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/PreconfiguredScopeTestCase.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/PreconfiguredScopeTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/PreconfiguredScopeTestCase.java	2008-08-08 15:11:04 UTC (rev 76833)
@@ -0,0 +1,174 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.dependency.controller.test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Test;
+
+import org.jboss.dependency.plugins.AbstractControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ScopeInfo;
+import org.jboss.metadata.plugins.context.AbstractMetaDataContext;
+import org.jboss.metadata.plugins.loader.memory.MemoryMetaDataLoader;
+import org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository;
+import org.jboss.metadata.spi.MetaData;
+import org.jboss.metadata.spi.context.MetaDataContext;
+import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
+import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
+import org.jboss.metadata.spi.scope.Scope;
+import org.jboss.metadata.spi.scope.ScopeKey;
+
+/**
+ * PreconfiguredScopeTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class PreconfiguredScopeTestCase extends AbstractDependencyTest
+{
+   public static Test suite()
+   {
+      return suite(PreconfiguredScopeTestCase.class);
+   }
+   
+   protected MutableMetaDataRepository repository = new BasicMetaDataRepository();
+   
+   public PreconfiguredScopeTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public void testPreconfiguredScope() throws Throwable
+   {
+      TestControllerContext test = new TestControllerContext("test");
+      
+      ScopeInfo scopeInfo = test.getScopeInfo();
+
+      // Preconfigure the mutable scope
+      ScopeKey mutable = scopeInfo.getMutableScope();
+      MemoryMetaDataLoader loader = new MemoryMetaDataLoader(mutable);
+      loader.addMetaData("Preconfigured", "testPreconfigured", String.class);
+      repository.addMetaDataRetrieval(loader);
+      
+      // Setup the full scope
+      ScopeKey scopeKey = scopeInfo.getScope();
+      List<MetaDataRetrieval> retrievals = new ArrayList<MetaDataRetrieval>();
+      for (Scope scope : scopeKey.getScopes())
+      {
+         ScopeKey thisScope = new ScopeKey(scope);
+         MetaDataRetrieval retrieval = repository.getMetaDataRetrieval(thisScope);
+         if (retrieval == null)
+            retrieval = new MemoryMetaDataLoader(thisScope);
+         retrievals.add(0, retrieval);
+      }
+      MetaDataContext metaDataContext = new AbstractMetaDataContext(null, retrievals);
+      repository.addMetaDataRetrieval(metaDataContext);
+      
+      try
+      {
+         controller.install(test);
+         
+         MetaData metaData = scopeInfo.getMetaData();
+         assertNotNull(metaData);
+         
+         assertEquals("testPreconfigured", metaData.getMetaData("Preconfigured"));
+         assertEquals("testFromInstall", metaData.getMetaData("FromInstall"));
+      }
+      finally
+      {
+         controller.uninstall(test.getName());
+      }
+      
+      assertNotNull(repository.getMetaDataRetrieval(mutable));
+      assertNotNull(repository.getMetaDataRetrieval(scopeKey));
+      
+      MetaData metaData = repository.getMetaData(scopeKey);
+      assertNotNull(metaData);
+      assertEquals("testPreconfigured", metaData.getMetaData("Preconfigured"));
+      assertNull(metaData.getMetaData("FromInstall"));
+   }
+   
+   public void testNotPreconfiguredScope() throws Throwable
+   {
+      TestControllerContext test = new TestControllerContext("test");
+      
+      ScopeInfo scopeInfo = test.getScopeInfo();
+      ScopeKey mutable = scopeInfo.getMutableScope();
+      ScopeKey scopeKey = scopeInfo.getScope();
+      try
+      {
+         controller.install(test);
+         
+         MetaData metaData = scopeInfo.getMetaData();
+         assertNotNull(metaData);
+         assertEquals("testFromInstall", metaData.getMetaData("FromInstall"));
+      }
+      finally
+      {
+         controller.uninstall(test.getName());
+      }
+      
+      assertNull(repository.getMetaDataRetrieval(mutable));
+      assertNull(repository.getMetaDataRetrieval(scopeKey));
+   }
+   
+   public class TestControllerContext extends AbstractControllerContext
+   {
+      public TestControllerContext(Object name)
+      {
+         super(name, new Object());
+      }
+
+      @Override
+      public void install(ControllerState fromState, ControllerState toState) throws Throwable
+      {
+         if (toState.equals(ControllerState.INSTANTIATED))
+         {
+            ScopeInfo scopeInfo = getScopeInfo();
+            scopeInfo.addMetaData(repository, this);
+            ScopeKey scope = scopeInfo.getMutableScope();
+            MemoryMetaDataLoader loader = (MemoryMetaDataLoader) repository.getMetaDataRetrieval(scope);
+            loader.addMetaData("FromInstall", "testFromInstall", String.class);
+            
+            // Initialise the full key
+            ScopeKey full = scopeInfo.getScope();
+            if (repository.getMetaDataRetrieval(full) == null)
+               scopeInfo.initMetaDataRetrieval(repository, this);
+         }
+      }
+
+      @Override
+      public void uninstall(ControllerState fromState, ControllerState toState)
+      {
+         if (fromState.equals(ControllerState.INSTANTIATED))
+         {
+            ScopeInfo scopeInfo = getScopeInfo();
+            ScopeKey scope = scopeInfo.getMutableScope();
+            MemoryMetaDataLoader loader = (MemoryMetaDataLoader) repository.getMetaDataRetrieval(scope);
+            loader.removeMetaData("FromInstall", String.class);
+            scopeInfo.removeMetaData(repository, this);
+         }
+      }
+   }
+}

Modified: projects/microcontainer/trunk/kernel/pom.xml
===================================================================
--- projects/microcontainer/trunk/kernel/pom.xml	2008-08-08 14:37:38 UTC (rev 76832)
+++ projects/microcontainer/trunk/kernel/pom.xml	2008-08-08 15:11:04 UTC (rev 76833)
@@ -36,9 +36,9 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <!--configuration>
+        <configuration>
           <testFailureIgnore>true</testFailureIgnore>
-        </configuration-->
+        </configuration>
       </plugin>   	   
       <plugin>
         <artifactId>maven-assembly-plugin</artifactId>

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelScopeInfo.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelScopeInfo.java	2008-08-08 14:37:38 UTC (rev 76832)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelScopeInfo.java	2008-08-08 15:11:04 UTC (rev 76833)
@@ -32,7 +32,10 @@
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.kernel.plugins.config.Configurator;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.logging.Logger;
 import org.jboss.metadata.plugins.loader.memory.MemoryMetaDataLoader;
+import org.jboss.metadata.spi.ComponentMutableMetaData;
+import org.jboss.metadata.spi.loader.MutableMetaDataLoader;
 import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
 import org.jboss.metadata.spi.scope.CommonLevels;
 import org.jboss.metadata.spi.scope.Scope;
@@ -50,6 +53,9 @@
  */
 public class KernelScopeInfo extends AbstractScopeInfo
 {
+   /** The log */
+   private static final Logger log = Logger.getLogger(KernelScopeInfo.class);
+   
    /** The bean metadata */
    private BeanMetaData beanMetaData;
    
@@ -102,13 +108,16 @@
    }
 
    @Override
-   public void addMetaData(MutableMetaDataRepository repository, ControllerContext context, MemoryMetaDataLoader mutable)
+   public void addMetaData(MutableMetaDataRepository repository, ControllerContext context, MutableMetaDataLoader mutable)
    {
       if (context instanceof KernelControllerContext == false)
          return;
       KernelControllerContext theContext = (KernelControllerContext) context;
       addClassAnnotations(mutable, theContext);
-      addPropertyAnnotations(mutable, theContext);
+      if (mutable instanceof ComponentMutableMetaData)
+          addPropertyAnnotations((ComponentMutableMetaData) mutable, theContext);
+      else
+         log.warn("Unable to add properties to mutable metadata that does not support components: " + mutable + " for " + context.toShortString());
    }
    
    /**
@@ -117,7 +126,7 @@
     * @param mutable the mutable metadata
     * @param context the context
     */
-   private void addClassAnnotations(MemoryMetaDataLoader mutable, KernelControllerContext context)
+   private void addClassAnnotations(MutableMetaDataLoader mutable, KernelControllerContext context)
    {
       BeanMetaData beanMetaData = context.getBeanMetaData();
       if (beanMetaData != null)
@@ -141,7 +150,7 @@
     * @param mutable the mutable
     * @param context the kernel controller contex
     */
-   private void addPropertyAnnotations(MemoryMetaDataLoader mutable, KernelControllerContext context)
+   private void addPropertyAnnotations(ComponentMutableMetaData mutable, KernelControllerContext context)
    {
       BeanMetaData beanMetaData = context.getBeanMetaData();
       if (beanMetaData == null)
@@ -177,7 +186,7 @@
     * @param propertyMetaData the property
     * @param beanInfo the bean info
     */
-   private void addPropertyAnnotations(ClassLoader classloader, MemoryMetaDataLoader mutable, PropertyMetaData propertyMetaData, BeanInfo beanInfo)
+   private void addPropertyAnnotations(ClassLoader classloader, ComponentMutableMetaData mutable, PropertyMetaData propertyMetaData, BeanInfo beanInfo)
    {
       Set<AnnotationMetaData> propertyAnnotations = propertyMetaData.getAnnotations();
       if (propertyAnnotations == null || propertyAnnotations.size() == 0)
@@ -205,7 +214,7 @@
     * @param methodInfo the method info
     * @param annotations the annotations
     */
-   private void addAnnotations(ClassLoader classloader, MemoryMetaDataLoader mutable, MethodInfo methodInfo, Set<AnnotationMetaData> annotations)
+   private void addAnnotations(ClassLoader classloader, ComponentMutableMetaData mutable, MethodInfo methodInfo, Set<AnnotationMetaData> annotations)
    {
       ScopeKey scope = new ScopeKey(CommonLevels.JOINPOINT_OVERRIDE, methodInfo.getName());
       MemoryMetaDataLoader loader = new MemoryMetaDataLoader(scope);
@@ -221,7 +230,7 @@
     * @param fieldInfo the field info
     * @param annotations the annotations
     */
-   private void addAnnotations(ClassLoader classloader, MemoryMetaDataLoader mutable, FieldInfo fieldInfo, Set<AnnotationMetaData> annotations)
+   private void addAnnotations(ClassLoader classloader, ComponentMutableMetaData mutable, FieldInfo fieldInfo, Set<AnnotationMetaData> annotations)
    {
       ScopeKey scope = new ScopeKey(CommonLevels.JOINPOINT_OVERRIDE, fieldInfo.getName());
       MemoryMetaDataLoader loader = new MemoryMetaDataLoader(scope);
@@ -236,7 +245,7 @@
     * @param mutable the mutable metadata
     * @param annotations the annotations
     */
-   private void addAnnotations(ClassLoader classloader, MemoryMetaDataLoader mutable, Set<AnnotationMetaData> annotations)
+   private void addAnnotations(ClassLoader classloader, MutableMetaDataLoader mutable, Set<AnnotationMetaData> annotations)
    {
       if (annotations == null || annotations.size() == 0)
          return;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/metadata/basic/BasicKernelMetaDataRepository.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/metadata/basic/BasicKernelMetaDataRepository.java	2008-08-08 14:37:38 UTC (rev 76832)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/metadata/basic/BasicKernelMetaDataRepository.java	2008-08-08 15:11:04 UTC (rev 76833)
@@ -21,20 +21,13 @@
 */
 package org.jboss.kernel.plugins.metadata.basic;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ScopeInfo;
 import org.jboss.kernel.plugins.metadata.AbstractKernelMetaDataRepository;
-import org.jboss.metadata.plugins.context.AbstractMetaDataContext;
-import org.jboss.metadata.plugins.loader.memory.MemoryMetaDataLoader;
 import org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository;
 import org.jboss.metadata.spi.MetaData;
-import org.jboss.metadata.spi.context.MetaDataContext;
 import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
 import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
-import org.jboss.metadata.spi.scope.Scope;
 import org.jboss.metadata.spi.scope.ScopeKey;
 
 /**
@@ -102,36 +95,6 @@
    {
       MutableMetaDataRepository repository = getMetaDataRepository();
       ScopeInfo scopeInfo = context.getScopeInfo();
-      ScopeKey scopeKey = scopeInfo.getScope();
-      List<MetaDataRetrieval> retrievals = new ArrayList<MetaDataRetrieval>();
-      for (Scope scope : scopeKey.getScopes())
-      {
-         ScopeKey thisScope = new ScopeKey(scope);
-         MetaDataRetrieval retrieval = repository.getMetaDataRetrieval(thisScope);
-         if (retrieval == null)
-         {
-            retrieval = scopeInfo.initMetaDataRetrieval(repository, context, scope);
-            if (retrieval == null)
-            {
-               retrieval = new MemoryMetaDataLoader(thisScope);
-               repository.addMetaDataRetrieval(retrieval);
-            }
-         }
-         retrievals.add(0, retrieval);
-      }
-      MetaDataContext metaDataContext = createMetaDataContext(retrievals);
-      repository.addMetaDataRetrieval(metaDataContext);
-      return metaDataContext;
+      return scopeInfo.initMetaDataRetrieval(repository, context);
    }
-
-   /**
-    * Create metadata context.
-    *
-    * @param retrievals the retrievals
-    * @return new metadata context instance
-    */
-   protected MetaDataContext createMetaDataContext(List<MetaDataRetrieval> retrievals)
-   {
-      return new AbstractMetaDataContext(null, retrievals);
-   }
 }

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/DeploymentTestSuite.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/DeploymentTestSuite.java	2008-08-08 14:37:38 UTC (rev 76832)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/DeploymentTestSuite.java	2008-08-08 15:11:04 UTC (rev 76833)
@@ -66,6 +66,7 @@
       suite.addTest(AnonymousBeansTestCase.suite());
       suite.addTest(AnonymousBeansXMLTestCase.suite());
       suite.addTest(MutableMetaDataTestCase.suite());
+      suite.addTest(ScopingOverrideTestCase.suite());
       // bean container tests
       suite.addTest(BeanContainerUsageTestCase.suite());
       suite.addTest(BeanContainerUsageMDTestCase.suite());




More information about the jboss-cvs-commits mailing list