[jboss-cvs] JBossAS SVN: r100308 - in projects/kernel/branches/resolver: dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Feb 2 18:23:06 EST 2010


Author: kabir.khan at jboss.com
Date: 2010-02-02 18:23:05 -0500 (Tue, 02 Feb 2010)
New Revision: 100308

Modified:
   projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
   projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractDependencyResolver.java
   projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/IndexingDependencyResolver.java
   projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/IndexingDependencyResolverFactory.java
   projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcher.java
   projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcherFactory.java
   projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/spi/resolver/indexing/DependencyResolverMatcherFactory.java
   projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/CallbackDependencyResolverMatcherFactory.java
   projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ClassDependencyResolverMatcherFactory.java
   projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcherFactory.java
   projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcherFactory.java
   projects/kernel/branches/resolver/kernel/src/test/java/org/jboss/test/kernel/deployment/test/ScopingAliasTestCase.java
   projects/kernel/branches/resolver/kernel/src/test/resources/org/jboss/test/kernel/deployment/test/ScopingAliasTestCase.xml
Log:
More Scoped alias fixes

Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -2456,7 +2456,7 @@
       
    }
    
-   AbstractDependencyResolver getDependencyResolver()
+   public AbstractDependencyResolver getDependencyResolver()
    {
       return dependencyResolver;
    }

Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractDependencyResolver.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractDependencyResolver.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractDependencyResolver.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -53,7 +53,7 @@
       this.controller = (AbstractController)controller;
    }
    
-   protected Controller getController()
+   public Controller getController()
    {
       return controller;
    }

Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/IndexingDependencyResolver.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/IndexingDependencyResolver.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/IndexingDependencyResolver.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -62,6 +62,11 @@
       super(controller);
    }
 
