[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