[jboss-cvs] JBossAS SVN: r99802 - in projects/kernel/branches/resolver: kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 22 10:03:24 EST 2010


Author: kabir.khan at jboss.com
Date: 2010-01-22 10:03:23 -0500 (Fri, 22 Jan 2010)
New Revision: 99802

Modified:
   projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/AbstractDependencyResolverMatcher.java
   projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcher.java
   projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcher.java
   projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcher.java
Log:
ContextualInjectionDependencyResolverMatcher.uninstall() was broken. Pull error handling up into base class

Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/AbstractDependencyResolverMatcher.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/AbstractDependencyResolverMatcher.java	2010-01-22 13:24:49 UTC (rev 99801)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/AbstractDependencyResolverMatcher.java	2010-01-22 15:03:23 UTC (rev 99802)
@@ -40,6 +40,10 @@
       return item.getDependentState();
    }
    
+   protected void handleCleanUpError(DependencyItem item)
+   {
+      throw new IllegalStateException("Inconsistent state cleaning up " + item);
+   }
 
 
 }

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-01-22 13:24:49 UTC (rev 99801)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/indexing/NameDependencyResolverMatcher.java	2010-01-22 15:03:23 UTC (rev 99802)
@@ -118,15 +118,14 @@
 
       ConcurrentMap<Object, List<ControllerContext>> contextsByName = contextsByState.get(getDependentState(item));
       if (contextsByName == null)
-         throw new IllegalStateException("Inconsistent state");
+         handleCleanUpError(item);
       List<ControllerContext> contexts = contextsByName.get(name);
       if (contexts == null)
-         throw new IllegalStateException("Inconsistent state");
+         handleCleanUpError(item);
       if (!contexts.remove(owner))
-         throw new IllegalStateException("Inconsistent state");
-
+         handleCleanUpError(item);
    }
-
+   
    public boolean hasDependencies(Object name)
    {
       for (ConcurrentMap<Object, List<ControllerContext>> contextsByName : contextsByState.values())

Modified: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcher.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcher.java	2010-01-22 13:24:49 UTC (rev 99801)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcher.java	2010-01-22 15:03:23 UTC (rev 99802)
@@ -92,12 +92,9 @@
       if (owner.getController().getStates().isBeforeState(getDependentState(item), ControllerState.INSTALLED))
          throw new IllegalArgumentException(item + " has a dependent state of " + getDependentState(item) + " which is before the first allowed: " + ControllerState.INSTALLED);
       
-      Object dependency = item.getIDependOn();
-      if (dependency instanceof QualifierKey == false && dependency instanceof Class<?> == false)
-         throw new IllegalStateException("Dependency is not a QualifierKey or a class: '" + dependency + "' in " + item);
-      Class<?> clazz = dependency instanceof QualifierKey ? ((QualifierKey)dependency).getType() : (Class<?>)dependency;
+      Class<?> clazz = getDependencyClass(item);
       
-      ConcurrentMap<Class<?>, List<ControllerContext>> contextsByClass = contextsByState.get(clazz);
+      ConcurrentMap<Class<?>, List<ControllerContext>> contextsByClass = contextsByState.get(getDependentState(item));
       if (contextsByClass == null)
       {
          contextsByClass = new ConcurrentHashMap<Class<?>, List<ControllerContext>>();
@@ -105,7 +102,7 @@
          if (old != null)
             contextsByClass = old;
       }
-      List<ControllerContext> contexts = contextsByClass.get(getDependentState(item));
+      List<ControllerContext> contexts = contextsByClass.get(clazz);
       if (contexts == null)
       {
          contexts = new CopyOnWriteArrayList<ControllerContext>();
@@ -124,19 +121,21 @@
       if (item instanceof AbstractDependencyItem == false)
          throw new IllegalStateException("item is not an instance of AbstractDependencyItem");
 
-      Object dependency = item.getIDependOn();
-      if (dependency instanceof QualifierKey == false)
-         throw new IllegalStateException("Dependency is not a QualifierKey or a class: '" + dependency + "' in " + item);
-      Class<?> clazz = ((QualifierKey)dependency).getType();
-
       ConcurrentMap<Class<?>, List<ControllerContext>> contextsByClass = contextsByState.get(getDependentState(item));
-      if (contextsByState == null)
-         throw new IllegalStateException("Inconsistent state");
-      List<ControllerContext> contexts = contextsByClass.get(clazz);
+      if (contextsByClass == null)
+         handleCleanUpError(item);
+      List<ControllerContext> contexts = contextsByClass.get(getDependencyClass(item));
       if (contexts == null)
-         throw new IllegalStateException("Inconsistent state");
+         handleCleanUpError(item);
       if (!contexts.remove(owner))
-         throw new IllegalStateException("Inconsistent state");
+         handleCleanUpError(item);
    }
 
+   private Class<?> getDependencyClass(DependencyItem item)
+   {
+      Object dependency = item.getIDependOn();
+      if (dependency instanceof QualifierKey == false && dependency instanceof Class<?> == false)
+         throw new IllegalStateException("Dependency is not a QualifierKey or a class: '" + dependency + "' in " + item);
+      return dependency instanceof QualifierKey ? ((QualifierKey)dependency).getType() : (Class<?>)dependency;
+   }
 }

Modified: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcher.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcher.java	2010-01-22 13:24:49 UTC (rev 99801)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcher.java	2010-01-22 15:03:23 UTC (rev 99802)
@@ -23,7 +23,6 @@
 
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -73,12 +72,10 @@
 
    public void unregisterDependency(ControllerContext owner, DependencyItem item)
    {
-      Object name = item.getIDependOn();
-
       List<ControllerContext> contexts = contextsByState.get(getDependentState(item));
       if (contexts == null)
-         throw new IllegalStateException("Inconsistent state");
+         handleCleanUpError(item);
       if (!contexts.remove(owner))
-         throw new IllegalStateException("Inconsistent state");
+         handleCleanUpError(item);
    }
 }




More information about the jboss-cvs-commits mailing list