[jboss-cvs] JBossAS SVN: r100812 - in projects/kernel/trunk: dependency/src/main/java/org/jboss/dependency/plugins/helpers and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Feb 10 12:09:21 EST 2010


Author: kabir.khan at jboss.com
Date: 2010-02-10 12:09:20 -0500 (Wed, 10 Feb 2010)
New Revision: 100812

Modified:
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractDependencyItem.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/helpers/StatelessController.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/Controller.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/ScopedKernelController.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/test/ScopingTestDelegate.java
   projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java
Log:
[JBKERNEL-92] add Controller.getContext() that allows enabling of ondemand contexts, and make AbstractDepenencyItem use that which cuts down from the original 3 calls to getContext() to 1

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2010-02-10 17:08:06 UTC (rev 100811)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2010-02-10 17:09:20 UTC (rev 100812)
@@ -516,6 +516,16 @@
 
    public ControllerContext getContext(Object name, ControllerState state)
    {
+      return getContext(name, state, false);
+   }
+   
+   public ControllerContext getContext(Object name, ControllerState state, boolean enableOnDemand)
+   {
+      return getContextInternal(name, state, enableOnDemand, this);
+   }
+   
+   public ControllerContext getContextInternal(Object name, ControllerState state, boolean enableOnDemand, Controller initiatingController)
+   {
       if (name == null)
          throw new IllegalArgumentException("Null name");
 
@@ -526,9 +536,24 @@
          if (result == null && name instanceof Class) // check type matching
             result = getContextByClass((Class<?>)name);
 
-         if (result != null && state != null && stateModel.isBeforeState(result.getState(), state))
+         if (result != null)
          {
-            return null;
+            if (state != null && stateModel.isBeforeState(result.getState(), state))
+            {
+               if (ControllerMode.ON_DEMAND.equals(result.getMode()))
+               {
+                  try
+                  {
+                     initiatingController.enableOnDemand(result);
+                  }
+                  catch (Throwable ignored)
+                  {
+                     if (log.isTraceEnabled())
+                        log.trace("Unexpected error", ignored);
+                  }
+               }
+               return null;
+            }
          }
          return result;
       }

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractDependencyItem.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractDependencyItem.java	2010-02-10 17:08:06 UTC (rev 100811)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractDependencyItem.java	2010-02-10 17:09:20 UTC (rev 100812)
@@ -105,42 +105,22 @@
    {
       return resolved;
    }
