[jboss-cvs] JBossAS SVN: r59850 - in projects/microcontainer/trunk/kernel/src: main/org/jboss/beans/metadata/plugins/builder and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jan 19 13:21:34 EST 2007
Author: alesj
Date: 2007-01-19 13:21:34 -0500 (Fri, 19 Jan 2007)
New Revision: 59850
Added:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/AbstractInstallMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/InstallMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StateMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/UninstallMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/support/SimpleLifecycleBean.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java
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/builder/CreateLifecycleMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/DestroyLifecycleMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/LifecycleMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StartLifecycleMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StopLifecycleMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/ConfigTestSuite.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/metadata/test/MetaDataTestSuite.java
Log:
bean meta data builder tests
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 2007-01-19 18:19:23 UTC (rev 59849)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -115,6 +115,11 @@
flushJBossObjectCache();
}
+ /**
+ * Get type - create, start, stop, destroy, install
+ *
+ * @return lifecycle type
+ */
public String getType()
{
return type;
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/AbstractInstallMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/AbstractInstallMetaDataBuilder.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/AbstractInstallMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -0,0 +1,61 @@
+/*
+* 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.beans.metadata.plugins.builder;
+
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
+import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
+
+/**
+ * AbstractInstallMetaDataBuilder.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public abstract class AbstractInstallMetaDataBuilder extends StateMetaDataBuilder
+{
+ /**
+ * Create a new StartLifecycleMetaDataBuilder.
+ *
+ * @param beanMetaData
+ */
+ public AbstractInstallMetaDataBuilder(AbstractBeanMetaData beanMetaData)
+ {
+ super(beanMetaData);
+ }
+
+ protected AbstractLifecycleMetaData createLifecycleMetaData()
+ {
+ return new AbstractInstallMetaData();
+ }
+
+ protected void applyAfterSet(AbstractLifecycleMetaData lifecycle)
+ {
+ // do nothing
+ }
+
+ public void addParameter(AbstractInstallMetaData installMetaData, String type, Object value)
+ {
+ ParameterMetaDataBuilder<AbstractInstallMetaData> builder = new ParameterMetaDataBuilder<AbstractInstallMetaData>(installMetaData);
+ builder.addParameterMetaData(type, value);
+ }
+
+}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/CreateLifecycleMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/CreateLifecycleMetaDataBuilder.java 2007-01-19 18:19:23 UTC (rev 59849)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/CreateLifecycleMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -36,19 +36,18 @@
* Create a new CreateLifecycleMetaDataBuilder.
*
* @param beanMetaData
- * @throws IllegalArgumentException
*/
- public CreateLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ public CreateLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData)
{
super(beanMetaData);
}
- LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
+ protected LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
{
return beanMetaData.getCreate();
}
- void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ protected void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
{
beanMetaData.setCreate(lifecycle);
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/DestroyLifecycleMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/DestroyLifecycleMetaDataBuilder.java 2007-01-19 18:19:23 UTC (rev 59849)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/DestroyLifecycleMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -36,19 +36,18 @@
* Create a new DestroyLifecycleMetaDataBuilder.
*
* @param beanMetaData
- * @throws IllegalArgumentException
*/
- public DestroyLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ public DestroyLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData)
{
super(beanMetaData);
}
- LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
+ protected LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
{
return beanMetaData.getDestroy();
}
- void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ protected void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
{
beanMetaData.setDestroy(lifecycle);
}
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/InstallMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/InstallMetaDataBuilder.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/InstallMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -0,0 +1,60 @@
+/*
+* 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.beans.metadata.plugins.builder;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.spi.LifecycleMetaData;
+import org.jboss.beans.metadata.spi.InstallMetaData;
+
+/**
+ * InstallMetaDataBuilder.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class InstallMetaDataBuilder extends AbstractInstallMetaDataBuilder
+{
+ /**
+ * Create a new StartLifecycleMetaDataBuilder.
+ *
+ * @param beanMetaData
+ * @throws IllegalArgumentException
+ */
+ public InstallMetaDataBuilder(AbstractBeanMetaData beanMetaData)
+ {
+ super(beanMetaData);
+ }
+
+ protected void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ {
+ List<InstallMetaData> installs = beanMetaData.getInstalls();
+ if (installs == null)
+ {
+ installs = new ArrayList<InstallMetaData>();
+ beanMetaData.setInstalls(installs);
+ }
+ installs.add((InstallMetaData) lifecycle);
+ }
+
+}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/LifecycleMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/LifecycleMetaDataBuilder.java 2007-01-19 18:19:23 UTC (rev 59849)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/LifecycleMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -33,30 +33,25 @@
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
-public abstract class LifecycleMetaDataBuilder
+public abstract class LifecycleMetaDataBuilder extends StateMetaDataBuilder
{
- private AbstractBeanMetaData beanMetaData;
- private ParameterMetaDataBuilder<AbstractLifecycleMetaData> builder;
+ protected ParameterMetaDataBuilder<AbstractLifecycleMetaData> builder;
- public LifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ public LifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData)
{
- this.beanMetaData = beanMetaData;
+ super(beanMetaData);
}
abstract LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData);
- abstract void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle);
+ protected AbstractLifecycleMetaData createLifecycleMetaData()
+ {
+ return new AbstractLifecycleMetaData();
+ }
- public LifecycleMetaData createLifecycleMetaData(String methodName)
+ protected void applyAfterSet(AbstractLifecycleMetaData lifecycle)
{
- AbstractLifecycleMetaData lifecycle = new AbstractLifecycleMetaData();
- if (methodName != null)
- {
- lifecycle.setMethodName(methodName);
- }
- setLifecycle(beanMetaData, lifecycle);
builder = new ParameterMetaDataBuilder<AbstractLifecycleMetaData>(lifecycle);
- return lifecycle;
}
public LifecycleMetaData addParameterMetaData(String type, Object value)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StartLifecycleMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StartLifecycleMetaDataBuilder.java 2007-01-19 18:19:23 UTC (rev 59849)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StartLifecycleMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -36,19 +36,18 @@
* Create a new StartLifecycleMetaDataBuilder.
*
* @param beanMetaData
- * @throws IllegalArgumentException
*/
- public StartLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ public StartLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData)
{
super(beanMetaData);
}
- LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
+ protected LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
{
return beanMetaData.getStart();
}
- void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ protected void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
{
beanMetaData.setStart(lifecycle);
}
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StateMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StateMetaDataBuilder.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StateMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -0,0 +1,62 @@
+/*
+* 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.beans.metadata.plugins.builder;
+
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
+import org.jboss.beans.metadata.spi.LifecycleMetaData;
+
+/**
+ * Helper class.
+ * @see org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder
+ * @see org.jboss.beans.metadata.plugins.builder.ParameterMetaDataBuilder
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public abstract class StateMetaDataBuilder
+{
+ protected AbstractBeanMetaData beanMetaData;
+
+ public StateMetaDataBuilder(AbstractBeanMetaData beanMetaData)
+ {
+ this.beanMetaData = beanMetaData;
+ }
+
+ protected abstract void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle);
+
+ protected abstract AbstractLifecycleMetaData createLifecycleMetaData();
+
+ protected abstract void applyAfterSet(AbstractLifecycleMetaData lifecycle);
+
+ public LifecycleMetaData createLifecycleMetaData(String methodName)
+ {
+ AbstractLifecycleMetaData lifecycle = createLifecycleMetaData();
+ if (methodName != null)
+ {
+ lifecycle.setMethodName(methodName);
+ }
+ setLifecycle(beanMetaData, lifecycle);
+ applyAfterSet(lifecycle);
+ return lifecycle;
+ }
+
+}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StopLifecycleMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StopLifecycleMetaDataBuilder.java 2007-01-19 18:19:23 UTC (rev 59849)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StopLifecycleMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -36,19 +36,18 @@
* Create a new StopLifecycleMetaDataBuilder.
*
* @param beanMetaData
- * @throws IllegalArgumentException
*/
- public StopLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ public StopLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData)
{
super(beanMetaData);
}
- LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
+ protected LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
{
return beanMetaData.getStop();
}
- void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ protected void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
{
beanMetaData.setStop(lifecycle);
}
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/UninstallMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/UninstallMetaDataBuilder.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/UninstallMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -0,0 +1,59 @@
+/*
+* 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.beans.metadata.plugins.builder;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.spi.LifecycleMetaData;
+import org.jboss.beans.metadata.spi.InstallMetaData;
+
+/**
+ * UninstallMetaDataBuilder.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class UninstallMetaDataBuilder extends AbstractInstallMetaDataBuilder
+{
+ /**
+ * Create a new StartLifecycleMetaDataBuilder.
+ *
+ * @param beanMetaData
+ */
+ public UninstallMetaDataBuilder(AbstractBeanMetaData beanMetaData)
+ {
+ super(beanMetaData);
+ }
+
+ protected void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ {
+ List<InstallMetaData> uninstalls = beanMetaData.getUninstalls();
+ if (uninstalls == null)
+ {
+ uninstalls = new ArrayList<InstallMetaData>();
+ beanMetaData.setUninstalls(uninstalls);
+ }
+ uninstalls.add((InstallMetaData) lifecycle);
+ }
+
+}
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 2007-01-19 18:19:23 UTC (rev 59849)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -21,9 +21,7 @@
*/
package org.jboss.beans.metadata.spi.builder;
-import java.util.ArrayList;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
@@ -35,16 +33,18 @@
import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
import org.jboss.beans.metadata.plugins.AbstractSupplyMetaData;
import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
+import org.jboss.beans.metadata.plugins.builder.AbstractInstallMetaDataBuilder;
import org.jboss.beans.metadata.plugins.builder.CreateLifecycleMetaDataBuilder;
import org.jboss.beans.metadata.plugins.builder.DestroyLifecycleMetaDataBuilder;
+import org.jboss.beans.metadata.plugins.builder.InstallMetaDataBuilder;
import org.jboss.beans.metadata.plugins.builder.LifecycleMetaDataBuilder;
import org.jboss.beans.metadata.plugins.builder.ParameterMetaDataBuilder;
import org.jboss.beans.metadata.plugins.builder.StartLifecycleMetaDataBuilder;
import org.jboss.beans.metadata.plugins.builder.StopLifecycleMetaDataBuilder;
+import org.jboss.beans.metadata.plugins.builder.UninstallMetaDataBuilder;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.DemandMetaData;
import org.jboss.beans.metadata.spi.DependencyMetaData;
-import org.jboss.beans.metadata.spi.InstallMetaData;
import org.jboss.beans.metadata.spi.PropertyMetaData;
import org.jboss.beans.metadata.spi.SupplyMetaData;
import org.jboss.dependency.spi.ControllerMode;
@@ -54,7 +54,6 @@
* Similar to StringBuffer, methods return current instance of BeanMetaDataBuilder.
*
* TODO - add on demand, when building OSGi, Spring, ...
- * TODO - install/uninstall parametrers
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
@@ -67,6 +66,9 @@
private LifecycleMetaDataBuilder startBuilder;
private LifecycleMetaDataBuilder stopBuilder;
private LifecycleMetaDataBuilder destroyBuilder;
+ // install
+ private AbstractInstallMetaDataBuilder installBuilder;
+ private AbstractInstallMetaDataBuilder uninstallBuilder;
public BeanMetaDataBuilder(String bean)
{
@@ -86,6 +88,9 @@
startBuilder = new StartLifecycleMetaDataBuilder(beanMetaData);
stopBuilder = new StopLifecycleMetaDataBuilder(beanMetaData);
destroyBuilder = new DestroyLifecycleMetaDataBuilder(beanMetaData);
+ // install
+ installBuilder = new InstallMetaDataBuilder(beanMetaData);
+ uninstallBuilder = new UninstallMetaDataBuilder(beanMetaData);
}
public BeanMetaData getBeanMetaData()
@@ -221,29 +226,73 @@
public BeanMetaDataBuilder addInstall(String methodName)
{
- List<InstallMetaData> installs = beanMetaData.getInstalls();
- if (installs == null)
+ return addInstall(methodName, null);
+ }
+
+ public BeanMetaDataBuilder addInstall(String methodName, String bean)
+ {
+ return addInstall(methodName, bean, new String[]{}, new Object[]{});
+ }
+
+ public BeanMetaDataBuilder addInstall(String methodName, String type, Object value)
+ {
+ return addInstall(methodName, null, type, value);
+ }
+
+ public BeanMetaDataBuilder addInstall(String methodName, String bean, String type, Object value)
+ {
+ return addInstall(methodName, bean, new String[]{type}, new Object[]{value});
+ }
+
+ public BeanMetaDataBuilder addInstall(String methodName, String[] types, Object[] values)
+ {
+ return addInstall(methodName, null, types, values);
+ }
+
+ public BeanMetaDataBuilder addInstall(String methodName, String bean, String[] types, Object[] values)
+ {
+ AbstractInstallMetaData install = (AbstractInstallMetaData)installBuilder.createLifecycleMetaData(methodName);
+ install.setBean(bean);
+ for(int i = 0; i < types.length; i++)
{
- installs = new ArrayList<InstallMetaData>();
- beanMetaData.setInstalls(installs);
+ installBuilder.addParameter(install, types[i], values[i]);
}
- AbstractInstallMetaData installMetaData = new AbstractInstallMetaData();
- installMetaData.setMethodName(methodName);
- installs.add(installMetaData);
return this;
}
public BeanMetaDataBuilder addUninstall(String methodName)
{
- List<InstallMetaData> uninstalls = beanMetaData.getUninstalls();
- if (uninstalls == null)
+ return addUninstall(methodName, null);
+ }
+
+ public BeanMetaDataBuilder addUninstall(String methodName, String type, Object value)
+ {
+ return addUninstall(methodName, new String[]{type}, new Object[]{value});
+ }
+
+ public BeanMetaDataBuilder addUninstall(String methodName, String[] types, Object[] values)
+ {
+ return addUninstall(methodName, null, types, values);
+ }
+
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean)
+ {
+ return addUninstall(methodName, bean, new String[]{}, new Object[]{});
+ }
+
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean, String type, Object value)
+ {
+ return addUninstall(methodName, bean, new String[]{type}, new Object[]{value});
+ }
+
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean, String[] types, Object[] values)
+ {
+ AbstractInstallMetaData uninstall = (AbstractInstallMetaData)uninstallBuilder.createLifecycleMetaData(methodName);
+ uninstall.setBean(bean);
+ for(int i = 0; i < types.length; i++)
{
- uninstalls = new ArrayList<InstallMetaData>();
- beanMetaData.setUninstalls(uninstalls);
+ uninstallBuilder.addParameter(uninstall, types[i], values[i]);
}
- AbstractInstallMetaData uninstallMetaData = new AbstractInstallMetaData();
- uninstallMetaData.setMethodName(methodName);
- uninstalls.add(uninstallMetaData);
return this;
}
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/support/SimpleLifecycleBean.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/support/SimpleLifecycleBean.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/support/SimpleLifecycleBean.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -0,0 +1,91 @@
+/*
+* 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.config.support;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class SimpleLifecycleBean
+{
+ private String create;
+ private String start;
+ private String stop;
+ private String destroy;
+
+ private String install;
+
+ public void create(String param)
+ {
+ create = param;
+ }
+
+ public void doStart(String param)
+ {
+ start = param;
+ }
+
+ public void doStop(String param)
+ {
+ stop = param;
+ }
+
+ public void destroy(String param)
+ {
+ destroy = param;
+ }
+
+ public String getCreate()
+ {
+ return create;
+ }
+
+ public String getStart()
+ {
+ return start;
+ }
+
+ public String getStop()
+ {
+ return stop;
+ }
+
+ public String getDestroy()
+ {
+ return destroy;
+ }
+
+ public String getInstall()
+ {
+ return install;
+ }
+
+ public void installParam(String param)
+ {
+ install = param;
+ }
+
+ public void uninstallParam(String param)
+ {
+ install = param;
+ }
+
+}
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -0,0 +1,124 @@
+/*
+* 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.config.test;
+
+import junit.framework.Test;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.test.kernel.config.support.SimpleBean;
+import org.jboss.test.kernel.config.support.SimpleLifecycleBean;
+
+/**
+ * Builder TestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class BeanMetaDataBuilderTestCase extends AbstractKernelConfigTest
+{
+ public static Test suite()
+ {
+ return suite(BeanMetaDataBuilderTestCase.class);
+ }
+
+ public BeanMetaDataBuilderTestCase(String name) throws Throwable
+ {
+ super(name);
+ }
+
+ public void testConstructor() throws Throwable
+ {
+ Kernel kernel = bootstrap();
+
+ BeanMetaDataBuilder builder = new BeanMetaDataBuilder("FromBMD", SimpleBean.class.getName());
+ builder.addConstructorParameter(String.class.getName(), "TestConstructor");
+ BeanMetaData beanMetaData = builder.getBeanMetaData();
+ SimpleBean fbmd = (SimpleBean)instantiateAndConfigure(kernel.getConfigurator(), beanMetaData);
+
+ assertNotNull(fbmd);
+ assertNotNull(fbmd.getConstructorUsed());
+ assertEquals("TestConstructor", fbmd.getConstructorUsed());
+ }
+
+ public void testLifecycle() throws Throwable
+ {
+ Kernel kernel = bootstrap();
+
+ BeanMetaDataBuilder builder = new BeanMetaDataBuilder("SLB", SimpleLifecycleBean.class.getName())
+ .addCreateParameter(String.class.getName(), "ParamCreate")
+ .setStart("doStart")
+ .addStartParameter(String.class.getName(), "ParamStart")
+ .setStop("doStop")
+ .addStopParameter(String.class.getName(), "ParamStop")
+ .addDestroyParameter(String.class.getName(), "ParamDestroy");
+ BeanMetaData beanMetaData = builder.getBeanMetaData();
+
+ KernelController controller = kernel.getController();
+
+ KernelControllerContext context = controller.install(beanMetaData);
+ SimpleLifecycleBean slb = (SimpleLifecycleBean)context.getTarget();
+
+ assertNotNull(slb);
+ assertEquals("ParamCreate", slb.getCreate());
+ assertEquals("ParamStart", slb.getStart());
+
+ controller.uninstall("SLB");
+
+ assertEquals("ParamStop", slb.getStop());
+ assertEquals("ParamDestroy", slb.getDestroy());
+ }
+
+ public void testInstall() throws Throwable
+ {
+ Kernel kernel = bootstrap();
+
+ BeanMetaDataBuilder builder = new BeanMetaDataBuilder("SLB", SimpleLifecycleBean.class.getName())
+ .addInstall("installParam", String.class.getName(), "Install")
+ .addUninstall("uninstallParam", String.class.getName(), "Uninstall");
+ BeanMetaData beanMetaData = builder.getBeanMetaData();
+
+ KernelController controller = kernel.getController();
+
+ KernelControllerContext context = controller.install(beanMetaData);
+ SimpleLifecycleBean slb = (SimpleLifecycleBean)context.getTarget();
+
+ assertNotNull(slb);
+ assertEquals("Install", slb.getInstall());
+
+ controller.uninstall("SLB");
+
+ assertEquals("Uninstall", slb.getInstall());
+ }
+
+ public void testDemandSupply() throws Throwable
+ {
+ // todo
+ }
+
+ public void testDependency() throws Throwable
+ {
+ // todo
+ }
+
+}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/ConfigTestSuite.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/ConfigTestSuite.java 2007-01-19 18:19:23 UTC (rev 59849)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/ConfigTestSuite.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -64,6 +64,7 @@
suite.addTest(MapXMLTestCase.suite());
suite.addTest(ProgressionTestCase.suite());
suite.addTest(ProgressionXMLTestCase.suite());
+ suite.addTest(BeanMetaDataBuilderTestCase.suite());
return suite;
}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/metadata/test/MetaDataTestSuite.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/metadata/test/MetaDataTestSuite.java 2007-01-19 18:19:23 UTC (rev 59849)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/metadata/test/MetaDataTestSuite.java 2007-01-19 18:21:34 UTC (rev 59850)
@@ -43,7 +43,7 @@
TestSuite suite = new TestSuite("MetaData Tests");
suite.addTest(ClassAnnotationTestCase.suite());
-
+
return suite;
}
}
More information about the jboss-cvs-commits
mailing list