+   Set<Object> getAliases(Object original)
+   {
+      return nameMatcher.getAliases(original);
+   }
+   
    public void addMatcher(Class<? extends DependencyItem> clazz, DependencyResolverMatcher matcher)
    {
       matchers.put(clazz, matcher);
@@ -250,8 +255,6 @@
       Set<ControllerContext> contexts = getAllContextsDependentOn(incremented);
       if (contexts != null && contexts.size() > 0)
       {
-         getAllContextsDependentOn(incremented);
-         
          for (ControllerContext context : contexts)
          {
             if (context.getDependencyInfo() != null)

Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/IndexingDependencyResolverFactory.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/IndexingDependencyResolverFactory.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/IndexingDependencyResolverFactory.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -52,7 +52,7 @@
       IndexingDependencyResolver resolver = internalCreateResolver(controller);
       for (Map.Entry<Class<? extends DependencyItem>, DependencyResolverMatcherFactory<?>> entry : matchers.entrySet())
       {
-         resolver.addMatcher(entry.getKey(), entry.getValue().createMatcher());
+         resolver.addMatcher(entry.getKey(), entry.getValue().createMatcher(controller));
       }
       return resolver;
    }
@@ -74,7 +74,7 @@
       matchers.put(matcherFactory.getHandled(), matcherFactory);
       for (IndexingDependencyResolver resolver : weakResolvers.keySet())
       {
-         resolver.addMatcher(matcherFactory.getHandled(), matcherFactory.createMatcher());
+         resolver.addMatcher(matcherFactory.getHandled(), matcherFactory.createMatcher(resolver.getController()));
       }
    }
    

Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcher.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcher.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcher.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -21,14 +21,17 @@
 */ 
 package org.jboss.dependency.plugins.resolver.indexing;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
 
+import org.jboss.dependency.plugins.AbstractController;
 import org.jboss.dependency.plugins.AbstractDependencyItem;
 import org.jboss.dependency.plugins.AliasControllerContext;
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.dependency.spi.DependencyItem;
@@ -41,13 +44,36 @@
  */
 public class NameDependencyResolverMatcher extends AbstractDependencyResolverMatcher
 {
+   private final AbstractController controller;
+   
    /** key is original name, value is aliases */
    private final Map<Object, Set<Object>> controllerRegisteredAliasLookup = new HashMap<Object, Set<Object>>();
    
-   //private final Map<Object, ControllerContext> allContextsByName = new HashMap<Object, ControllerContext>();
-   
    private final Map<ControllerState, Map<Object, Set<ControllerContext>>> contextsByState = new HashMap<ControllerState, Map<Object, Set<ControllerContext>>>();
 
+   public NameDependencyResolverMatcher(Controller controller)
+   {
+      if (controller instanceof AbstractController == false)
+         throw new IllegalStateException("Controller is not of type AbstractController " + controller);
+      this.controller = (AbstractController)controller;
+   }
+   
+   public Set<Object> getAliases(Object original)
+   {
+      lockRead();
+      try
+      {
+         Set<Object> aliases = controllerRegisteredAliasLookup.get(original);
+         if (aliases == null)
+            return Collections.emptySet();
+         return new HashSet<Object>(aliases);
+      }
+      finally
+      {
+         unlockRead();
+      }
+   }
+   
    public void registerControllerRegisteredAlias(Object alias, Object original)
    {
       lockWrite();
@@ -77,8 +103,10 @@
          
          Map<Object, Set<ControllerContext>> contextsByName = contextsByState.get(context.getState());
          
+         //Look up the name directly
          result = addContextsDependentOn(result, context.getName(), contextsByName);
          
+         //Check the aliases from BeanMetaData
          Set<Object> aliases = context.getAliases();
          if (aliases != null && aliases.size() > 0)
          {
@@ -88,33 +116,44 @@
             }
          }
          
-         aliases = controllerRegisteredAliasLookup.get(context.getName());
-         if (aliases != null && aliases.size() > 0)
+         //Check the aliases from @Aliases
+         AbstractController controller = this.controller;
+         while (controller != null)
          {
-            for (Object alias : aliases)
-            {
-               result = addContextsDependentOn(result, alias, contextsByName);
-            }
+            IndexingDependencyResolver resolver = (IndexingDependencyResolver)controller.getDependencyResolver();
+            aliases = resolver.getAliases(context.getName());
+//            if (aliases != null && aliases.size() > 0)
+//            {
+//               for (Object alias : aliases)
+//               {
+//                  result = addContextsDependentOn(result, alias, contextsByName);
+//               }
+//            }
+            result = addAliasContexts(result, contextsByName, aliases);
+            controller = controller.getParentController();
          }
          
          if (context instanceof AliasControllerContext)
          {
+            //The alias might have been registered after the original context was installed 
             ControllerContext targetContext = context.getController().getContext(((AliasControllerContext)context).getOriginal(), null);
             if (targetContext != null)
             {
                if (context.getState().equals(targetContext.getState()) || context.getController().getStates().isAfterState(targetContext.getState(), context.getState()))
                {
                   aliases = controllerRegisteredAliasLookup.get(((AliasControllerContext)context).getOriginal());
-                  if (aliases != null && aliases.size() > 0)
-                  {
-                     for (Object alias : aliases)
-                     {
-                        result = addContextsDependentOn(result, alias, contextsByName);
-                     }
-                  }
-                  //result = addContextsDependentOn(result, context.getName(), contextsByName);
+                  result = addAliasContexts(result, contextsByName, aliases);
                }
             }
+            
+            controller = this.controller;
+            while (controller != null)
+            {
+               IndexingDependencyResolver resolver = (IndexingDependencyResolver)controller.getDependencyResolver();
+               aliases = resolver.getAliases(((AliasControllerContext)context).getOriginal());
+               result = addAliasContexts(result, contextsByName, aliases);
+               controller = controller.getParentController();
+            }
          }
          
          return result;
@@ -124,6 +163,18 @@
          unlockRead();
       }
    }
