[jboss-cvs] JBossAS SVN: r63940 - in projects/microcontainer/trunk: dependency/src/main/org/jboss/dependency/spi and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jul 10 09:54:05 EDT 2007
Author: alesj
Date: 2007-07-10 09:54:04 -0400 (Tue, 10 Jul 2007)
New Revision: 63940
Modified:
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/Controller.java
projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/deployer/kernel/DeploymentAliasMetaDataDeployer.java
projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/AliasDeployerUnitTestCase.java
Log:
Alias as true dependency.
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-07-10 12:39:09 UTC (rev 63939)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java 2007-07-10 13:54:04 UTC (rev 63940)
@@ -27,6 +27,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
@@ -35,11 +36,13 @@
import org.jboss.dependency.spi.CallbackItem;
import org.jboss.dependency.spi.Controller;
import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerContextActions;
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.dependency.spi.LifecycleCallbackItem;
+import org.jboss.dependency.plugins.action.ControllerContextAction;
import org.jboss.util.JBossObject;
/**
@@ -389,49 +392,17 @@
return uninstall(name, 0);
}
- public void addAlias(Object alias, Object original)
+ public void addAlias(Object alias, Object original) throws Throwable
{
- Object jmxAlias = JMXObjectNameFix.needsAnAlias(alias);
- if (jmxAlias != null)
- alias = jmxAlias;
-
- Object jmxOriginal = JMXObjectNameFix.needsAnAlias(original);
- if (jmxOriginal != null)
- original = jmxOriginal;
-
- lockWrite();
- try
- {
- ControllerContext context = getRegisteredControllerContext(original, true);
- // todo - do we need to add it to context.aliases?
- registerControllerContext(alias, context);
- if (log.isTraceEnabled())
- log.trace("Added alias " + alias + " for context " + context);
- // try to resolve existing beans with new alias
- resolveContexts(log.isTraceEnabled());
- }
- finally
- {
- unlockWrite();
- }
+ Map<ControllerState, ControllerContextAction> map = new HashMap<ControllerState, ControllerContextAction>();
+ map.put(ControllerState.INSTALLED, new AliasControllerContextAction());
+ ControllerContextActions actions = new AbstractControllerContextActions(map);
+ install(new AliasControllerContext(alias, original, actions));
}
public void removeAlias(Object alias)
{
- lockWrite();
- try
- {
- Object jmxAlias = JMXObjectNameFix.needsAnAlias(alias);
- if (jmxAlias != null)
- alias = jmxAlias;
- unregisterControllerContext(alias);
- if (log.isTraceEnabled())
- log.trace("Removed alias " + alias);
- }
- finally
- {
- unlockWrite();
- }
+ uninstall(alias + "_Alias");
}
// todo - some better way to find context's by name
@@ -1538,4 +1509,84 @@
throw new IllegalArgumentException("Null name");
allContexts.remove(name);
}
+
+ // --- alias dependency
+
+ private class AliasControllerContext extends AbstractControllerContext
+ {
+ private Object alias;
+ private Object original;
+
+ public AliasControllerContext(Object alias, Object original, ControllerContextActions actions)
+ {
+ super(alias + "_Alias", actions);
+ this.alias = alias;
+ this.original = original;
+ DependencyInfo info = getDependencyInfo();
+ info.addIDependOn(new AbstractDependencyItem(alias, original, ControllerState.INSTALLED, ControllerState.INSTANTIATED));
+ }
+
+ public Object getAlias()
+ {
+ return alias;
+ }
+
+ public Object getOriginal()
+ {
+ return original;
+ }
+ }
+
+ private class AliasControllerContextAction implements ControllerContextAction
+ {
+ public void install(ControllerContext context) throws Throwable
+ {
+ AliasControllerContext acc = (AliasControllerContext)context;
+ Object alias = acc.getAlias();
+ Object jmxAlias = JMXObjectNameFix.needsAnAlias(alias);
+ if (jmxAlias != null)
+ alias = jmxAlias;
+
+ Object original = acc.getOriginal();
+ Object jmxOriginal = JMXObjectNameFix.needsAnAlias(original);
+ if (jmxOriginal != null)
+ original = jmxOriginal;
+
+ lockWrite();
+ try
+ {
+ ControllerContext lookup = getRegisteredControllerContext(original, true);
+ // todo - do we need to add it to context.aliases?
+ registerControllerContext(alias, lookup);
+ if (log.isTraceEnabled())
+ log.trace("Added alias " + alias + " for context " + context);
+ // try to resolve existing beans with new alias
+ resolveContexts(log.isTraceEnabled());
+ }
+ finally
+ {
+ unlockWrite();
+ }
+ }
+
+ public void uninstall(ControllerContext context)
+ {
+ lockWrite();
+ try
+ {
+ AliasControllerContext acc = (AliasControllerContext)context;
+ Object alias = acc.getAlias();
+ Object jmxAlias = JMXObjectNameFix.needsAnAlias(alias);
+ if (jmxAlias != null)
+ alias = jmxAlias;
+ unregisterControllerContext(alias);
+ if (log.isTraceEnabled())
+ log.trace("Removed alias " + alias);
+ }
+ finally
+ {
+ unlockWrite();
+ }
+ }
+ }
}
Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/Controller.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/Controller.java 2007-07-10 12:39:09 UTC (rev 63939)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/Controller.java 2007-07-10 13:54:04 UTC (rev 63940)
@@ -77,17 +77,14 @@
*
* @param alias the alias to add
* @param original original name
- * @throws IllegalArgumentException for null parameters
- * @throws IllegalStateException if the context must exist is true and the context does not exist
- * if the context is already registered with that name
+ * @throws Throwable for any error
*/
- void addAlias(Object alias, Object original);
+ void addAlias(Object alias, Object original) throws Throwable;
/**
* Remove alias.
*
* @param alias alias to remove
- * @throws IllegalArgumentException for null parameters
*/
void removeAlias(Object alias);
Modified: projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/deployer/kernel/DeploymentAliasMetaDataDeployer.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/deployer/kernel/DeploymentAliasMetaDataDeployer.java 2007-07-10 12:39:09 UTC (rev 63939)
+++ projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/deployer/kernel/DeploymentAliasMetaDataDeployer.java 2007-07-10 13:54:04 UTC (rev 63940)
@@ -58,7 +58,14 @@
@Override
public void deploy(DeploymentUnit unit, NamedAliasMetaData deployment) throws DeploymentException
{
- controller.addAlias(deployment.getAliasValue(), deployment.getName());
+ try
+ {
+ controller.addAlias(deployment.getAliasValue(), deployment.getName());
+ }
+ catch (Throwable t)
+ {
+ throw DeploymentException.rethrowAsDeploymentException("Error deploying alias: " + deployment.getName(), t);
+ }
}
@Override
Modified: projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/AliasDeployerUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/AliasDeployerUnitTestCase.java 2007-07-10 12:39:09 UTC (rev 63939)
+++ projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/AliasDeployerUnitTestCase.java 2007-07-10 13:54:04 UTC (rev 63940)
@@ -23,15 +23,14 @@
import junit.framework.Test;
import junit.framework.TestSuite;
+import org.jboss.dependency.spi.ControllerState;
import org.jboss.deployers.vfs.deployer.kernel.AliasDeploymentDeployer;
import org.jboss.deployers.vfs.deployer.kernel.BeanDeployer;
import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer;
import org.jboss.deployers.vfs.deployer.kernel.DeploymentAliasMetaDataDeployer;
import org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer;
import org.jboss.deployers.vfs.spi.client.VFSDeployment;
-import org.jboss.deployers.spi.DeploymentState;
import org.jboss.kernel.Kernel;
-import org.jboss.dependency.spi.ControllerState;
/**
* AliasDeployerUnitTestCase.
@@ -100,7 +99,8 @@
public void testAliasMissing() throws Exception
{
VFSDeployment context = createDeployment("/alias", "toplevel/aliases-beans.xml");
- assertDeploy(context, DeploymentState.ERROR);
+ assertDeploy(context);
+ assertNotNull(controller.getContext("Injectee", ControllerState.INSTANTIATED));
assertUndeploy(context);
assertNull(controller.getContext("Test", null));
}
@@ -122,7 +122,7 @@
assertNull(controller.getContext("Test", null));
}
- public void testAliasDependency() throws Exception
+ public void testAliasDemand() throws Exception
{
VFSDeployment context = createDeployment("/alias", "toplevel/tomcat-beans.xml");
assertDeploy(context);
@@ -141,4 +141,26 @@
assertNull(controller.getContext("JBossWeb", null));
assertNull(controller.getContext("ServiceX", null));
}
+
+ public void testAliasDependency() throws Exception
+ {
+ VFSDeployment alias = createDeployment("/alias", "toplevel/servicex-beans.xml");
+ assertDeploy(alias);
+ assertNotNull(controller.getContext("ServiceX", ControllerState.CONFIGURED));
+
+ VFSDeployment context = createDeployment("/alias", "toplevel/tomcat-beans.xml");
+ assertDeploy(context);
+ assertNotNull(controller.getInstalledContext("Tomcat"));
+ assertNotNull(controller.getInstalledContext("JBossWeb"));
+ assertNotNull(controller.getInstalledContext("ServiceX"));
+
+ assertUndeploy(context);
+ assertNull(controller.getContext("Tomcat", null));
+ assertNull(controller.getContext("ServiceX", ControllerState.CREATE));
+ assertNotNull(controller.getContext("ServiceX", ControllerState.CONFIGURED));
+
+ assertUndeploy(alias);
+ assertNull(controller.getContext("JBossWeb", null));
+ assertNull(controller.getContext("ServiceX", null));
+ }
}
More information about the jboss-cvs-commits
mailing list