[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