+   
+   protected Set<ControllerContext> addAliasContexts(Set<ControllerContext> result, Map<Object, Set<ControllerContext>> contextsByName, Set<Object> aliases)
+   {
+      if (aliases != null && aliases.size() > 0)
+      {
+         for (Object alias : aliases)
+         {
+            result = addContextsDependentOn(result, alias, contextsByName);
+         }
+      }      
+      return result;
+   }
 
    protected Set<ControllerContext> addContextsDependentOn(Set<ControllerContext> result, Object name, Map<Object, Set<ControllerContext>> contextsByName)
    {

Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcherFactory.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcherFactory.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcherFactory.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -22,6 +22,7 @@
 package org.jboss.dependency.plugins.resolver.indexing;
 
 import org.jboss.dependency.plugins.AbstractDependencyItem;
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.resolver.indexing.DependencyResolverMatcher;
 import org.jboss.dependency.spi.resolver.indexing.DependencyResolverMatcherFactory;
 
@@ -32,9 +33,9 @@
  */
 public class NameDependencyResolverMatcherFactory implements DependencyResolverMatcherFactory<AbstractDependencyItem>
 {
-   public DependencyResolverMatcher createMatcher()
+   public DependencyResolverMatcher createMatcher(Controller controller)
    {
-      return new NameDependencyResolverMatcher();
+      return new NameDependencyResolverMatcher(controller);
    }
 
    public Class<AbstractDependencyItem> getHandled()

Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/spi/resolver/indexing/DependencyResolverMatcherFactory.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/spi/resolver/indexing/DependencyResolverMatcherFactory.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/spi/resolver/indexing/DependencyResolverMatcherFactory.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -21,6 +21,7 @@
 */ 
 package org.jboss.dependency.spi.resolver.indexing;
 
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.DependencyItem;
 
 /**
@@ -32,5 +33,5 @@
 {
    Class<T> getHandled();
    
-   DependencyResolverMatcher createMatcher();
+   DependencyResolverMatcher createMatcher(Controller controller);
 }

Modified: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/CallbackDependencyResolverMatcherFactory.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/CallbackDependencyResolverMatcherFactory.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/CallbackDependencyResolverMatcherFactory.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -21,6 +21,7 @@
 */ 
 package org.jboss.kernel.plugins.resolver.indexing;
 
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.resolver.indexing.DependencyResolverMatcher;
 import org.jboss.dependency.spi.resolver.indexing.DependencyResolverMatcherFactory;
 import org.jboss.kernel.plugins.dependency.CallbackDependencyItem;
@@ -32,7 +33,7 @@
  */
 public class CallbackDependencyResolverMatcherFactory implements DependencyResolverMatcherFactory<CallbackDependencyItem>
 {
-   public DependencyResolverMatcher createMatcher()
+   public DependencyResolverMatcher createMatcher(Controller controller)
    {
       return new CallbackDependencyResolverMatcher();
    }

Modified: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ClassDependencyResolverMatcherFactory.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ClassDependencyResolverMatcherFactory.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ClassDependencyResolverMatcherFactory.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -21,6 +21,7 @@
 */ 
 package org.jboss.kernel.plugins.resolver.indexing;
 
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.resolver.indexing.DependencyResolverMatcherFactory;
 import org.jboss.kernel.plugins.dependency.ClassDependencyItem;
 
@@ -31,7 +32,7 @@
  */
 public class ClassDependencyResolverMatcherFactory implements DependencyResolverMatcherFactory<ClassDependencyItem>
 {
-   public ClassDependencyResolverMatcher createMatcher()
+   public ClassDependencyResolverMatcher createMatcher(Controller controller)
    {
       return new ClassDependencyResolverMatcher();
    }

Modified: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcherFactory.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcherFactory.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcherFactory.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -22,6 +22,7 @@
 package org.jboss.kernel.plugins.resolver.indexing;
 
 import org.jboss.beans.metadata.plugins.ContextualInjectionDependencyItem;
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.resolver.indexing.DependencyResolverMatcherFactory;
 
 /**
@@ -31,7 +32,7 @@
  */
 public class ContextualInjectionDependencyResolverMatcherFactory implements DependencyResolverMatcherFactory<ContextualInjectionDependencyItem>
 {
-   public ContextualInjectionDependencyResolverMatcher createMatcher()
+   public ContextualInjectionDependencyResolverMatcher createMatcher(Controller controller)
    {
       return new ContextualInjectionDependencyResolverMatcher();
    }

Modified: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcherFactory.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcherFactory.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcherFactory.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -22,6 +22,7 @@
 package org.jboss.kernel.plugins.resolver.indexing;
 
 import org.jboss.beans.metadata.plugins.AbstractDemandMetaData.DemandDependencyItem;
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.resolver.indexing.DependencyResolverMatcherFactory;
 
 /**
@@ -31,7 +32,7 @@
  */
 public class SupplyDemandDependencyResolverMatcherFactory implements DependencyResolverMatcherFactory<DemandDependencyItem>
 {
-   public SupplyDemandDependencyResolverMatcher createMatcher()
+   public SupplyDemandDependencyResolverMatcher createMatcher(Controller controller)
    {
       return new SupplyDemandDependencyResolverMatcher();
    }

Modified: projects/kernel/branches/resolver/kernel/src/test/java/org/jboss/test/kernel/deployment/test/ScopingAliasTestCase.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/test/java/org/jboss/test/kernel/deployment/test/ScopingAliasTestCase.java	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/kernel/src/test/java/org/jboss/test/kernel/deployment/test/ScopingAliasTestCase.java	2010-02-02 23:23:05 UTC (rev 100308)
@@ -43,25 +43,25 @@
       return suite(ScopingAliasTestCase.class);
    }
 
-//   public void testAliasInMainController() throws Throwable
-//   {
-//      checkBean("main", "main");
-//   }
-//
-//   public void testAliasInOwnScope() throws Throwable
-//   {
-//      checkBean("deploy1", "deployment1");
-//   }
+   public void testAliasInMainController() throws Throwable
+   {
+      checkBean("main", "main");
+   }
 
+   public void testAliasInOwnScope() throws Throwable
+   {
+      checkBean("deploy1", "deployment1");
+   }
+
    public void testAliasInParentScope() throws Throwable
    {
       checkBean("deploy2", "main");
    }
 
-//   public void testAliasInOwnScope2() throws Throwable
-//   {
-//      checkBean("deploy3", "deployment3");
-//   }
+   public void testAliasInOwnScope2() throws Throwable
+   {
+      checkBean("deploy3", "deployment3");
+   }
    
    private void checkBean(String bean, String ctor)
    {

Modified: projects/kernel/branches/resolver/kernel/src/test/resources/org/jboss/test/kernel/deployment/test/ScopingAliasTestCase.xml
===================================================================
--- projects/kernel/branches/resolver/kernel/src/test/resources/org/jboss/test/kernel/deployment/test/ScopingAliasTestCase.xml	2010-02-02 22:30:15 UTC (rev 100307)
+++ projects/kernel/branches/resolver/kernel/src/test/resources/org/jboss/test/kernel/deployment/test/ScopingAliasTestCase.xml	2010-02-02 23:23:05 UTC (rev 100308)
@@ -2,7 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <!-- bean name="main" class="org.jboss.test.kernel.deployment.support.SimpleObjectWithBean">
+   <bean name="main" class="org.jboss.test.kernel.deployment.support.SimpleObjectWithBean">
       <property name="simpleBean"><inject bean="simple"/></property>
    </bean>
 
@@ -10,7 +10,7 @@
       <annotation>@org.jboss.metadata.plugins.scope.ApplicationScope("testApp")</annotation>
       <annotation>@org.jboss.metadata.plugins.scope.DeploymentScope("deployment1")</annotation>
       <property name="simpleBean"><inject bean="simple"/></property>
-   </bean-->
+   </bean>
 
    <bean name="deploy2" class="org.jboss.test.kernel.deployment.support.SimpleObjectWithBean">
       <annotation>@org.jboss.metadata.plugins.scope.ApplicationScope("testApp")</annotation>
@@ -18,7 +18,7 @@
       <property name="simpleBean"><inject bean="simple"/></property>
    </bean>
 
-   <!-- bean name="deploy3" class="org.jboss.test.kernel.deployment.support.SimpleObjectWithBean">
+   <bean name="deploy3" class="org.jboss.test.kernel.deployment.support.SimpleObjectWithBean">
       <annotation>@org.jboss.metadata.plugins.scope.ApplicationScope("testApp")</annotation>
       <annotation>@org.jboss.metadata.plugins.scope.DeploymentScope("deployment3")</annotation>
       <property name="simpleBean"><inject bean="simple"/></property>
@@ -40,7 +40,7 @@
       <constructor>
          <parameter>deployment3</parameter>
       </constructor>
-   </bean-->
+   </bean>
 
   <bean name="simple-main" class="org.jboss.test.kernel.deployment.support.SimpleBeanImpl">
      <annotation>@org.jboss.beans.metadata.api.annotations.Aliases(value={"simple"})</annotation>




More information about the jboss-cvs-commits mailing list