[jboss-cvs] JBossAS SVN: r99657 - in projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins: resolver and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jan 20 08:25:17 EST 2010
Author: kabir.khan at jboss.com
Date: 2010-01-20 08:25:17 -0500 (Wed, 20 Jan 2010)
New Revision: 99657
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/DefaultDependencyResolver.java
projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/IndexingDependencyResolver2.java
Log:
Get OnDemand working
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-01-20 12:27:20 UTC (rev 99656)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java 2010-01-20 13:25:17 UTC (rev 99657)
@@ -74,7 +74,7 @@
/** The lock */
private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- //AbstractDependencyResolver resolver = new DefaultDependencyResolver(this);
+// AbstractDependencyResolver resolver = new DefaultDependencyResolver(this);
AbstractDependencyResolver resolver = new IndexingDependencyResolver2(this);
/**
@@ -935,6 +935,8 @@
context.setRequiredState(ControllerState.INSTALLED);
+ resolver.enableOnDemand(context, trace);
+
if (trace)
log.trace("Enable onDemand: " + context.toShortString());
}
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-01-20 12:27:20 UTC (rev 99656)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/AbstractDependencyResolver.java 2010-01-20 13:25:17 UTC (rev 99657)
@@ -154,4 +154,6 @@
public abstract void registerContext(ControllerContext context);
public abstract void unregisterContext(ControllerContext context);
+
+ public abstract void enableOnDemand(ControllerContext context, boolean trace);
}
Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/DefaultDependencyResolver.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/DefaultDependencyResolver.java 2010-01-20 12:27:20 UTC (rev 99656)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/DefaultDependencyResolver.java 2010-01-20 13:25:17 UTC (rev 99657)
@@ -225,4 +225,9 @@
{
}
+ @Override
+ public void enableOnDemand(ControllerContext context, boolean trace)
+ {
+ }
+
}
Modified: projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/IndexingDependencyResolver2.java
===================================================================
--- projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/IndexingDependencyResolver2.java 2010-01-20 12:27:20 UTC (rev 99656)
+++ projects/kernel/branches/resolver/dependency/src/main/java/org/jboss/dependency/plugins/resolver/IndexingDependencyResolver2.java 2010-01-20 13:25:17 UTC (rev 99657)
@@ -22,6 +22,7 @@
package org.jboss.dependency.plugins.resolver;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -32,9 +33,11 @@
import org.jboss.dependency.plugins.AbstractDependencyResolver;
import org.jboss.dependency.spi.Controller;
import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerMode;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.DependencyInfo;
import org.jboss.dependency.spi.DependencyItem;
+import org.jboss.util.collection.ConcurrentSet;
/**
* Optimized
@@ -46,6 +49,8 @@
//So far this only works with name
private final ConcurrentMap<Object, ConcurrentMap<ControllerState, List<ControllerContext>>> contextsByDependency = new ConcurrentHashMap<Object, ConcurrentMap<ControllerState, List<ControllerContext>>>();
+ private final ConcurrentSet<ControllerContext> enabledOnDemandContexts = new ConcurrentSet<ControllerContext>();
+
private final IncrementContextPlugin<Boolean> plugin = new DefaultIncrementContextPlugin();
public IndexingDependencyResolver2(Controller controller)
@@ -119,9 +124,9 @@
@Override
public void resolveContexts(ControllerContext context, boolean trace)
{
- ControllerState fromState = context.getState();
- ControllerState toState = context.getRequiredState();
- while (getStateModel().isAfterState(toState, fromState))
+ ControllerState fromState = context.getState();
+
+ while (getStateModel().isAfterState(context.getRequiredState(), fromState))
{
ControllerState nextState = getStateModel().getNextState(fromState);
@@ -129,6 +134,7 @@
break;
try
{
+ checkAndEnableOnDemandForContext(context, trace);
if (plugin.canMoveToState(context, nextState))
{
if (incrementState(context, trace))
@@ -141,11 +147,26 @@
break;
}
}
+ catch(Throwable t)
+ {
+ errorResolvingContext(context, fromState, nextState, t, trace);
+ }
finally
{
removeInstalling(context);
}
}
+
+ while (true)
+ {
+ if (enabledOnDemandContexts.isEmpty())
+ break;
+ for (ControllerContext enabled : enabledOnDemandContexts)
+ {
+ enabledOnDemandContexts.remove(enabled);
+ resolveContexts(enabled, trace);
+ }
+ }
}
@Override
@@ -190,14 +211,6 @@
@Override
public void stateIncremented(ControllerContext incremented, boolean trace)
{
-// //private final ConcurrentMap<Object, ConcurrentMap<ControllerState, List<ControllerContext>>> contextsByDependency = new ConcurrentHashMap<Object, ConcurrentMap<ControllerState, List<ControllerContext>>>();
-// ConcurrentMap<ControllerState, List<ControllerContext>> contextsByDependentState = contextsByDependency.get(incremented.getName());
-//
-// if (contextsByDependentState == null || contextsByDependentState.size() == 0)
-// return;
-// List<ControllerContext> contexts = contextsByDependentState.get(incremented.getState());
-// if (contexts == null || contexts.size() == 0)
-// return;
Set<ControllerContext> contexts = getAllContextsDependentOn(incremented);
if (contexts == null || contexts.size() == 0)
return;
@@ -206,12 +219,34 @@
{
if (context.getDependencyInfo() != null)
{
- ControllerState nextState = getStateModel().getNextState(context.getState());
-
- // TODO Check that it is not being installed
resolveContexts(context, trace);
}
}
}
+ @Override
+ public void enableOnDemand(ControllerContext context, boolean trace)
+ {
+ enabledOnDemandContexts.add(context);
+ }
+
+ private void checkAndEnableOnDemandForContext(ControllerContext context, boolean trace) throws Throwable
+ {
+ boolean enabled = true;
+ if (context.getMode() == ControllerMode.ON_DEMAND)
+ {
+ if (contextsByDependency.get(context.getName()) != null)
+ getController().enableOnDemand(context);
+
+ if (context.getAliases() != null && context.getAliases().size() > 0)
+ {
+ for (Object alias : context.getAliases())
+ {
+ if (contextsByDependency.get(alias) != null)
+ getController().enableOnDemand(context);
+ }
+ }
+ }
+ }
+
}
More information about the jboss-cvs-commits
mailing list