-
+      
    public boolean resolve(Controller controller)
    {
       boolean previous = resolved;
-      ControllerContext context;
-
-      if (dependentState == null)
-         context = controller.getInstalledContext(iDependOn);
-      else
-      {
-         context = controller.getContext(iDependOn, dependentState);
-      }
-
+      ControllerState state = dependentState == null ? ControllerState.INSTALLED : dependentState;
+      ControllerContext context = controller.getContext(iDependOn, state, true);
+      
       if (context == null)
       {
          resolved = false;
-         ControllerContext unresolvedContext = controller.getContext(iDependOn, null);
-         if (unresolvedContext != null && ControllerMode.ON_DEMAND.equals(unresolvedContext.getMode()))
-         {
-            try
-            {
-               controller.enableOnDemand(unresolvedContext);
-            }
-            catch (Throwable ignored)
-            {
-               if (log.isTraceEnabled())
-                  log.trace("Unexpected error", ignored);
-            }
-         }
       }
       else
       {
          addDependsOnMe(controller, context);
          resolved = true;
       }
-
       if (previous != resolved)
       {
          flushJBossObjectCache();

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/helpers/StatelessController.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/helpers/StatelessController.java	2010-02-10 17:08:06 UTC (rev 100811)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/helpers/StatelessController.java	2010-02-10 17:09:20 UTC (rev 100812)
@@ -81,6 +81,11 @@
       return controller.getInstalledContext(name);
    }
 
+   public ControllerContext getContext(Object name, ControllerState state, boolean enableOnDemand)
+   {
+      return controller.getContext(name, state, enableOnDemand);
+   }
+   
    public boolean isShutdown()
    {
       return controller.isShutdown();

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/Controller.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/Controller.java	2010-02-10 17:08:06 UTC (rev 100811)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/Controller.java	2010-02-10 17:09:20 UTC (rev 100812)
@@ -114,6 +114,16 @@
    ControllerContext getContext(Object name, ControllerState state);
    
    /**
+    * Get a context that has reached at least the passed in state. 
+    *
+    * @param name the name of the component
+    * @param state the state (pass null for any state)
+    * @param enableOnDemand if true and an on demand context is found, but has not yet reached the passed in state, that context is enabled
+    * @return the context
+    */
+   ControllerContext getContext(Object name, ControllerState state, boolean enableOnDemand);
+   
+   /**
     * Get an installed context
     *
     * @param name the name of the component

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java	2010-02-10 17:08:06 UTC (rev 100811)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java	2010-02-10 17:09:20 UTC (rev 100812)
@@ -33,6 +33,7 @@
 import org.jboss.beans.metadata.spi.SupplyMetaData;
 import org.jboss.dependency.plugins.ScopedController;
 import org.jboss.dependency.plugins.action.ControllerContextAction;
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.kernel.Kernel;
@@ -145,9 +146,10 @@
       return list;
    }
 
-   public ControllerContext getContext(Object name, ControllerState state)
+   @Override
+   public ControllerContext getContextInternal(Object name, ControllerState state, boolean enableOnDemand, Controller initiatingController)
    {
-      ControllerContext context = super.getContext(name, state);
+      ControllerContext context = super.getContextInternal(name, state, enableOnDemand, initiatingController);
       if (context != null)
          return context;
 

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/ScopedKernelController.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/ScopedKernelController.java	2010-02-10 17:08:06 UTC (rev 100811)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/ScopedKernelController.java	2010-02-10 17:09:20 UTC (rev 100812)
@@ -136,18 +136,24 @@
    // override, since kernel's contexts are extended with registry plugin
    public ControllerContext getContextLocally(Object name, ControllerState state)
    {
-      return super.getContext(name, state);
+      return super.getContextInternal(name, state, false, this);
    }
 
-   public ControllerContext getContext(Object name, ControllerState state)
+   @Override
+   public ControllerContext getContextInternal(Object name, ControllerState state, boolean enableOnDemand, Controller initiatingController)
    {
-      ControllerContext context = super.getContext(name, state);
+      ControllerContext context = super.getContextInternal(name, state, enableOnDemand, initiatingController);
       if (context != null)
       {
          return context;
       }
       Controller controller = getParentController();
-      return (controller != null) ? controller.getContext(name, state) : null;
+      if (controller == null)
+         return null;
+      
+      if (controller instanceof AbstractController == false)
+         throw new IllegalStateException("Parent is not AbstractController");
+      return ((AbstractController)controller).getContextInternal(name, state, enableOnDemand, initiatingController);
    }
 
    public Set<ControllerContext> getNotInstalled()

Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java	2010-02-10 17:08:06 UTC (rev 100811)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java	2010-02-10 17:09:20 UTC (rev 100812)
@@ -22,21 +22,17 @@
 package org.jboss.test.kernel.dependency.test;
 
 import java.util.HashSet;
-import java.util.Set;
 
 import junit.framework.Test;
 
-import org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
 import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
-import org.jboss.beans.metadata.spi.AnnotationMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.PropertyMetaData;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerMode;
 import org.jboss.dependency.spi.ControllerState;
-import org.jboss.metadata.plugins.scope.DeploymentScope;
 import org.jboss.test.kernel.dependency.support.SimpleBean;
 import org.jboss.test.kernel.dependency.support.SimpleBeanImpl;
 import org.jboss.test.kernel.dependency.support.SimpleBeanWithDependency;

Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/test/ScopingTestDelegate.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/test/ScopingTestDelegate.java	2010-02-10 17:08:06 UTC (rev 100811)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/test/ScopingTestDelegate.java	2010-02-10 17:09:20 UTC (rev 100812)
@@ -72,7 +72,7 @@
          this.delegate = controller;
       }
 
-      public ControllerContext getContext(Object name, ControllerState state)
+      public ControllerContext getContext(Object name, ControllerState state, boolean enableOnDemand)
       {
          return findContext(delegate, name, state);
       }

Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java	2010-02-10 17:08:06 UTC (rev 100811)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java	2010-02-10 17:09:20 UTC (rev 100812)
@@ -65,6 +65,11 @@
       return null;
    }
 
+   public ControllerContext getContext(Object name, ControllerState state, boolean enableOnDemand)
+   {
+      return null;
+   }
+
    public Set<ControllerContext> filter(Iterable<ControllerContext> contexts, ContextFilter filter)
    {
       return null;




More information about the jboss-cvs-commits mailing list