[jboss-cvs] JBossAS SVN: r69987 - in projects/microcontainer/trunk/kernel/src: main/org/jboss/beans/metadata/plugins and 13 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Feb 20 18:53:26 EST 2008
Author: alesj
Date: 2008-02-20 18:53:25 -0500 (Wed, 20 Feb 2008)
New Revision: 69987
Added:
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallsAwareAction.java
projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/InstallDependencyXMLTestCase2.xml
projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyXMLTestCase1.xml
projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/InstallWithWhenRequired.xml
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/InstallWhenRequiredErrorTestCase.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/AnnotatedSimpleBeanInstallsAware.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/ExternalInstallWithStateSimpleBeanImpl.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/SimpleBeanInstallsAware.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/StateAwareBean.java
Modified:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/ExternalInstall.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/FromContext.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/InstallMethod.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/UninstallMethod.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ExternalInstallationAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/InstallMethodParameterAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/UninstallMethodParameterAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractConfigureAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/CreateDestroyLifecycleAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/LifecycleAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/PreInstallAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/StartStopLifecycleAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/InstallHandler.java
projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd
projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/FromContextXMLTestCase0.xml
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/ControllerTestSuite.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/InstallErrorTestCase.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/SimpleBeanRepository.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/AbstractKernelDependencyTest.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/FromContextAnnotationTestCase.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/FromContextTestCase.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallDependencyAnnotationTestCase.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallDependencyTestCase.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyAnnotationTestCase.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyTestCase.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/NameAwareBean.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallJaxbTestCase.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallTestCase.java
Log:
JBMICROCONT-242; enable installs/uninstalls for any state
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/ExternalInstall.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/ExternalInstall.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/ExternalInstall.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -58,6 +58,13 @@
String dependantState() default "";
/**
+ * Get the when required state.
+ *
+ * @return the when required state
+ */
+ String whenRequired() default "";
+
+ /**
* Get parameters.
*
* @return the parameters
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/FromContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/FromContext.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/FromContext.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -35,6 +35,7 @@
METADATA("metadata"),
BEANINFO("beaninfo"),
SCOPE("scope"),
+ STATE("state"),
ID("id"),
CONTEXT("context");
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/InstallMethod.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/InstallMethod.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/InstallMethod.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -41,4 +41,11 @@
* @return the dependant state
*/
String dependantState() default "";
+
+ /**
+ * Get when required state.
+ *
+ * @return the when required state
+ */
+ String whenRequired() default "";
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/UninstallMethod.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/UninstallMethod.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/api/annotations/UninstallMethod.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -41,4 +41,11 @@
* @return the dependant state
*/
String dependantState() default "";
+
+ /**
+ * Get when required state.
+ *
+ * @return the when required state
+ */
+ String whenRequired() default "";
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -197,7 +197,8 @@
public Object getUnderlyingValue()
{
Object original = super.getUnderlyingValue();
- return (fromContext != null && original == null) ? context.getName() : original;
+ // might be used for internal compare, in that case context will still be null
+ return (fromContext != null && original == null) ? (context != null ? context.getName() : null) : original;
}
public void initialVisit(MetaDataVisitor visitor)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -88,9 +88,11 @@
return state;
}
+ @XmlAttribute(name="whenRequired")
public void setState(ControllerState state)
{
this.state = state;
+ flushJBossObjectCache();
}
public String getMethodName()
@@ -190,6 +192,7 @@
{
if (methodName != null)
buffer.append("method=").append(methodName);
+ buffer.append(" whenRequired=").append(state);
buffer.append(" parameters=");
JBossObject.list(buffer, parameters);
buffer.append(" ");
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContext.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -32,6 +32,7 @@
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.beans.info.spi.helpers.UnmodifiableBeanInfo;
import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.helpers.UnmodifiableControllerContext;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.kernel.spi.dependency.helpers.UnmodifiableKernelControllerContext;
@@ -75,6 +76,9 @@
/** scope */
public static final FromContext<? extends ControllerContext> SCOPE = new ScopeFromContext("scope");
+ /** state */
+ public static final FromContext<? extends ControllerContext> STATE = new StateFromContext("state");
+
/** id */
public static final FromContext<? extends ControllerContext> ID = new IdFromContext("id");
@@ -114,6 +118,8 @@
return BEANINFO;
else if (SCOPE.getFromString().equalsIgnoreCase(fromString))
return SCOPE;
+ else if (STATE.getFromString().equalsIgnoreCase(fromString))
+ return STATE;
else if (ID.getFromString().equalsIgnoreCase(fromString))
return ID;
else if (CONTEXT.getFromString().equalsIgnoreCase(fromString))
@@ -277,6 +283,21 @@
}
}
+ private static class StateFromContext extends FromContext<ControllerContext>
+ {
+ private static final long serialVersionUID = 1L;
+
+ public StateFromContext(String fromString)
+ {
+ super(fromString);
+ }
+
+ public ControllerState internalExecute(ControllerContext context)
+ {
+ return context.getState();
+ }
+ }
+
private static class IdFromContext extends FromContext<ControllerContext>
{
private static final long serialVersionUID = 1L;
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -388,21 +388,25 @@
return this;
}
- public ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean, ControllerState state)
+ public ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean, ControllerState state, ControllerState whenRequired)
{
AbstractInstallMetaData install = (AbstractInstallMetaData) installBuilder.createLifecycleMetaData(methodName);
install.setBean(bean);
if (state != null)
install.setDependentState(state);
+ if (whenRequired != null)
+ install.setState(whenRequired);
return new ParameterMetaDataBuilderImpl<AbstractInstallMetaData>(install);
}
- public ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean, ControllerState state)
+ public ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean, ControllerState state, ControllerState whenRequired)
{
AbstractInstallMetaData uninstall = (AbstractInstallMetaData) uninstallBuilder.createLifecycleMetaData(methodName);
uninstall.setBean(bean);
if (state != null)
uninstall.setDependentState(state);
+ if (whenRequired != null)
+ uninstall.setState(whenRequired);
return new ParameterMetaDataBuilderImpl<AbstractInstallMetaData>(uninstall);
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -596,12 +596,26 @@
*
* @param methodName the method name
* @param bean the bean name
- * @param state the state when to install
+ * @param state the state of the bean
* @return the builder
*/
public BeanMetaDataBuilder addInstallWithThis(String methodName, String bean, ControllerState state)
{
- ParameterMetaDataBuilder parameters = addInstallWithParameters(methodName, bean, state);
+ return addInstallWithThis(methodName, bean, state, null);
+ }
+
+ /**
+ * Add an install with a this parameter
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param state the state of the bean
+ * @param whenRequired the state when to install
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstallWithThis(String methodName, String bean, ControllerState state, ControllerState whenRequired)
+ {
+ ParameterMetaDataBuilder parameters = addInstallWithParameters(methodName, bean, state, whenRequired);
parameters.addParameterMetaData(null, createThis());
return this;
}
@@ -746,12 +760,26 @@
*
* @param methodName the method name
* @param bean the bean name
- * @param state the state when to install
+ * @param state the state of the bean
* @return the parameter builder
*/
- public abstract ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean, ControllerState state);
+ public ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean, ControllerState state)
+ {
+ return addInstallWithParameters(methodName, bean, state, null);
+ }
/**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param state the state of the bean
+ * @param whenRequired the state when to install
+ * @return the parameter builder
+ */
+ public abstract ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean, ControllerState state, ControllerState whenRequired);
+
+ /**
* Add an uninstall
*
* @param methodName the method name
@@ -862,7 +890,21 @@
*/
public BeanMetaDataBuilder addUninstallWithThis(String methodName, String bean, ControllerState state)
{
- ParameterMetaDataBuilder parameters = addUninstallWithParameters(methodName, bean, state);
+ return addUninstallWithThis(methodName, bean, state, null);
+ }
+
+ /**
+ * Add an uninstall with a this parameter
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param state the state of the bean
+ * @param whenRequired the state when to uninstall
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstallWithThis(String methodName, String bean, ControllerState state, ControllerState whenRequired)
+ {
+ ParameterMetaDataBuilder parameters = addUninstallWithParameters(methodName, bean, state, whenRequired);
parameters.addParameterMetaData(null, createThis());
return this;
}
@@ -1007,12 +1049,26 @@
*
* @param methodName the method name
* @param bean the bean name
- * @param state the state when to install
+ * @param state the state of the bean
* @return the parameter builder
*/
- public abstract ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean, ControllerState state);
+ public ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean, ControllerState state)
+ {
+ return addUninstallWithParameters(methodName, bean, state, null);
+ }
/**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param state the state of the bean
+ * @param whenRequired the state when to uninstall
+ * @return the parameter builder
+ */
+ public abstract ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean, ControllerState state, ControllerState whenRequired);
+
+ /**
* Create a null value
*
* @return the null value
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ExternalInstallationAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ExternalInstallationAnnotationPlugin.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ExternalInstallationAnnotationPlugin.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -94,6 +94,8 @@
AbstractInstallMetaData installMetaData = new AbstractInstallMetaData();
installMetaData.setBean(install.bean());
installMetaData.setMethodName(install.method());
+ if (isAttributePresent(install.whenRequired()))
+ installMetaData.setState(new ControllerState(install.whenRequired()));
if (isAttributePresent(install.dependantState()))
installMetaData.setDependentState(new ControllerState(install.dependantState()));
for (Value value : install.parameters())
@@ -160,6 +162,12 @@
if (notEqual(first.getMethodName(), second.getMethodName()))
return true;
+ if (notEqual(first.getState(), second.getState()))
+ return true;
+
+ if (notEqual(first.getDependentState(), second.getDependentState()))
+ return true;
+
List<ParameterMetaData> fstParameters = first.getParameters();
List<ParameterMetaData> sndParameters = second.getParameters();
int fstSize = fstParameters != null ? fstParameters.size() : 0;
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/InstallMethodParameterAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/InstallMethodParameterAnnotationPlugin.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/InstallMethodParameterAnnotationPlugin.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -54,6 +54,8 @@
{
AbstractInstallMetaData install = new AbstractInstallMetaData();
install.setMethodName(info.getName());
+ if (isAttributePresent(annotation.whenRequired()))
+ install.setState(new ControllerState(annotation.whenRequired()));
if (isAttributePresent(annotation.dependantState()))
install.setDependentState(new ControllerState(annotation.dependantState()));
return install;
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/UninstallMethodParameterAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/UninstallMethodParameterAnnotationPlugin.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/UninstallMethodParameterAnnotationPlugin.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -54,6 +54,8 @@
{
AbstractInstallMetaData uninstall = new AbstractInstallMetaData();
uninstall.setMethodName(info.getName());
+ if (isAttributePresent(annotation.whenRequired()))
+ uninstall.setState(new ControllerState(annotation.whenRequired()));
if (isAttributePresent(annotation.dependantState()))
uninstall.setDependentState(new ControllerState(annotation.dependantState()));
return uninstall;
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractConfigureAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractConfigureAction.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractConfigureAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -29,13 +29,14 @@
import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
import org.jboss.kernel.spi.dependency.StartKernelControllerContextAware;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.dependency.spi.ControllerState;
/**
* AbstractConfigureAction.
*
* @author <a href="ales.justin at jboss.com">Ales Justin</a>
*/
-public abstract class AbstractConfigureAction extends KernelControllerContextAction
+public abstract class AbstractConfigureAction extends InstallsAwareAction
{
protected Class<? extends KernelControllerContextAware> getActionAwareInterface()
{
@@ -48,6 +49,7 @@
/**
* Execute KCCA install.
+ *
* @param context the controller context
* @throws Throwable for any erroor
*/
@@ -97,4 +99,9 @@
!InstantiateKernelControllerContextAware.class.isAssignableFrom(clazz) &&
!StartKernelControllerContextAware.class.isAssignableFrom(clazz));
}
+
+ protected ControllerState getState()
+ {
+ return ControllerState.CONFIGURED;
+ }
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/CreateDestroyLifecycleAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/CreateDestroyLifecycleAction.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/CreateDestroyLifecycleAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -25,6 +25,7 @@
import org.jboss.beans.metadata.spi.LifecycleMetaData;
import org.jboss.kernel.spi.dependency.CreateKernelControllerContextAware;
import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
+import org.jboss.dependency.spi.ControllerState;
/**
* CreateDestroyLifecycleAction.
@@ -59,4 +60,9 @@
{
return "destroy";
}
+
+ protected ControllerState getState()
+ {
+ return ControllerState.CREATE;
+ }
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -31,6 +31,7 @@
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
import org.jboss.metadata.spi.MetaData;
+import org.jboss.dependency.spi.ControllerState;
/**
* DescribeAction.
@@ -38,7 +39,7 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision$
*/
-public class DescribeAction extends KernelControllerContextAction
+public class DescribeAction extends InstallsAwareAction
{
@SuppressWarnings("unchecked")
protected void installActionInternal(KernelControllerContext context) throws Throwable
@@ -97,4 +98,9 @@
BeanAnnotationAdapterFactory factory = BeanAnnotationAdapterFactory.getInstance();
return factory.getBeanAnnotationAdapter();
}
+
+ protected ControllerState getState()
+ {
+ return ControllerState.DESCRIBED;
+ }
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallAction.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -21,14 +21,9 @@
*/
package org.jboss.kernel.plugins.dependency;
-import java.util.List;
-
import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.InstallMetaData;
-import org.jboss.dependency.spi.ControllerContext;
-import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
+import org.jboss.dependency.spi.ControllerState;
import org.jboss.kernel.Kernel;
-import org.jboss.kernel.plugins.dispatch.InvokeDispatchHelper;
import org.jboss.kernel.spi.config.KernelConfigurator;
import org.jboss.kernel.spi.dependency.InstallKernelControllerContextAware;
import org.jboss.kernel.spi.dependency.KernelController;
@@ -42,7 +37,7 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision$
*/
-public class InstallAction extends KernelControllerContextAction
+public class InstallAction extends InstallsAwareAction
{
protected void installActionInternal(KernelControllerContext context) throws Throwable
{
@@ -57,54 +52,6 @@
try
{
controller.addSupplies(context);
- try
- {
- List<InstallMetaData> installs = metaData.getInstalls();
- if (installs != null)
- {
- for (InstallMetaData install : installs)
- {
- ControllerContext target = context;
- if (install.getBean() != null)
- target = controller.getContext(install.getBean(), install.getDependentState());
- if (target instanceof InvokeDispatchContext)
- {
- ClassLoader previous = SecurityActions.setContextClassLoader(context);
- try
- {
- InvokeDispatchHelper.invoke(
- configurator,
- target.getTarget(),
- (InvokeDispatchContext)target,
- install.getMethodName(),
- install.getParameters()
- );
- }
- finally
- {
- SecurityActions.resetContextClassLoader(previous);
- }
- }
- else
- {
- throw new IllegalArgumentException("Cannot install, context " + target + " does not implement InvokeDispatchContext");
- }
- }
- }
- }
- catch (Throwable t)
- {
- doUninstalls(context);
- try
- {
- controller.removeSupplies(context);
- }
- catch (Throwable x)
- {
- log.warn("Ignoring error reversing supplies, throwing original error " + name, x);
- }
- throw t;
- }
}
catch (Throwable t)
{
@@ -127,7 +74,6 @@
protected void uninstallActionInternal(KernelControllerContext context)
{
- doUninstalls(context);
KernelController controller = (KernelController) context.getController();
Kernel kernel = controller.getKernel();
KernelRegistry registry = kernel.getRegistry();
@@ -152,58 +98,8 @@
}
}
- protected void doUninstalls(KernelControllerContext context)
+ protected ControllerState getState()
{
- KernelController controller = (KernelController) context.getController();
- Kernel kernel = controller.getKernel();
- KernelConfigurator configurator = kernel.getConfigurator();
- BeanMetaData metaData = context.getBeanMetaData();
-
- List<InstallMetaData> uninstalls = metaData.getUninstalls();
- if (uninstalls != null)
- {
- for (int i = uninstalls.size()-1; i >= 0; --i)
- {
- InstallMetaData uninstall = uninstalls.get(i);
- ControllerContext target = context;
- if (uninstall.getBean() != null)
- {
- target = controller.getContext(uninstall.getBean(), uninstall.getDependentState());
- if (target == null)
- {
- log.warn("Ignoring uninstall action on target in incorrect state " + uninstall.getBean());
- continue;
- }
- }
- if (target instanceof InvokeDispatchContext)
- {
- ClassLoader previous = null;
- try
- {
- previous = SecurityActions.setContextClassLoader(context);
- InvokeDispatchHelper.invoke(
- configurator,
- target.getTarget(),
- (InvokeDispatchContext)target,
- uninstall.getMethodName(),
- uninstall.getParameters()
- );
- }
- catch (Throwable t)
- {
- log.warn("Ignoring uninstall action on target " + uninstall, t);
- }
- finally
- {
- if (previous != null)
- SecurityActions.resetContextClassLoader(previous);
- }
- }
- else
- {
- log.warn("Cannot uninstall, context " + target + " does not implement InvokeDispatchContext for " + uninstall.getBean());
- }
- }
- }
+ return ControllerState.INSTALLED;
}
}
\ No newline at end of file
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallsAwareAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallsAwareAction.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstallsAwareAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -0,0 +1,221 @@
+/*
+* 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.kernel.plugins.dependency;
+
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.InstallMetaData;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.dispatch.InvokeDispatchHelper;
+import org.jboss.kernel.spi.config.KernelConfigurator;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+
+/**
+ * Installs/Uninstalls aware action.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public abstract class InstallsAwareAction extends KernelControllerContextAction
+{
+ /**
+ * Get the action's state.
+ *
+ * @return get the action's state
+ */
+ protected abstract ControllerState getState();
+
+ @Override
+ public void installAction(KernelControllerContext context) throws Throwable
+ {
+ installActionInternal(context);
+ doInstalls(context);
+ setKernelControllerContext(context);
+ }
+
+ /**
+ * Execute the installs.
+ *
+ * @param context the context
+ * @throws Throwable for any error
+ */
+ protected void doInstalls(KernelControllerContext context) throws Throwable
+ {
+ KernelController controller = (KernelController)context.getController();
+ Kernel kernel = controller.getKernel();
+ KernelConfigurator configurator = kernel.getConfigurator();
+ BeanMetaData metaData = context.getBeanMetaData();
+
+ List<InstallMetaData> installs = metaData.getInstalls();
+ if (installs != null && installs.isEmpty() == false)
+ {
+ int index = 0;
+ try
+ {
+ int size = installs.size();
+ for (; index < size; index++)
+ {
+ InstallMetaData install = installs.get(index);
+ if (getState().equals(install.getState()))
+ {
+ ControllerContext target = context;
+ if (install.getBean() != null)
+ target = controller.getContext(install.getBean(), install.getDependentState());
+ if (target instanceof InvokeDispatchContext)
+ {
+ ClassLoader previous = SecurityActions.setContextClassLoader(context);
+ try
+ {
+ InvokeDispatchHelper.invoke(
+ configurator,
+ target.getTarget(),
+ (InvokeDispatchContext)target,
+ install.getMethodName(),
+ install.getParameters()
+ );
+ }
+ finally
+ {
+ SecurityActions.resetContextClassLoader(previous);
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot install, context " + target + " does not implement InvokeDispatchContext");
+ }
+ }
+ }
+ }
+ catch (Throwable t)
+ {
+ doUninstalls(context);
+ undoInstallAction(context);
+ throw t;
+ }
+ }
+ }
+
+ /**
+ * Undo the steps from install action
+ * in the case of failed installs.
+ * Usually this is what uninstallActionInternal does.
+ *
+ * @param context the context
+ */
+ protected void undoInstallAction(KernelControllerContext context)
+ {
+ uninstallActionInternal(context);
+ }
+
+ @Override
+ public void uninstallAction(KernelControllerContext context)
+ {
+ unsetKernelControllerContext(context);
+ doUninstalls(context);
+ uninstallActionInternal(context);
+ }
+
+ /**
+ * Execute uninstalls
+ *
+ * @param context the context
+ */
+ protected void doUninstalls(KernelControllerContext context)
+ {
+ BeanMetaData beanMetaData = context.getBeanMetaData();
+ List<InstallMetaData> uninstalls = beanMetaData.getUninstalls();
+ int size = uninstalls != null ? uninstalls.size() : 0;
+ doUninstalls(context, size - 1);
+ }
+
+ /**
+ * Execute uninstalls from the index.
+ *
+ * Leaving this method here in case
+ * someone wants to use 'symetric' approach
+ * to uninstalling installs.
+ *
+ * @param context the context
+ * @param index the current index
+ */
+ protected void doUninstalls(KernelControllerContext context, int index)
+ {
+ KernelController controller = (KernelController) context.getController();
+ Kernel kernel = controller.getKernel();
+ KernelConfigurator configurator = kernel.getConfigurator();
+ BeanMetaData metaData = context.getBeanMetaData();
+
+ List<InstallMetaData> uninstalls = metaData.getUninstalls();
+ if (uninstalls != null && uninstalls.isEmpty() == false)
+ {
+ for (int i = index; i >= 0; --i)
+ {
+ InstallMetaData uninstall = uninstalls.get(i);
+ if (getState().equals(uninstall.getState()))
+ {
+ ControllerContext target = context;
+ if (uninstall.getBean() != null)
+ {
+ target = controller.getContext(uninstall.getBean(), uninstall.getDependentState());
+ if (target == null)
+ {
+ log.warn("Ignoring uninstall action on target in incorrect state " + uninstall.getBean());
+ continue;
+ }
+ }
+ if (target instanceof InvokeDispatchContext)
+ {
+ ClassLoader previous = null;
+ try
+ {
+ previous = SecurityActions.setContextClassLoader(context);
+ InvokeDispatchHelper.invoke(
+ configurator,
+ target.getTarget(),
+ (InvokeDispatchContext)target,
+ uninstall.getMethodName(),
+ uninstall.getParameters()
+ );
+ }
+ catch (Throwable t)
+ {
+ log.warn("Ignoring uninstall action on target " + uninstall, t);
+ }
+ finally
+ {
+ if (previous != null)
+ SecurityActions.resetContextClassLoader(previous);
+ }
+ }
+ else
+ {
+ log.warn("Cannot uninstall, context " + target + " does not implement InvokeDispatchContext for " + uninstall.getBean());
+ }
+ }
+ }
+ }
+ }
+}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -23,14 +23,15 @@
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.DependencyInfo;
import org.jboss.joinpoint.spi.Joinpoint;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.spi.config.KernelConfigurator;
-import org.jboss.kernel.spi.dependency.InstantiateKernelControllerContextAware;
import org.jboss.kernel.spi.dependency.KernelController;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
+import org.jboss.kernel.spi.dependency.InstantiateKernelControllerContextAware;
/**
* InstantiateAction.
@@ -38,7 +39,7 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision$
*/
-public class InstantiateAction extends KernelControllerContextAction
+public class InstantiateAction extends InstallsAwareAction
{
protected void installActionInternal(KernelControllerContext context) throws Throwable
{
@@ -74,11 +75,6 @@
}
}
- protected Class<? extends KernelControllerContextAware> getActionAwareInterface()
- {
- return InstantiateKernelControllerContextAware.class;
- }
-
protected void uninstallActionInternal(KernelControllerContext context)
{
try
@@ -105,4 +101,14 @@
context.setTarget(null);
}
}
+
+ protected ControllerState getState()
+ {
+ return ControllerState.INSTANTIATED;
+ }
+
+ protected Class<? extends KernelControllerContextAware> getActionAwareInterface()
+ {
+ return InstantiateKernelControllerContextAware.class;
+ }
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -135,7 +135,13 @@
setKernelControllerContext(context);
}
- private void setKernelControllerContext(KernelControllerContext context) throws Throwable
+ /**
+ * Set the context.
+ *
+ * @param context the context
+ * @throws Throwable for any error
+ */
+ protected void setKernelControllerContext(KernelControllerContext context) throws Throwable
{
Object target = context.getTarget();
if (target != null)
@@ -151,10 +157,21 @@
}
}
+ /**
+ * Execute install action.
+ *
+ * @param context the context
+ * @throws Throwable for any error
+ */
protected void installActionInternal(KernelControllerContext context) throws Throwable
{
}
+ /**
+ * Get the action aware interface.
+ *
+ * @return the action aware interface
+ */
protected Class<? extends KernelControllerContextAware> getActionAwareInterface()
{
return null;
@@ -166,11 +183,21 @@
uninstallActionInternal(context);
}
+ /**
+ * Execute uninstall action.
+ *
+ * @param context the context
+ */
protected void uninstallActionInternal(KernelControllerContext context)
{
}
- private void unsetKernelControllerContext(KernelControllerContext context)
+ /**
+ * Unset the context.
+ *
+ * @param context the context
+ */
+ protected void unsetKernelControllerContext(KernelControllerContext context)
{
Object target = context.getTarget();
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/LifecycleAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/LifecycleAction.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/LifecycleAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -42,7 +42,7 @@
* @author <a href="ales.justin at jboss.com">Ales Justin</a>
* @version $Revision$
*/
-public abstract class LifecycleAction extends KernelControllerContextAction
+public abstract class LifecycleAction extends InstallsAwareAction
{
/**
* Create a new AbstractLifecycleAction.
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/PreInstallAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/PreInstallAction.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/PreInstallAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -28,6 +28,7 @@
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.dependency.plugins.AbstractController;
+import org.jboss.dependency.spi.ControllerState;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.spi.config.KernelConfigurator;
import org.jboss.kernel.spi.dependency.KernelController;
@@ -49,7 +50,7 @@
*
* @author <a href="ales.justin at jboss.com">Ales Justin</a>
*/
-public class PreInstallAction extends KernelControllerContextAction
+public class PreInstallAction extends InstallsAwareAction
{
protected void installActionInternal(KernelControllerContext context) throws Throwable
{
@@ -239,4 +240,9 @@
log.warn("Unexpected error removing metadata: ", ignored);
}
}
+
+ protected ControllerState getState()
+ {
+ return ControllerState.PRE_INSTALL;
+ }
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/StartStopLifecycleAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/StartStopLifecycleAction.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/StartStopLifecycleAction.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -25,6 +25,7 @@
import org.jboss.beans.metadata.spi.LifecycleMetaData;
import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
import org.jboss.kernel.spi.dependency.StartKernelControllerContextAware;
+import org.jboss.dependency.spi.ControllerState;
/**
* StartStopLifecycleAction.
@@ -59,4 +60,9 @@
{
return "stop";
}
+
+ protected ControllerState getState()
+ {
+ return ControllerState.START;
+ }
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/InstallHandler.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/InstallHandler.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/InstallHandler.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -58,6 +58,8 @@
install.setMethodName(attrs.getValue(i));
else if ("state".equals(localName))
install.setDependentState(new ControllerState(attrs.getValue(i)));
+ else if ("whenRequired".equals(localName))
+ install.setState(new ControllerState(attrs.getValue(i)));
}
}
Modified: projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd 2008-02-20 23:53:25 UTC (rev 69987)
@@ -339,6 +339,7 @@
<xsd:attribute name="bean" type="xsd:string" use="optional"/>
<xsd:attribute name="method" type="xsd:token" use="required"/>
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
+ <xsd:attribute name="whenRequired" type="controllerStateType" use="optional"/>
</xsd:complexType>
<xsd:complexType name="callbackType">
Modified: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/FromContextXMLTestCase0.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/FromContextXMLTestCase0.xml 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/FromContextXMLTestCase0.xml 2008-02-20 23:53:25 UTC (rev 69987)
@@ -41,4 +41,8 @@
<property name="context"><inject bean="set_name_bean" fromContext="context"/></property>
</bean>
+ <bean name="state" class="org.jboss.test.kernel.deployment.support.NameAwareBean">
+ <property name="state"><inject fromContext="state"/></property>
+ </bean>
+
</deployment>
Added: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/InstallDependencyXMLTestCase2.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/InstallDependencyXMLTestCase2.xml (rev 0)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/InstallDependencyXMLTestCase2.xml 2008-02-20 23:53:25 UTC (rev 69987)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+ <bean name="Name3" class="org.jboss.test.kernel.dependency.support.SimpleBeanImpl">
+ <install bean="Name1" method="addState" whenRequired="PreInstall">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall bean="Name1" method="removeState" whenRequired="PreInstall">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ <install bean="Name1" method="addState" whenRequired="Described">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall bean="Name1" method="removeState" whenRequired="Described">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ <install bean="Name1" method="addState" whenRequired="Instantiated">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall bean="Name1" method="removeState" whenRequired="Instantiated">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ <install bean="Name1" method="addState" whenRequired="Configured">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall bean="Name1" method="removeState" whenRequired="Configured">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ <install bean="Name1" method="addState" whenRequired="Create">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall bean="Name1" method="removeState" whenRequired="Create">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ <install bean="Name1" method="addState" whenRequired="Start">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall bean="Name1" method="removeState" whenRequired="Start">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ </bean>
+</deployment>
Added: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyXMLTestCase1.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyXMLTestCase1.xml (rev 0)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyXMLTestCase1.xml 2008-02-20 23:53:25 UTC (rev 69987)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+ <bean name="Name2" class="org.jboss.test.kernel.dependency.support.SimpleBeanInstallsAware">
+ <install method="addInstantiated" whenRequired="Instantiated">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall method="removeInstantiated" whenRequired="Instantiated">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ <install method="addConfigured" whenRequired="Configured">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall method="removeConfigured" whenRequired="Configured">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ <install method="addCreate" whenRequired="Create">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall method="removeCreate" whenRequired="Create">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ <install method="addStart" whenRequired="Start">
+ <parameter><inject fromContext="state"/></parameter>
+ </install>
+ <uninstall method="removeStart" whenRequired="Start">
+ <parameter><inject fromContext="state"/></parameter>
+ </uninstall>
+ </bean>
+</deployment>
Added: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/InstallWithWhenRequired.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/InstallWithWhenRequired.xml (rev 0)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/InstallWithWhenRequired.xml 2008-02-20 23:53:25 UTC (rev 69987)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
+ <install method="Dummy" whenRequired="Configured"/>
+</bean>
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/ControllerTestSuite.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/ControllerTestSuite.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/ControllerTestSuite.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -47,7 +47,8 @@
suite.addTest(RedeployAfterErrorTestCase.suite());
suite.addTest(ContextClassLoaderTestCase.suite());
suite.addTest(InstallErrorTestCase.suite());
-
+ suite.addTest(InstallWhenRequiredErrorTestCase.suite());
+
return suite;
}
}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/InstallErrorTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/InstallErrorTestCase.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/InstallErrorTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -30,7 +30,7 @@
import org.jboss.test.kernel.controller.support.TestBeanRepository;
/**
- * ContextClassLoaderFactoryTestCase.
+ * InstallErrorTestCase
*
* TODO test others, e.g. ControllerContextAware
* @author <a href="adrian at jboss.com">Adrian Brock</a>
@@ -38,8 +38,6 @@
*/
public class InstallErrorTestCase extends AbstractControllerTest
{
- ClassLoader cl = null;
-
public static Test suite()
{
return suite(InstallErrorTestCase.class);
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/InstallWhenRequiredErrorTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/InstallWhenRequiredErrorTestCase.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/controller/test/InstallWhenRequiredErrorTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -0,0 +1,185 @@
+/*
+* 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.kernel.controller.test;
+
+import junit.framework.Test;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.kernel.controller.support.TestBean;
+import org.jboss.test.kernel.controller.support.TestBeanRepository;
+
+/**
+ * Install when required test case.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class InstallWhenRequiredErrorTestCase extends AbstractControllerTest
+{
+ public static Test suite()
+ {
+ return suite(InstallWhenRequiredErrorTestCase.class);
+ }
+
+ public InstallWhenRequiredErrorTestCase(String name) throws Throwable
+ {
+ super(name);
+ }
+
+ protected ControllerState[] getStates()
+ {
+ return new ControllerState[]{
+ ControllerState.CONFIGURED,
+ ControllerState.CREATE,
+ ControllerState.START,
+ };
+ }
+
+ protected BeanMetaData createBeanMetaData(ControllerState state)
+ {
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("Bean", TestBean.class.getName());
+ builder.addInstallWithThis("add", "Repository1", null, state);
+ builder.addInstallWithThis("add", "Repository2", null, state);
+ builder.addUninstallWithThis("remove", "Repository1", null, state);
+ builder.addUninstallWithThis("remove", "Repository2", null, state);
+ return builder.getBeanMetaData();
+ }
+
+ public void testErrorInInstallWithSupplies() throws Throwable
+ {
+ ControllerState[] states = getStates();
+ for (ControllerState state : states)
+ runErrorInInstallWithSupplies(state);
+ }
+
+ public void runErrorInInstallWithSupplies(ControllerState state) throws Throwable
+ {
+ KernelDeployment repository = deploy("InstallErrorTestCase_Repositories.xml");
+ try
+ {
+ BeanMetaData metaData = createBeanMetaData(state);
+ KernelControllerContext deployment = deploy(metaData);
+ try
+ {
+ ControllerContext context = getControllerContext("Bean", null);
+ assertEquals(ControllerState.ERROR, context.getState());
+ checkThrowable(Error.class, context.getError());
+ try
+ {
+ getControllerContext("TestSupply", null);
+ fail("Should not be here!");
+ }
+ catch (Throwable throwable)
+ {
+ checkThrowable(IllegalStateException.class, throwable);
+ }
+ }
+ finally
+ {
+ undeploy(deployment);
+ }
+ }
+ finally
+ {
+ undeploy(repository);
+ }
+ }
+
+ public void testErrorInInstallRedeploy() throws Throwable
+ {
+ ControllerState[] states = getStates();
+ for (ControllerState state : states)
+ runErrorInInstallRedeploy(state);
+ }
+
+ public void runErrorInInstallRedeploy(ControllerState state) throws Throwable
+ {
+ KernelDeployment repository = deploy("InstallErrorTestCase_Repositories.xml");
+ try
+ {
+ BeanMetaData metaData = createBeanMetaData(state);
+ KernelControllerContext kcc = deploy(metaData);
+ try
+ {
+ ControllerContext context = getControllerContext("Bean", null);
+ assertEquals(ControllerState.ERROR, context.getState());
+ checkThrowable(Error.class, context.getError());
+ }
+ finally
+ {
+ undeploy(kcc);
+ }
+
+ KernelDeployment deployment = deploy("InstallErrorTestCase_BeanNoInstall.xml");
+ try
+ {
+ assertNotNull(getControllerContext("Bean"));
+ }
+ finally
+ {
+ undeploy(deployment);
+ }
+ }
+ finally
+ {
+ undeploy(repository);
+ }
+ }
+
+ public void testErrorInInstall() throws Throwable
+ {
+ ControllerState[] states = getStates();
+ for (ControllerState state : states)
+ runErrorInInstall(state);
+ }
+
+ public void runErrorInInstall(ControllerState state) throws Throwable
+ {
+ KernelDeployment repository = deploy("InstallErrorTestCase_Repositories.xml");
+ try
+ {
+ TestBeanRepository repository1 = (TestBeanRepository)getBean("Repository1");
+ TestBeanRepository repository2 = (TestBeanRepository)getBean("Repository2");
+ BeanMetaData metaData = createBeanMetaData(state);
+ KernelControllerContext deployment = deploy(metaData);
+ try
+ {
+ ControllerContext context = getControllerContext("Bean", null);
+ assertEquals(ControllerState.ERROR, context.getState());
+ checkThrowable(Error.class, context.getError());
+ assertEmpty(repository1.getBeans());
+ assertEmpty(repository2.getBeans());
+ }
+ finally
+ {
+ undeploy(deployment);
+ }
+ }
+ finally
+ {
+ undeploy(repository);
+ }
+ }
+}
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/AnnotatedSimpleBeanInstallsAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/AnnotatedSimpleBeanInstallsAware.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/AnnotatedSimpleBeanInstallsAware.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -0,0 +1,84 @@
+/*
+* 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.kernel.dependency.support;
+
+import org.jboss.beans.metadata.api.annotations.FromContext;
+import org.jboss.beans.metadata.api.annotations.Inject;
+import org.jboss.beans.metadata.api.annotations.InstallMethod;
+import org.jboss.beans.metadata.api.annotations.UninstallMethod;
+import org.jboss.dependency.spi.ControllerState;
+
+/**
+ * SimpleBeanInstallAware
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ */
+public class AnnotatedSimpleBeanInstallsAware extends SimpleBeanInstallsAware
+{
+ @InstallMethod(whenRequired = "Instantiated")
+ public void addInstantiated(@Inject(fromContext=FromContext.STATE) ControllerState state)
+ {
+ states.add(state);
+ }
+
+ @InstallMethod(whenRequired = "Configured")
+ public void addConfigured(@Inject(fromContext=FromContext.STATE) ControllerState state)
+ {
+ states.add(state);
+ }
+
+ @InstallMethod(whenRequired = "Create")
+ public void addCreate(@Inject(fromContext= FromContext.STATE) ControllerState state)
+ {
+ states.add(state);
+ }
+
+ @InstallMethod(whenRequired = "Start")
+ public void addStart(@Inject(fromContext=FromContext.STATE) ControllerState state)
+ {
+ states.add(state);
+ }
+
+ @UninstallMethod(whenRequired = "Instantiated")
+ public void removeInstantiated(@Inject(fromContext=FromContext.STATE) ControllerState state)
+ {
+ states.remove(state);
+ }
+
+ @UninstallMethod(whenRequired = "Configured")
+ public void removeConfigured(@Inject(fromContext=FromContext.STATE) ControllerState state)
+ {
+ states.remove(state);
+ }
+
+ @UninstallMethod(whenRequired = "Create")
+ public void removeCreate(@Inject(fromContext=FromContext.STATE) ControllerState state)
+ {
+ states.remove(state);
+ }
+
+ @UninstallMethod(whenRequired = "Start")
+ public void removeStart(@Inject(fromContext=FromContext.STATE) ControllerState state)
+ {
+ states.remove(state);
+ }
+}
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/ExternalInstallWithStateSimpleBeanImpl.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/ExternalInstallWithStateSimpleBeanImpl.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/ExternalInstallWithStateSimpleBeanImpl.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -0,0 +1,102 @@
+/*
+* 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.kernel.dependency.support;
+
+import java.io.Serializable;
+
+import org.jboss.beans.metadata.api.annotations.ExternalInstall;
+import org.jboss.beans.metadata.api.annotations.ExternalInstalls;
+import org.jboss.beans.metadata.api.annotations.ExternalUninstalls;
+import org.jboss.beans.metadata.api.annotations.FromContext;
+import org.jboss.beans.metadata.api.annotations.Inject;
+import org.jboss.beans.metadata.api.annotations.Value;
+
+/**
+ * A simple bean
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+ at ExternalInstalls
+(
+ {
+ @ExternalInstall(bean = "Name1", method = "addState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "PreInstall"),
+ @ExternalInstall(bean = "Name1", method = "addState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Described"),
+ @ExternalInstall(bean = "Name1", method = "addState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Instantiated"),
+ @ExternalInstall(bean = "Name1", method = "addState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Configured"),
+ @ExternalInstall(bean = "Name1", method = "addState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Create"),
+ @ExternalInstall(bean = "Name1", method = "addState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Start")
+ }
+)
+ at ExternalUninstalls
+(
+ {
+ @ExternalInstall(bean = "Name1", method = "removeState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "PreInstall"),
+ @ExternalInstall(bean = "Name1", method = "removeState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Described"),
+ @ExternalInstall(bean = "Name1", method = "removeState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Instantiated"),
+ @ExternalInstall(bean = "Name1", method = "removeState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Configured"),
+ @ExternalInstall(bean = "Name1", method = "removeState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Create"),
+ @ExternalInstall(bean = "Name1", method = "removeState", parameters = {@Value(inject = @Inject(fromContext = FromContext.STATE))}, whenRequired = "Start")
+ }
+)
+public class ExternalInstallWithStateSimpleBeanImpl implements Serializable, SimpleBean
+{
+ // Constants -----------------------------------------------------
+
+ private static final long serialVersionUID = 3258132440433243443L;
+
+ // Attributes ----------------------------------------------------
+
+ private String constructorString;
+
+ private String string;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public ExternalInstallWithStateSimpleBeanImpl()
+ {
+ constructorString = "()";
+ }
+
+ public ExternalInstallWithStateSimpleBeanImpl(String string)
+ {
+ constructorString = string;
+ }
+
+ // Public --------------------------------------------------------
+
+ public String getConstructorString()
+ {
+ return constructorString;
+ }
+
+ public String getString()
+ {
+ return string;
+ }
+
+ public void setString(String string)
+ {
+ this.string = string;
+ }
+}
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/SimpleBeanInstallsAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/SimpleBeanInstallsAware.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/SimpleBeanInstallsAware.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -0,0 +1,82 @@
+/*
+* 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.kernel.dependency.support;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.dependency.spi.ControllerState;
+
+/**
+ * SimpleBeanInstallAware
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ */
+public class SimpleBeanInstallsAware
+{
+ protected Set<ControllerState> states = new HashSet<ControllerState>();
+
+ public Set<ControllerState> getStates()
+ {
+ return states;
+ }
+
+ public void addInstantiated(ControllerState state)
+ {
+ states.add(state);
+ }
+
+ public void addConfigured(ControllerState state)
+ {
+ states.add(state);
+ }
+
+ public void addCreate(ControllerState state)
+ {
+ states.add(state);
+ }
+
+ public void addStart(ControllerState state)
+ {
+ states.add(state);
+ }
+
+ public void removeInstantiated(ControllerState state)
+ {
+ states.remove(state);
+ }
+
+ public void removeConfigured(ControllerState state)
+ {
+ states.remove(state);
+ }
+
+ public void removeCreate(ControllerState state)
+ {
+ states.remove(state);
+ }
+
+ public void removeStart(ControllerState state)
+ {
+ states.remove(state);
+ }
+}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/SimpleBeanRepository.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/SimpleBeanRepository.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/SimpleBeanRepository.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -23,11 +23,16 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+import org.jboss.dependency.spi.ControllerState;
+
public class SimpleBeanRepository
{
List<SimpleBean> beans = new ArrayList<SimpleBean>();
-
+ Set<ControllerState> states = new HashSet<ControllerState>();
+
public List<SimpleBean> getBeans()
{
return beans;
@@ -47,4 +52,19 @@
{
beans.remove(bean);
}
+
+ public Set<ControllerState> getStates()
+ {
+ return states;
+ }
+
+ public boolean addState(ControllerState state)
+ {
+ return states.add(state);
+ }
+
+ public boolean removeState(ControllerState state)
+ {
+ return states.remove(state);
+ }
}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/AbstractKernelDependencyTest.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/AbstractKernelDependencyTest.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/AbstractKernelDependencyTest.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -109,7 +109,7 @@
protected ControllerContext assertInstall(int number, String name, ControllerState expected) throws Throwable
{
ControllerContext context = install(number, name);
- assertNotNull(context);
+ assertNotNull("Missing context with name: " + name, context);
assertEquals(expected, context.getState());
return context;
}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/FromContextAnnotationTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/FromContextAnnotationTestCase.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/FromContextAnnotationTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -39,6 +39,7 @@
import org.jboss.test.kernel.deployment.support.ScopeAwareBean;
import org.jboss.test.kernel.deployment.support.ContextAwareBean;
import org.jboss.test.kernel.deployment.support.OtherAwareBean;
+import org.jboss.test.kernel.deployment.support.StateAwareBean;
import org.jboss.dependency.spi.ControllerContext;
/**
@@ -88,8 +89,8 @@
BeanMetaDataBuilder b8 = BeanMetaDataBuilderFactory.createBuilder("other", OtherAwareBean.class.getName());
BeanMetaDataBuilder b9 = BeanMetaDataBuilderFactory.createBuilder("context", ContextAwareBean.class.getName());
+ BeanMetaDataBuilder b10 = BeanMetaDataBuilderFactory.createBuilder("state", StateAwareBean.class.getName());
-
setBeanMetaDatas(new BeanMetaData[]
{
b1.getBeanMetaData(),
@@ -101,6 +102,7 @@
b7.getBeanMetaData(),
b8.getBeanMetaData(),
b9.getBeanMetaData(),
+ b10.getBeanMetaData(),
}
);
}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/FromContextTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/FromContextTestCase.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/FromContextTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -35,6 +35,7 @@
import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
import org.jboss.beans.metadata.spi.factory.BeanFactory;
import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
import org.jboss.test.kernel.deployment.support.NameAwareBean;
/**
@@ -119,6 +120,10 @@
NameAwareBean context = (NameAwareBean)getBean(8, "context");
assertNotNull(context);
assertNotNull(context.getContext());
+
+ NameAwareBean state = (NameAwareBean)getBean(9, "state");
+ assertNotNull(state);
+ assertEquals(ControllerState.INSTANTIATED, state.getState());
}
protected void checkAliases(Set<Object> aliases) throws Throwable
@@ -181,6 +186,10 @@
v9.setFromContext(FromContext.CONTEXT);
b9.addPropertyMetaData("context", v9);
+ BeanMetaDataBuilder b10 = BeanMetaDataBuilderFactory.createBuilder("state", NameAwareBean.class.getName());
+ AbstractInjectionValueMetaData v10 = new AbstractInjectionValueMetaData();
+ v10.setFromContext(FromContext.STATE);
+ b10.addPropertyMetaData("state", v10);
setBeanMetaDatas(new BeanMetaData[]
{
@@ -193,6 +202,7 @@
b7.getBeanMetaData(),
b8.getBeanMetaData(),
b9.getBeanMetaData(),
+ b10.getBeanMetaData(),
}
);
}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallDependencyAnnotationTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallDependencyAnnotationTestCase.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallDependencyAnnotationTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -26,6 +26,7 @@
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.test.kernel.dependency.support.SimpleBeanRepository;
import org.jboss.test.kernel.dependency.support.ExternalInstallSimpleBeanImpl;
+import org.jboss.test.kernel.dependency.support.ExternalInstallWithStateSimpleBeanImpl;
/**
* Install Dependency Test Case.
@@ -44,10 +45,22 @@
super(name);
}
+ // we don't expect PreInstall
+ protected int getExpectedInstallSize()
+ {
+ return 5;
+ }
+
+ protected int getExpectedUninstallSize()
+ {
+ return 0;
+ }
+
protected void setupBeanMetaDatas() throws Throwable
{
AbstractBeanMetaData metaData1 = new AbstractBeanMetaData("Name1", SimpleBeanRepository.class.getName());
AbstractBeanMetaData metaData2 = new AbstractBeanMetaData("Name2", ExternalInstallSimpleBeanImpl.class.getName());
- setBeanMetaDatas(new BeanMetaData[] { metaData1, metaData2 });
+ AbstractBeanMetaData metaData3 = new AbstractBeanMetaData("Name3", ExternalInstallWithStateSimpleBeanImpl.class.getName());
+ setBeanMetaDatas(new BeanMetaData[] { metaData1, metaData2, metaData3 });
}
}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallDependencyTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallDependencyTestCase.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallDependencyTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -22,6 +22,9 @@
package org.jboss.test.kernel.dependency.test;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
import junit.framework.Test;
@@ -29,6 +32,8 @@
import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
import org.jboss.beans.metadata.plugins.ThisValueMetaData;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.plugins.FromContext;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.InstallMetaData;
import org.jboss.beans.metadata.spi.ParameterMetaData;
@@ -147,6 +152,40 @@
assertEquals(expected, bean1.getBeans());
}
+ public void testWhenRequiredInstalls() throws Throwable
+ {
+ setupBeanMetaDatas();
+
+ ControllerContext context1 = assertInstall(0, "Name1");
+ ControllerContext context2 = assertInstall(2, "Name3");
+
+ SimpleBeanRepository bean1 = (SimpleBeanRepository) context1.getTarget();
+ assertNotNull(bean1);
+ Set<ControllerState> states = bean1.getStates();
+ assertNotNull(states);
+ assertEquals(getExpectedInstallSize(), states.size());
+
+ assertUninstall(context2.getName().toString());
+
+ int uninstallSize = getExpectedUninstallSize();
+ assertEquals(uninstallSize, states.size());
+ if (uninstallSize > 0)
+ {
+ ControllerState state = states.iterator().next();
+ assertEquals(ControllerState.NOT_INSTALLED, state);
+ }
+ }
+
+ protected int getExpectedInstallSize()
+ {
+ return 6;
+ }
+
+ protected int getExpectedUninstallSize()
+ {
+ return 1;
+ }
+
protected void setupBeanMetaDatas() throws Throwable
{
AbstractBeanMetaData metaData1 = new AbstractBeanMetaData("Name1", SimpleBeanRepository.class.getName());
@@ -173,6 +212,50 @@
uninstalls.add(uninstall);
metaData2.setUninstalls(uninstalls);
- setBeanMetaDatas(new BeanMetaData[] { metaData1, metaData2 });
+ AbstractBeanMetaData metaData3 = new AbstractBeanMetaData("Name3", SimpleBeanImpl.class.getName());
+
+ ArrayList<InstallMetaData> stateInstalls = new ArrayList<InstallMetaData>();
+ addInstallMetaData(ControllerState.PRE_INSTALL, stateInstalls);
+ addInstallMetaData(ControllerState.DESCRIBED, stateInstalls);
+ addInstallMetaData(ControllerState.INSTANTIATED, stateInstalls);
+ addInstallMetaData(ControllerState.CONFIGURED, stateInstalls);
+ addInstallMetaData(ControllerState.CREATE, stateInstalls);
+ addInstallMetaData(ControllerState.START, stateInstalls);
+
+ ArrayList<InstallMetaData> stateUninstalls = new ArrayList<InstallMetaData>();
+ addUninstallMetaData(ControllerState.PRE_INSTALL, stateUninstalls);
+ addUninstallMetaData(ControllerState.DESCRIBED, stateUninstalls);
+ addUninstallMetaData(ControllerState.INSTANTIATED, stateUninstalls);
+ addUninstallMetaData(ControllerState.CONFIGURED, stateUninstalls);
+ addUninstallMetaData(ControllerState.CREATE, stateUninstalls);
+ addUninstallMetaData(ControllerState.START, stateUninstalls);
+
+ metaData3.setInstalls(stateInstalls);
+ metaData3.setUninstalls(stateUninstalls);
+
+ setBeanMetaDatas(new BeanMetaData[] { metaData1, metaData2, metaData3 });
}
+
+ protected void addInstallMetaData(ControllerState state, List<InstallMetaData> states)
+ {
+ addInstallMetaData(state, states, "add");
+ }
+
+ protected void addUninstallMetaData(ControllerState state, List<InstallMetaData> states)
+ {
+ addInstallMetaData(state, states, "remove");
+ }
+
+ protected void addInstallMetaData(ControllerState state, List<InstallMetaData> states, String prefix)
+ {
+ AbstractInstallMetaData install = new AbstractInstallMetaData();
+ install.setBean("Name1");
+ install.setMethodName(prefix + "State");
+ AbstractInjectionValueMetaData injection = new AbstractInjectionValueMetaData();
+ injection.setFromContext(FromContext.STATE);
+ ParameterMetaData parameter = new AbstractParameterMetaData(injection);
+ install.setParameters(Collections.singletonList(parameter));
+ install.setState(state);
+ states.add(install);
+ }
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyAnnotationTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyAnnotationTestCase.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyAnnotationTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -25,6 +25,7 @@
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.test.kernel.dependency.support.AnnotatedSimpleBeanInstallSelf;
+import org.jboss.test.kernel.dependency.support.AnnotatedSimpleBeanInstallsAware;
/**
* Install Dependency Test Case.
@@ -46,6 +47,7 @@
protected void setupBeanMetaDatas() throws Throwable
{
AbstractBeanMetaData metaData1 = new AbstractBeanMetaData("Name1", AnnotatedSimpleBeanInstallSelf.class.getName());
- setBeanMetaDatas(new BeanMetaData[] { metaData1 });
+ AbstractBeanMetaData metaData2 = new AbstractBeanMetaData("Name2", AnnotatedSimpleBeanInstallsAware.class.getName());
+ setBeanMetaDatas(new BeanMetaData[] { metaData1, metaData2 });
}
}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyTestCase.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/InstallSelfDependencyTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -22,15 +22,24 @@
package org.jboss.test.kernel.dependency.test;
import java.util.ArrayList;
+import java.util.List;
+import java.util.Collections;
+import java.util.Set;
import junit.framework.Test;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
+import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.plugins.FromContext;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.InstallMetaData;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
import org.jboss.test.kernel.dependency.support.SimpleBeanInstallSelf;
+import org.jboss.test.kernel.dependency.support.SimpleBeanInstallsAware;
/**
* Install Dependency Test Case.
@@ -86,6 +95,25 @@
assertTrue(bean.getInstalled());
}
+ public void testWhenRequiredInstalls() throws Throwable
+ {
+ setupBeanMetaDatas();
+
+ ControllerContext context2 = assertInstall(1, "Name2");
+
+ SimpleBeanInstallsAware bean = (SimpleBeanInstallsAware) context2.getTarget();
+ assertNotNull(bean);
+ Set<ControllerState> states = bean.getStates();
+ assertNotNull(states);
+ assertEquals(4, states.size());
+
+ assertUninstall(context2.getName().toString());
+
+ assertEquals(1, states.size());
+ ControllerState state = states.iterator().next();
+ assertEquals(ControllerState.DESCRIBED, state);
+ }
+
protected void setupBeanMetaDatas() throws Throwable
{
AbstractBeanMetaData metaData1 = new AbstractBeanMetaData("Name1", SimpleBeanInstallSelf.class.getName());
@@ -102,6 +130,34 @@
uninstalls.add(uninstall);
metaData1.setUninstalls(uninstalls);
- setBeanMetaDatas(new BeanMetaData[] { metaData1 });
+ AbstractBeanMetaData metaData2 = new AbstractBeanMetaData("Name2", SimpleBeanInstallsAware.class.getName());
+
+ ArrayList<InstallMetaData> installs2 = new ArrayList<InstallMetaData>();
+ addInstalls(ControllerState.INSTANTIATED, installs2, true);
+ addInstalls(ControllerState.CONFIGURED, installs2, true);
+ addInstalls(ControllerState.CREATE, installs2, true);
+ addInstalls(ControllerState.START, installs2, true);
+ metaData2.setInstalls(installs2);
+
+ ArrayList<InstallMetaData> uninstalls2 = new ArrayList<InstallMetaData>();
+ addInstalls(ControllerState.INSTANTIATED, uninstalls2, false);
+ addInstalls(ControllerState.CONFIGURED, uninstalls2, false);
+ addInstalls(ControllerState.CREATE, uninstalls2, false);
+ addInstalls(ControllerState.START, uninstalls2, false);
+ metaData2.setUninstalls(uninstalls2);
+
+ setBeanMetaDatas(new BeanMetaData[] { metaData1, metaData2 });
}
+
+ protected void addInstalls(ControllerState state, List<InstallMetaData> installs, boolean add)
+ {
+ AbstractInstallMetaData install = new AbstractInstallMetaData();
+ install.setState(state);
+ install.setMethodName((add ? "add" : "remove") + state.getStateString());
+ AbstractInjectionValueMetaData injection = new AbstractInjectionValueMetaData();
+ injection.setFromContext(FromContext.STATE);
+ ParameterMetaData paramater = new AbstractParameterMetaData(injection);
+ install.setParameters(Collections.singletonList(paramater));
+ installs.add(install);
+ }
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/NameAwareBean.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/NameAwareBean.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/NameAwareBean.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -27,6 +27,7 @@
import org.jboss.metadata.spi.scope.ScopeKey;
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
/**
* A simple bean with name
@@ -42,6 +43,7 @@
private ScopeKey scopeKey;
private Object dynamic;
private ControllerContext context;
+ private ControllerState state;
public String getName()
{
@@ -117,4 +119,14 @@
{
this.context = context;
}
+
+ public ControllerState getState()
+ {
+ return state;
+ }
+
+ public void setState(ControllerState state)
+ {
+ this.state = state;
+ }
}
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/StateAwareBean.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/StateAwareBean.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/StateAwareBean.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -0,0 +1,40 @@
+/*
+* 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.kernel.deployment.support;
+
+import org.jboss.beans.metadata.api.annotations.FromContext;
+import org.jboss.beans.metadata.api.annotations.Inject;
+import org.jboss.dependency.spi.ControllerState;
+
+/**
+ * A simple bean with awareness
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class StateAwareBean extends NameAwareBean
+{
+ @Inject(fromContext = FromContext.STATE)
+ public void setState(ControllerState state)
+ {
+ super.setState(state);
+ }
+}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallJaxbTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallJaxbTestCase.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallJaxbTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -57,6 +57,7 @@
InstallMetaData install = getInstall();
assertEquals("Bean", install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
assertNull(install.getAnnotations());
assertNull(install.getParameters());
@@ -67,16 +68,29 @@
InstallMetaData install = getInstall();
assertNull(install.getBean());
assertEquals(ControllerState.CONFIGURED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
assertNull(install.getAnnotations());
assertNull(install.getParameters());
}
+ public void testInstallWithWhenRequired() throws Exception
+ {
+ InstallMetaData install = getInstall();
+ assertNull(install.getBean());
+ assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.CONFIGURED, install.getState());
+ assertEquals("Dummy", install.getMethodName());
+ assertNull(install.getAnnotations());
+ assertNull(install.getParameters());
+ }
+
public void testInstallWithMethod() throws Exception
{
InstallMetaData install = getInstall();
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Method", install.getMethodName());
assertNull(install.getAnnotations());
assertNull(install.getParameters());
@@ -87,6 +101,7 @@
InstallMetaData install = getInstall();
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
HashSet<String> expected = new HashSet<String>();
expected.add(Annotation1.class.getName());
@@ -99,6 +114,7 @@
InstallMetaData install = getInstall();
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
HashSet<String> expected = new HashSet<String>();
expected.add(Annotation1.class.getName());
@@ -113,6 +129,7 @@
InstallMetaData install = getInstall();
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
assertNull(install.getAnnotations());
ArrayList<String> expected = new ArrayList<String>();
@@ -125,6 +142,7 @@
InstallMetaData install = getInstall();
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
assertNull(install.getAnnotations());
ArrayList<String> expected = new ArrayList<String>();
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallTestCase.java 2008-02-20 21:48:48 UTC (rev 69986)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallTestCase.java 2008-02-20 23:53:25 UTC (rev 69987)
@@ -55,6 +55,7 @@
InstallMetaData install = getInstall("InstallWithBean.xml");
assertEquals("Bean", install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
assertNull(install.getAnnotations());
assertNull(install.getParameters());
@@ -65,16 +66,29 @@
InstallMetaData install = getInstall("InstallWithState.xml");
assertNull(install.getBean());
assertEquals(ControllerState.CONFIGURED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
assertNull(install.getAnnotations());
assertNull(install.getParameters());
}
+ public void testInstallWithWhenRequired() throws Exception
+ {
+ InstallMetaData install = getInstall("InstallWithWhenRequired.xml");
+ assertNull(install.getBean());
+ assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.CONFIGURED, install.getState());
+ assertEquals("Dummy", install.getMethodName());
+ assertNull(install.getAnnotations());
+ assertNull(install.getParameters());
+ }
+
public void testInstallWithMethod() throws Exception
{
InstallMetaData install = getInstall("InstallWithMethod.xml");
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Method", install.getMethodName());
assertNull(install.getAnnotations());
assertNull(install.getParameters());
@@ -85,6 +99,7 @@
InstallMetaData install = getInstall("InstallWithAnnotation.xml");
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
HashSet<String> expected = new HashSet<String>();
expected.add("org.jboss.test.kernel.deployment.xml.support.Annotation1");
@@ -97,6 +112,7 @@
InstallMetaData install = getInstall("InstallWithAnnotations.xml");
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
HashSet<String> expected = new HashSet<String>();
expected.add("org.jboss.test.kernel.deployment.xml.support.Annotation1");
@@ -111,6 +127,7 @@
InstallMetaData install = getInstall("InstallWithParameter.xml");
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
assertNull(install.getAnnotations());
ArrayList<String> expected = new ArrayList<String>();
@@ -123,6 +140,7 @@
InstallMetaData install = getInstall("InstallWithParameters.xml");
assertNull(install.getBean());
assertEquals(ControllerState.INSTALLED, install.getDependentState());
+ assertEquals(ControllerState.INSTALLED, install.getState());
assertEquals("Dummy", install.getMethodName());
assertNull(install.getAnnotations());
ArrayList<String> expected = new ArrayList<String>();
More information about the jboss-cvs-commits
mailing list