[jboss-cvs] JBossAS SVN: r62039 - in projects/microcontainer/trunk: dependency/src/main/org/jboss/dependency/spi and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Apr 3 11:03:28 EDT 2007
Author: adrian at jboss.org
Date: 2007-04-03 11:03:28 -0400 (Tue, 03 Apr 2007)
New Revision: 62039
Added:
projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/MockControllerContextActions.java
projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AliasDependencyTestCase.java
projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AliasUnitTestCase.java
Modified:
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractControllerContext.java
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ControllerContext.java
projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/TestControllerContext.java
projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/TestDelegate.java
projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AbstractDependencyTest.java
projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ControllerTestSuite.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ScopedKernelController.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/registry/AbstractKernelRegistryEntry.java
Log:
[JBMICROCONT-171] - Static aliases defined by the ControllerContext
Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java 2007-04-03 15:02:42 UTC (rev 62038)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -118,13 +118,13 @@
// 4) Error handling?
public void addControllerContext(ControllerContext context)
{
- registerControllerContext(context.getName(), context);
+ registerControllerContext(context);
}
// TODO This api looks broken and unsafe see above
public void removeControllerContext(ControllerContext context)
{
- unregisterControllerContext(context.getName());
+ unregisterControllerContext(context);
}
public Set<AbstractController> getControllers()
@@ -289,7 +289,7 @@
try
{
- unregisterControllerContext(name);
+ unregisterControllerContext(context);
}
catch (Throwable t)
{
@@ -329,8 +329,20 @@
{
Object name = context.getName();
+ // Check the name is not already registered
if (getRegisterControllerContext(name, false) != null)
throw new IllegalStateException(name + " is already installed.");
+
+ // Check any alias is not already registered
+ Set<Object> aliases = context.getAliases();
+ if (aliases != null && aliases.isEmpty() == false)
+ {
+ for (Object alias : aliases)
+ {
+ if (getRegisterControllerContext(alias, false) != null)
+ throw new IllegalStateException(alias + " an alias of " + name + " is already installed.");
+ }
+ }
if (ControllerMode.AUTOMATIC.equals(context.getMode()))
context.setRequiredState(ControllerState.INSTALLED);
@@ -357,7 +369,7 @@
{
try
{
- registerControllerContext(name, context);
+ registerControllerContext(context);
}
catch (Throwable t)
{
@@ -915,10 +927,115 @@
}
/**
- * Register a context<p>
+ * Register a context and all its aliases<p>
*
* This method must be invoked with the write lock taken
*
+ * @param context the context to register
+ * @throws IllegalArgumentException for null parameters
+ * @throws IllegalStateException if the context is already registered with that name or alias
+ */
+ protected void registerControllerContext(ControllerContext context)
+ {
+ if (context == null)
+ throw new IllegalArgumentException("Null context");
+
+ Set<Object> aliases = context.getAliases();
+
+ // Register the context
+ Object name = context.getName();
+ registerControllerContext(name, context);
+
+ // Register the aliases
+ if (aliases != null && aliases.isEmpty() == false)
+ {
+ int ok = 0;
+ try
+ {
+ for (Object alias : aliases)
+ {
+ registerControllerContext(alias, context);
+ ++ok;
+ }
+ }
+ finally
+ {
+ // It didn't work
+ if (ok != aliases.size() && ok > 0)
+ {
+ // Unregister the aliases we added
+ for (Object alias : aliases)
+ {
+ if (ok-- == 0)
+ break;
+ try
+ {
+ unregisterControllerContext(alias);
+ }
+ catch (Throwable ignored)
+ {
+ log.debug("Error unregistering alias: " + alias, ignored);
+ }
+ }
+
+ // Unregister the context
+ try
+ {
+ unregisterControllerContext(name);
+ }
+ catch (Throwable ignored)
+ {
+ log.debug("Error unregistering context with name: " + name, ignored);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Unregister a context and all its aliases<p>
+ *
+ * This method must be invoked with the write lock taken
+ *
+ * @param context the context
+ * @throws IllegalArgumentException for null parameters
+ * @throws IllegalStateException if the context is not registered
+ */
+ protected void unregisterControllerContext(ControllerContext context)
+ {
+ if (context == null)
+ throw new IllegalArgumentException("Null context");
+
+ Set<Object> aliases = context.getAliases();
+
+ // Unregister the context
+ Object name = context.getName();
+ unregisterControllerContext(name);
+
+ // Unegister the aliases
+ if (aliases != null && aliases.isEmpty() == false)
+ {
+ for (Object alias : aliases)
+ {
+ try
+ {
+ unregisterControllerContext(alias);
+ }
+ catch (Throwable ignored)
+ {
+ log.debug("Error unregistering alias: " + alias, ignored);
+ }
+ }
+ }
+ }
+
+ /**
+ * Register a context<p>
+ *
+ * This method must be invoked with the write lock taken<p>
+ *
+ * NOTE: You probably want to use the {@link #registerControllerContext(ControllerContext)}
+ *
* @param name the name with which to register it
* @param context the context to register
* @throws IllegalArgumentException for null parameters
@@ -940,8 +1057,10 @@
/**
* Unregister a context<p>
*
- * This method must be invoked with the write lock taken
+ * This method must be invoked with the write lock taken<p>
*
+ * NOTE: You probably want to use the {@link #unregisterControllerContext(ControllerContext)}
+ *
* @param name the name it was registered with
* @throws IllegalArgumentException for null parameters
*/
Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractControllerContext.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractControllerContext.java 2007-04-03 15:02:42 UTC (rev 62038)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractControllerContext.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -23,6 +23,7 @@
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.util.Set;
import org.jboss.dependency.spi.Controller;
import org.jboss.dependency.spi.ControllerContext;
@@ -44,6 +45,9 @@
/** The name */
private Object name;
+ /** The aliases */
+ private Set<Object> aliases;
+
/** The target */
private Object target;
@@ -76,7 +80,7 @@
*/
public AbstractControllerContext(Object name, ControllerContextActions actions)
{
- this(name, actions, null, null);
+ this(name, null, actions, null, null);
}
/**
@@ -88,7 +92,7 @@
*/
public AbstractControllerContext(Object name, ControllerContextActions actions, DependencyInfo dependencies)
{
- this(name, actions, dependencies, null);
+ this(name, null, actions, dependencies, null);
}
/**
@@ -101,6 +105,20 @@
*/
public AbstractControllerContext(Object name, ControllerContextActions actions, DependencyInfo dependencies, Object target)
{
+ this(name, null, actions, dependencies, target);
+ }
+
+ /**
+ * Create a new AbstractControllerContext.
+ *
+ * @param name the name
+ * @param aliases the aliases
+ * @param actions the actions
+ * @param dependencies the dependencies
+ * @param target the target
+ */
+ public AbstractControllerContext(Object name, Set<Object> aliases, ControllerContextActions actions, DependencyInfo dependencies, Object target)
+ {
if (name == null)
throw new IllegalArgumentException("Null name");
if (actions == null)
@@ -113,6 +131,7 @@
else
this.dependencies = dependencies;
this.target = target;
+ this.aliases = aliases;
}
/**
@@ -145,6 +164,23 @@
this.name = name;
}
+ public Set<Object> getAliases()
+ {
+ return aliases;
+ }
+
+ /**
+ * Set the aliases<p>
+ *
+ * Aliases in this list only take effect if they are set before installation on the controller
+ *
+ * @param aliases the aliases
+ */
+ public void setAliases(Set<Object> aliases)
+ {
+ this.aliases = aliases;
+ }
+
public ControllerState getState()
{
return state;
@@ -243,6 +279,8 @@
public void toString(JBossStringBuilder buffer)
{
buffer.append("name=").append(name);
+ if (aliases != null)
+ buffer.append(" aliases=").append(aliases);
buffer.append(" target=").append(target);
if (error != null || state.equals(ControllerState.ERROR) == false)
buffer.append(" state=").append(state.getStateString());
@@ -266,6 +304,8 @@
public void toShortString(JBossStringBuilder buffer)
{
buffer.append("name=").append(name);
+ if (aliases != null)
+ buffer.append(" aliases=").append(aliases);
if (error != null || state.equals(ControllerState.ERROR) == false)
buffer.append(" state=").append(state.getStateString());
if (ControllerMode.AUTOMATIC.equals(mode) == false)
Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ControllerContext.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ControllerContext.java 2007-04-03 15:02:42 UTC (rev 62038)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ControllerContext.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -21,6 +21,8 @@
*/
package org.jboss.dependency.spi;
+import java.util.Set;
+
import org.jboss.util.JBossInterface;
/**
@@ -39,6 +41,13 @@
Object getName();
/**
+ * The aliases
+ *
+ * @return the aliases or null if there are no aliases
+ */
+ Set<Object> getAliases();
+
+ /**
* Get the dependency information
*
* @return the dependency information
Added: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/MockControllerContextActions.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/MockControllerContextActions.java (rev 0)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/MockControllerContextActions.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -0,0 +1,45 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.dependency.controller.support;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerContextActions;
+import org.jboss.dependency.spi.ControllerState;
+
+/**
+ * Actions that don't do anything
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockControllerContextActions implements ControllerContextActions
+{
+ public void install(ControllerContext context, ControllerState fromState, ControllerState toState) throws Throwable
+ {
+ // Mock
+ }
+
+ public void uninstall(ControllerContext context, ControllerState fromState, ControllerState toState)
+ {
+ // Mock
+ }
+}
Modified: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/TestControllerContext.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/TestControllerContext.java 2007-04-03 15:02:42 UTC (rev 62038)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/TestControllerContext.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -62,6 +62,7 @@
{
super(delegate.getName(), actions, delegate.dependencies);
setMode(delegate.mode);
+ setAliases(delegate.getAliases());
this.delegate = delegate;
}
Modified: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/TestDelegate.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/TestDelegate.java 2007-04-03 15:02:42 UTC (rev 62038)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/support/TestDelegate.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -21,6 +21,9 @@
*/
package org.jboss.test.dependency.controller.support;
+import java.util.HashSet;
+import java.util.Set;
+
import org.jboss.dependency.plugins.AbstractDependencyInfo;
import org.jboss.dependency.spi.ControllerMode;
import org.jboss.dependency.spi.DependencyItem;
@@ -35,6 +38,8 @@
{
private Object name;
+ private Set<Object> aliases;
+
public AbstractDependencyInfo dependencies = new AbstractDependencyInfo();
public ControllerMode mode = ControllerMode.AUTOMATIC;
@@ -54,7 +59,18 @@
public TestDelegate(Object name)
{
+ this(name, null);
+ }
+
+ public TestDelegate(Object name, Object... aliases)
+ {
this.name = name;
+ if (aliases != null)
+ {
+ this.aliases = new HashSet<Object>();
+ for (int i = 0; i < aliases.length; ++i)
+ this.aliases.add(aliases[i]);
+ }
}
public Object getName()
@@ -62,6 +78,11 @@
return name;
}
+ public Set<Object> getAliases()
+ {
+ return aliases;
+ }
+
public void describeInstall()
{
describeInstallOrder = order.increment();
Modified: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AbstractDependencyTest.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AbstractDependencyTest.java 2007-04-03 15:02:42 UTC (rev 62038)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AbstractDependencyTest.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -21,12 +21,17 @@
*/
package org.jboss.test.dependency.controller.test;
+import java.util.HashSet;
+import java.util.Set;
+
import org.jboss.dependency.plugins.AbstractController;
+import org.jboss.dependency.plugins.AbstractControllerContext;
import org.jboss.dependency.spi.Controller;
import org.jboss.dependency.spi.ControllerContext;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.test.AbstractTestCaseWithSetup;
import org.jboss.test.AbstractTestDelegate;
+import org.jboss.test.dependency.controller.support.MockControllerContextActions;
import org.jboss.test.dependency.controller.support.Ordering;
import org.jboss.test.dependency.controller.support.OtherControllerContext;
import org.jboss.test.dependency.controller.support.OtherDelegate;
@@ -80,6 +85,11 @@
return context;
}
+ protected void install(ControllerContext context) throws Throwable
+ {
+ controller.install(context);
+ }
+
protected void assertInstall(ControllerContext context, ControllerState expected) throws Throwable
{
controller.install(context);
@@ -118,6 +128,11 @@
{
assertContext(context, ControllerState.ERROR);
}
+
+ protected void assertNoContext(Object name) throws Throwable
+ {
+ assertNull(controller.getContext(name, null));
+ }
protected void assertUninstall(ControllerContext context) throws Throwable
{
@@ -125,6 +140,30 @@
assertEquals(ControllerState.ERROR, context.getState());
}
+ protected Set<Object> createAliases(Object... aliases)
+ {
+ if (aliases == null)
+ return null;
+ HashSet<Object> result = new HashSet<Object>(aliases.length);
+ for (int i = 0; i < aliases.length; ++i)
+ result.add(aliases[i]);
+ return result;
+ }
+
+ protected ControllerContext createControllerContext(Object name, Object... aliases)
+ {
+ AbstractControllerContext result = new AbstractControllerContext(name, new MockControllerContextActions());
+ result.setAliases(createAliases(aliases));
+ return result;
+ }
+
+ protected ControllerContext assertCreateInstall(Object name, Object... aliases) throws Throwable
+ {
+ ControllerContext context = createControllerContext(name, aliases);
+ assertInstall(context, ControllerState.INSTALLED);
+ return context;
+ }
+
/**
* Default setup with security manager enabled
*
Added: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AliasDependencyTestCase.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AliasDependencyTestCase.java (rev 0)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AliasDependencyTestCase.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -0,0 +1,260 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.dependency.controller.test;
+
+import junit.framework.Test;
+import org.jboss.dependency.plugins.AbstractDependencyItem;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.test.dependency.controller.support.OtherDelegate;
+import org.jboss.test.dependency.controller.support.TestDelegate;
+
+/**
+ * AliasDependencyTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 60558 $
+ */
+public class AliasDependencyTestCase extends AbstractDependencyTest
+{
+ public static Test suite()
+ {
+ return suite(AliasDependencyTestCase.class);
+ }
+
+ public AliasDependencyTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testDependencyCorrectOrder() throws Throwable
+ {
+ TestDelegate delegate1 = getDelegate1();
+ assertInstall(delegate1);
+ assertEquals(1, delegate1.describeInstallOrder);
+ assertEquals(2, delegate1.instantiateInstallOrder);
+ assertEquals(3, delegate1.configureInstallOrder);
+ assertEquals(4, delegate1.createInstallOrder);
+ assertEquals(5, delegate1.startInstallOrder);
+ assertEquals(6, delegate1.installInstallOrder);
+ assertEquals(-1, delegate1.installUninstallOrder);
+ assertEquals(-1, delegate1.startUninstallOrder);
+ assertEquals(-1, delegate1.createUninstallOrder);
+ assertEquals(-1, delegate1.configureUninstallOrder);
+ assertEquals(-1, delegate1.instantiateUninstallOrder);
+ assertEquals(-1, delegate1.describeUninstallOrder);
+ OtherDelegate delegate2 = getDelegate2();
+ assertInstall(delegate2);
+ assertEquals(7, delegate2.describeInstallOrder);
+ assertEquals(8, delegate2.instantiateInstallOrder);
+ assertEquals(9, delegate2.configureInstallOrder);
+ assertEquals(10, delegate2.createInstallOrder);
+ assertEquals(11, delegate2.startInstallOrder);
+ assertEquals(12, delegate2.installInstallOrder);
+ assertEquals(-1, delegate2.installUninstallOrder);
+ assertEquals(-1, delegate2.startUninstallOrder);
+ assertEquals(-1, delegate2.createUninstallOrder);
+ assertEquals(-1, delegate2.configureUninstallOrder);
+ assertEquals(-1, delegate2.instantiateUninstallOrder);
+ assertEquals(-1, delegate2.describeUninstallOrder);
+ }
+
+ public void testDependencyWrongOrder() throws Throwable
+ {
+ OtherDelegate delegate2 = getDelegate2();
+ ControllerContext context2 = assertInstall(delegate2, ControllerState.PRE_INSTALL);
+ assertEquals(-1, delegate2.describeInstallOrder);
+ assertEquals(-1, delegate2.instantiateInstallOrder);
+ assertEquals(-1, delegate2.configureInstallOrder);
+ assertEquals(-1, delegate2.createInstallOrder);
+ assertEquals(-1, delegate2.startInstallOrder);
+ assertEquals(-1, delegate2.installInstallOrder);
+ assertEquals(-1, delegate2.installUninstallOrder);
+ assertEquals(-1, delegate2.startUninstallOrder);
+ assertEquals(-1, delegate2.createUninstallOrder);
+ assertEquals(-1, delegate2.configureUninstallOrder);
+ assertEquals(-1, delegate2.instantiateUninstallOrder);
+ assertEquals(-1, delegate2.describeUninstallOrder);
+ TestDelegate delegate1 = getDelegate1();
+ assertInstall(delegate1);
+ assertEquals(1, delegate1.describeInstallOrder);
+ assertEquals(2, delegate1.instantiateInstallOrder);
+ assertEquals(3, delegate1.configureInstallOrder);
+ assertEquals(4, delegate1.createInstallOrder);
+ assertEquals(5, delegate1.startInstallOrder);
+ assertEquals(6, delegate1.installInstallOrder);
+ assertEquals(-1, delegate1.installUninstallOrder);
+ assertEquals(-1, delegate1.startUninstallOrder);
+ assertEquals(-1, delegate1.createUninstallOrder);
+ assertEquals(-1, delegate1.configureUninstallOrder);
+ assertEquals(-1, delegate1.instantiateUninstallOrder);
+ assertEquals(-1, delegate1.describeUninstallOrder);
+ assertContext(context2);
+ assertEquals(7, delegate2.describeInstallOrder);
+ assertEquals(8, delegate2.instantiateInstallOrder);
+ assertEquals(9, delegate2.configureInstallOrder);
+ assertEquals(10, delegate2.createInstallOrder);
+ assertEquals(11, delegate2.startInstallOrder);
+ assertEquals(12, delegate2.installInstallOrder);
+ assertEquals(-1, delegate2.installUninstallOrder);
+ assertEquals(-1, delegate2.startUninstallOrder);
+ assertEquals(-1, delegate2.createUninstallOrder);
+ assertEquals(-1, delegate2.configureUninstallOrder);
+ assertEquals(-1, delegate2.instantiateUninstallOrder);
+ assertEquals(-1, delegate2.describeUninstallOrder);
+ }
+
+ public void testDependencyReinstall() throws Throwable
+ {
+ TestDelegate delegate1 = getDelegate1();
+ ControllerContext context1 = assertInstall(delegate1);
+ assertEquals(1, delegate1.describeInstallOrder);
+ assertEquals(2, delegate1.instantiateInstallOrder);
+ assertEquals(3, delegate1.configureInstallOrder);
+ assertEquals(4, delegate1.createInstallOrder);
+ assertEquals(5, delegate1.startInstallOrder);
+ assertEquals(6, delegate1.installInstallOrder);
+ assertEquals(-1, delegate1.installUninstallOrder);
+ assertEquals(-1, delegate1.startUninstallOrder);
+ assertEquals(-1, delegate1.createUninstallOrder);
+ assertEquals(-1, delegate1.configureUninstallOrder);
+ assertEquals(-1, delegate1.instantiateUninstallOrder);
+ assertEquals(-1, delegate1.describeUninstallOrder);
+ OtherDelegate delegate2 = getDelegate2();
+ ControllerContext context2 = assertInstall(delegate2);
+ assertEquals(7, delegate2.describeInstallOrder);
+ assertEquals(8, delegate2.instantiateInstallOrder);
+ assertEquals(9, delegate2.configureInstallOrder);
+ assertEquals(10, delegate2.createInstallOrder);
+ assertEquals(11, delegate2.startInstallOrder);
+ assertEquals(12, delegate2.installInstallOrder);
+ assertEquals(-1, delegate2.installUninstallOrder);
+ assertEquals(-1, delegate2.startUninstallOrder);
+ assertEquals(-1, delegate2.createUninstallOrder);
+ assertEquals(-1, delegate2.configureUninstallOrder);
+ assertEquals(-1, delegate2.instantiateUninstallOrder);
+ assertEquals(-1, delegate2.describeUninstallOrder);
+ assertUninstall(context2);
+ assertEquals(7, delegate2.describeInstallOrder);
+ assertEquals(8, delegate2.instantiateInstallOrder);
+ assertEquals(9, delegate2.configureInstallOrder);
+ assertEquals(10, delegate2.createInstallOrder);
+ assertEquals(11, delegate2.startInstallOrder);
+ assertEquals(12, delegate2.installInstallOrder);
+ assertEquals(13, delegate2.installUninstallOrder);
+ assertEquals(14, delegate2.startUninstallOrder);
+ assertEquals(15, delegate2.createUninstallOrder);
+ assertEquals(16, delegate2.configureUninstallOrder);
+ assertEquals(17, delegate2.instantiateUninstallOrder);
+ assertEquals(18, delegate2.describeUninstallOrder);
+ assertContext("Name1", ControllerState.INSTALLED);
+ assertEquals(1, delegate1.describeInstallOrder);
+ assertEquals(2, delegate1.instantiateInstallOrder);
+ assertEquals(3, delegate1.configureInstallOrder);
+ assertEquals(4, delegate1.createInstallOrder);
+ assertEquals(5, delegate1.startInstallOrder);
+ assertEquals(6, delegate1.installInstallOrder);
+ assertEquals(-1, delegate1.installUninstallOrder);
+ assertEquals(-1, delegate1.startUninstallOrder);
+ assertEquals(-1, delegate1.createUninstallOrder);
+ assertEquals(-1, delegate1.configureUninstallOrder);
+ assertEquals(-1, delegate1.instantiateUninstallOrder);
+ assertEquals(-1, delegate1.describeUninstallOrder);
+ context2 = assertInstall(delegate2);
+ assertEquals(19, delegate2.describeInstallOrder);
+ assertEquals(20, delegate2.instantiateInstallOrder);
+ assertEquals(21, delegate2.configureInstallOrder);
+ assertEquals(22, delegate2.createInstallOrder);
+ assertEquals(23, delegate2.startInstallOrder);
+ assertEquals(24, delegate2.installInstallOrder);
+ assertEquals(13, delegate2.installUninstallOrder);
+ assertEquals(14, delegate2.startUninstallOrder);
+ assertEquals(15, delegate2.createUninstallOrder);
+ assertEquals(16, delegate2.configureUninstallOrder);
+ assertEquals(17, delegate2.instantiateUninstallOrder);
+ assertEquals(18, delegate2.describeUninstallOrder);
+ assertUninstall(context1);
+ assertEquals(1, delegate1.describeInstallOrder);
+ assertEquals(2, delegate1.instantiateInstallOrder);
+ assertEquals(3, delegate1.configureInstallOrder);
+ assertEquals(4, delegate1.createInstallOrder);
+ assertEquals(5, delegate1.startInstallOrder);
+ assertEquals(6, delegate1.installInstallOrder);
+ assertEquals(31, delegate1.installUninstallOrder);
+ assertEquals(32, delegate1.startUninstallOrder);
+ assertEquals(33, delegate1.createUninstallOrder);
+ assertEquals(34, delegate1.configureUninstallOrder);
+ assertEquals(35, delegate1.instantiateUninstallOrder);
+ assertEquals(36, delegate1.describeUninstallOrder);
+ assertContext("Name2", ControllerState.PRE_INSTALL);
+ assertEquals(19, delegate2.describeInstallOrder);
+ assertEquals(20, delegate2.instantiateInstallOrder);
+ assertEquals(21, delegate2.configureInstallOrder);
+ assertEquals(22, delegate2.createInstallOrder);
+ assertEquals(23, delegate2.startInstallOrder);
+ assertEquals(24, delegate2.installInstallOrder);
+ assertEquals(25, delegate2.installUninstallOrder);
+ assertEquals(26, delegate2.startUninstallOrder);
+ assertEquals(27, delegate2.createUninstallOrder);
+ assertEquals(28, delegate2.configureUninstallOrder);
+ assertEquals(29, delegate2.instantiateUninstallOrder);
+ assertEquals(30, delegate2.describeUninstallOrder);
+ assertInstall(delegate1);
+ assertEquals(37, delegate1.describeInstallOrder);
+ assertEquals(38, delegate1.instantiateInstallOrder);
+ assertEquals(39, delegate1.configureInstallOrder);
+ assertEquals(40, delegate1.createInstallOrder);
+ assertEquals(41, delegate1.startInstallOrder);
+ assertEquals(42, delegate1.installInstallOrder);
+ assertEquals(31, delegate1.installUninstallOrder);
+ assertEquals(32, delegate1.startUninstallOrder);
+ assertEquals(33, delegate1.createUninstallOrder);
+ assertEquals(34, delegate1.configureUninstallOrder);
+ assertEquals(35, delegate1.instantiateUninstallOrder);
+ assertEquals(36, delegate1.describeUninstallOrder);
+ assertContext("Name2", ControllerState.INSTALLED);
+ assertEquals(43, delegate2.describeInstallOrder);
+ assertEquals(44, delegate2.instantiateInstallOrder);
+ assertEquals(45, delegate2.configureInstallOrder);
+ assertEquals(46, delegate2.createInstallOrder);
+ assertEquals(47, delegate2.startInstallOrder);
+ assertEquals(48, delegate2.installInstallOrder);
+ assertEquals(25, delegate2.installUninstallOrder);
+ assertEquals(26, delegate2.startUninstallOrder);
+ assertEquals(27, delegate2.createUninstallOrder);
+ assertEquals(28, delegate2.configureUninstallOrder);
+ assertEquals(29, delegate2.instantiateUninstallOrder);
+ assertEquals(30, delegate2.describeUninstallOrder);
+ }
+
+ protected TestDelegate getDelegate1()
+ {
+ return new TestDelegate("Name1", "Alias1");
+ }
+
+ protected OtherDelegate getDelegate2()
+ {
+ OtherDelegate result = new OtherDelegate("Name2");
+ result.addDependency(new AbstractDependencyItem("Name2", "Alias1", ControllerState.DESCRIBED, ControllerState.INSTALLED));
+ return result;
+ }
+}
Added: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AliasUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AliasUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/AliasUnitTestCase.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -0,0 +1,93 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.dependency.controller.test;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+
+import junit.framework.Test;
+
+/**
+ * AliasUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class AliasUnitTestCase extends AbstractDependencyTest
+{
+ public static Test suite()
+ {
+ return suite(AliasUnitTestCase.class);
+ }
+
+ public AliasUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testSimpleAlias() throws Throwable
+ {
+ ControllerContext original = assertCreateInstall("Name1", "Alias1");
+ try
+ {
+ ControllerContext ctx = assertContext("Alias1", ControllerState.INSTALLED);
+ assertEquals("Name1", ctx.getName());
+ }
+ finally
+ {
+ try
+ {
+ assertUninstall(original);
+ }
+ finally
+ {
+ assertNoContext("Alias1");
+ }
+ }
+ }
+
+ public void testAliasAlreadyInstalled() throws Throwable
+ {
+ ControllerContext alreadyDone = assertCreateInstall("AlreadyDone");
+ try
+ {
+ ControllerContext broken = createControllerContext("Name1", "AlreadyDone");
+ try
+ {
+ install(broken);
+ }
+ catch (Throwable t)
+ {
+ checkThrowable(IllegalStateException.class, t);
+ }
+ assertNoContext("Name1");
+
+ ControllerContext notAlias = assertContext("AlreadyDone", ControllerState.INSTALLED);
+ assertEquals("AlreadyDone", notAlias.getName());
+ }
+ finally
+ {
+ assertUninstall(alreadyDone);
+ }
+ assertCreateInstall("Name1", "AlreadyDone");
+ }
+}
Modified: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ControllerTestSuite.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ControllerTestSuite.java 2007-04-03 15:02:42 UTC (rev 62038)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ControllerTestSuite.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -53,6 +53,7 @@
suite.addTest(RecursiveControllerActionTestCase.suite());
suite.addTest(ErrorControllerActionTestCase.suite());
suite.addTest(CrossContextDependencyBadObjectNameTestCase.suite());
+ suite.addTest(AliasDependencyTestCase.suite());
return suite;
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ScopedKernelController.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ScopedKernelController.java 2007-04-03 15:02:42 UTC (rev 62038)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ScopedKernelController.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -91,13 +91,13 @@
public void addControllerContext(ControllerContext context)
{
underlyingController.removeControllerContext(context);
- registerControllerContext(context.getName(), context);
+ registerControllerContext(context);
}
// TODO See comments on super implementation
public void removeControllerContext(ControllerContext context)
{
- unregisterControllerContext(context.getName());
+ unregisterControllerContext(context);
underlyingController.addControllerContext(context);
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/registry/AbstractKernelRegistryEntry.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/registry/AbstractKernelRegistryEntry.java 2007-04-03 15:02:42 UTC (rev 62038)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/registry/AbstractKernelRegistryEntry.java 2007-04-03 15:03:28 UTC (rev 62039)
@@ -21,6 +21,8 @@
*/
package org.jboss.kernel.plugins.registry;
+import java.util.Set;
+
import org.jboss.dependency.spi.Controller;
import org.jboss.dependency.spi.ControllerMode;
import org.jboss.dependency.spi.ControllerState;
@@ -77,6 +79,11 @@
flushJBossObjectCache();
}
+ public Set<Object> getAliases()
+ {
+ return null;
+ }
+
public Object getTarget()
{
return target;
More information about the jboss-cvs-commits
mailing list