[jboss-cvs] JBossAS SVN: r59524 - in projects/microcontainer/trunk: kernel/src/main/org/jboss/beans/metadata/plugins and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jan 11 08:23:05 EST 2007
Author: adrian at jboss.org
Date: 2007-01-11 08:22:49 -0500 (Thu, 11 Jan 2007)
New Revision: 59524
Added:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/
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/MutableParameterizedMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/ParameterMetaDataBuilder.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/ParameterizedMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
Removed:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/BeanMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/LifecycleMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ParameterMetaDataBuilder.java
Modified:
projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ProgressionConvertor.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/ConstructorMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/LifecycleMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/config/Configurator.java
Log:
Fix the MC testsuite.
Refactor the new builder.
Some sourcecode tidyup.
Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ProgressionConvertor.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ProgressionConvertor.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ProgressionConvertor.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -45,6 +45,7 @@
* @param target class type
* @param value to progress
* @return progressed value - it's class type now equals to target
+ * @throws Throwable for any error
*/
Object doProgression(Class<? extends Object> target, Object value) throws Throwable;
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -25,6 +25,7 @@
import java.util.*;
import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.metadata.plugins.builder.MutableParameterizedMetaData;
import org.jboss.beans.metadata.spi.*;
import org.jboss.kernel.plugins.config.Configurator;
import org.jboss.kernel.spi.config.KernelConfigurator;
@@ -42,7 +43,7 @@
* @version $Revision$
*/
public class AbstractConstructorMetaData extends AbstractFeatureMetaData
- implements ConstructorMetaData, Serializable
+ implements ConstructorMetaData, MutableParameterizedMetaData, Serializable
{
private static final long serialVersionUID = 1L;
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-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -25,6 +25,7 @@
import java.util.List;
import java.util.Set;
+import org.jboss.beans.metadata.plugins.builder.MutableParameterizedMetaData;
import org.jboss.beans.metadata.spi.LifecycleMetaData;
import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
@@ -44,7 +45,7 @@
* @version $Revision$
*/
public class AbstractLifecycleMetaData extends AbstractFeatureMetaData
- implements LifecycleMetaData, Serializable
+ implements LifecycleMetaData, MutableParameterizedMetaData, Serializable
{
private static final long serialVersionUID = 1L;
Deleted: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/BeanMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/BeanMetaDataBuilder.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/BeanMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -1,231 +0,0 @@
-/*
-* 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;
-
-import java.util.Set;
-import java.util.HashSet;
-import java.util.List;
-import java.util.ArrayList;
-
-import org.jboss.beans.metadata.spi.*;
-import org.jboss.dependency.spi.ControllerMode;
-
-/**
- * Helper class.
- * Similar to StringBuffer, methods return current instance of BeanMetaDataBuilder.
- *
- * TODO - add on demand, when building OSGi, Spring, ...
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class BeanMetaDataBuilder
-{
- private AbstractBeanMetaData beanMetaData;
- // parameter builders
- private ParameterMetaDataBuilder<ConstructorMetaData> constructorBuilder;
- private LifecycleMetaDataBuilder createBuilder;
- private LifecycleMetaDataBuilder startBuilder;
- private LifecycleMetaDataBuilder stopBuilder;
- private LifecycleMetaDataBuilder destroyBuilder;
-// private ParameterMetaDataBuilder<InstallMetaData> installBuilder;
-// private ParameterMetaDataBuilder<InstallMetaData> uninstallBuilder;
-
- public BeanMetaDataBuilder(String bean)
- {
- this(new AbstractBeanMetaData(bean));
- }
-
- public BeanMetaDataBuilder(String name, String bean)
- {
- this(new AbstractBeanMetaData(name, bean));
- }
-
- public BeanMetaDataBuilder(AbstractBeanMetaData beanMetaData)
- {
- this.beanMetaData = beanMetaData;
- // lifecycle builders
- createBuilder = new LifecycleMetaDataBuilder(beanMetaData, LifecycleMetaDataBuilder.LifecycleType.CREATE);
- startBuilder = new LifecycleMetaDataBuilder(beanMetaData, LifecycleMetaDataBuilder.LifecycleType.START);
- stopBuilder = new LifecycleMetaDataBuilder(beanMetaData, LifecycleMetaDataBuilder.LifecycleType.STOP);
- destroyBuilder = new LifecycleMetaDataBuilder(beanMetaData, LifecycleMetaDataBuilder.LifecycleType.DESTROY);
- }
-
- public BeanMetaData getBeanMetaData()
- {
- return beanMetaData;
- }
-
- public BeanMetaDataBuilder setMode(String modeString)
- {
- return setMode(new ControllerMode(modeString));
- }
-
- public BeanMetaDataBuilder setMode(ControllerMode mode)
- {
- beanMetaData.setMode(mode);
- return this;
- }
-
- public BeanMetaDataBuilder setClassLoader(Object classLoader)
- {
- beanMetaData.setClassLoader(new AbstractClassLoaderMetaData(new AbstractValueMetaData(classLoader)));
- return this;
- }
-
- public BeanMetaDataBuilder addConstructorParameter(String type, Object value)
- {
- ConstructorMetaData constructor = beanMetaData.getConstructor();
- if (constructor == null)
- {
- constructor = new AbstractConstructorMetaData();
- beanMetaData.setConstructor(constructor);
- constructorBuilder = new ParameterMetaDataBuilder<ConstructorMetaData>(constructor);
- }
- constructorBuilder.addParameterMetaData(type, value);
- return this;
- }
-
- public BeanMetaDataBuilder addPropertyMetaData(String name, Object value)
- {
- Set<PropertyMetaData> properties = beanMetaData.getProperties();
- if (properties == null)
- {
- properties = new HashSet<PropertyMetaData>();
- beanMetaData.setProperties(properties);
- }
- properties.add(new AbstractPropertyMetaData(name, value));
- return this;
- }
-
- public BeanMetaDataBuilder setCreate(String methodName)
- {
- createBuilder.createLifecycleMetaData(methodName);
- return this;
- }
-
- public BeanMetaDataBuilder addCreateParameter(String type, Object value)
- {
- createBuilder.addParameterMetaData(type, value);
- return this;
- }
-
- public BeanMetaDataBuilder setStart(String methodName)
- {
- startBuilder.createLifecycleMetaData(methodName);
- return this;
- }
-
- public BeanMetaDataBuilder addStartParameter(String type, Object value)
- {
- startBuilder.addParameterMetaData(type, value);
- return this;
- }
-
- public BeanMetaDataBuilder setStop(String methodName)
- {
- stopBuilder.createLifecycleMetaData(methodName);
- return this;
- }
-
- public BeanMetaDataBuilder addStopParameter(String type, Object value)
- {
- stopBuilder.addParameterMetaData(type, value);
- return this;
- }
-
- public BeanMetaDataBuilder setDestroy(String methodName)
- {
- destroyBuilder.createLifecycleMetaData(methodName);
- return this;
- }
-
- public BeanMetaDataBuilder addDestroyParameter(String type, Object value)
- {
- destroyBuilder.addParameterMetaData(type, value);
- return this;
- }
-
- public BeanMetaDataBuilder addSupply(Object supply)
- {
- Set<SupplyMetaData> supplies = beanMetaData.getSupplies();
- if (supplies == null)
- {
- supplies = new HashSet<SupplyMetaData>();
- beanMetaData.setSupplies(supplies);
- }
- supplies.add(new AbstractSupplyMetaData(supply));
- return this;
- }
-
- public BeanMetaDataBuilder addDemand(Object demand)
- {
- Set<DemandMetaData> demands = beanMetaData.getDemands();
- if (demands == null)
- {
- demands = new HashSet<DemandMetaData>();
- beanMetaData.setDemands(demands);
- }
- demands.add(new AbstractDemandMetaData(demand));
- return this;
- }
-
- public BeanMetaDataBuilder addDependency(Object dependency)
- {
- Set<DependencyMetaData> dependencies = beanMetaData.getDepends();
- if (dependencies == null)
- {
- dependencies = new HashSet<DependencyMetaData>();
- beanMetaData.setDepends(dependencies);
- }
- dependencies.add(new AbstractDependencyMetaData(dependency));
- return this;
- }
-
- public BeanMetaDataBuilder addInstall(String methodName)
- {
- List<InstallMetaData> installs = beanMetaData.getInstalls();
- if (installs == null)
- {
- installs = new ArrayList<InstallMetaData>();
- beanMetaData.setInstalls(installs);
- }
- 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)
- {
- uninstalls = new ArrayList<InstallMetaData>();
- beanMetaData.setUninstalls(uninstalls);
- }
- AbstractInstallMetaData uninstallMetaData = new AbstractInstallMetaData();
- uninstallMetaData.setMethodName(methodName);
- uninstalls.add(uninstallMetaData);
- return this;
- }
-
-}
Deleted: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/LifecycleMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/LifecycleMetaDataBuilder.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/LifecycleMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -1,122 +0,0 @@
-/*
-* 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;
-
-import java.lang.reflect.Method;
-
-import org.jboss.beans.metadata.spi.LifecycleMetaData;
-
-/**
- * Helper class.
- * @see BeanMetaDataBuilder
- * @see ParameterMetaDataBuilder
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class LifecycleMetaDataBuilder
-{
- private AbstractBeanMetaData beanMetaData;
- private Method GET_METHOD;
- private Method SET_METHOD;
- private ParameterMetaDataBuilder<LifecycleMetaData> builder;
-
- public enum LifecycleType
- {
- CREATE("Create"),
- START("Start"),
- STOP("Stop"),
- DESTROY("Destroy");
-
- private String type;
-
- LifecycleType(String type)
- {
- this.type = type;
- }
-
- public String toString()
- {
- return type;
- }
- }
-
- public LifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData, LifecycleType type) throws IllegalArgumentException
- {
- this.beanMetaData = beanMetaData;
- try
- {
- GET_METHOD = AbstractBeanMetaData.class.getMethod("get" + type);
- SET_METHOD = AbstractBeanMetaData.class.getMethod("set" + type, LifecycleMetaData.class);
- }
- catch (NoSuchMethodException e)
- {
- throw new IllegalArgumentException("Holder MetaData object doesn't implement get or set " + type + " method: " + e);
- }
- }
-
- private LifecycleMetaData getLifecycle()
- {
- try
- {
- return (LifecycleMetaData) GET_METHOD.invoke(beanMetaData);
- }
- catch (Exception e)
- {
- throw new IllegalArgumentException(e);
- }
- }
-
- private void setLifecycle(LifecycleMetaData lifecycle)
- {
- try
- {
- SET_METHOD.invoke(beanMetaData, lifecycle);
- }
- catch (Exception e)
- {
- throw new IllegalArgumentException(e);
- }
- }
-
- public LifecycleMetaData createLifecycleMetaData(String methodName)
- {
- AbstractLifecycleMetaData lifecycle = new AbstractLifecycleMetaData();
- if (methodName != null)
- {
- lifecycle.setMethodName(methodName);
- }
- setLifecycle(lifecycle);
- builder = new ParameterMetaDataBuilder<LifecycleMetaData>(lifecycle);
- return lifecycle;
- }
-
- public LifecycleMetaData addParameterMetaData(String type, Object value)
- {
- LifecycleMetaData lifecycle = getLifecycle();
- if (lifecycle == null)
- {
- createLifecycleMetaData(null);
- }
- return builder.addParameterMetaData(type, value);
- }
-
-}
Deleted: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ParameterMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ParameterMetaDataBuilder.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ParameterMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -1,93 +0,0 @@
-/*
-* 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;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.beans.metadata.spi.ParameterMetaData;
-
-/**
- * Helper class.
- * @see BeanMetaDataBuilder
- * @see LifecycleMetaDataBuilder
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class ParameterMetaDataBuilder<T>
-{
- private T parameterHolder;
- private Method GET_PARAMETERS;
- private Method SET_PARAMETERS;
-
- public ParameterMetaDataBuilder(T parameterHolder) throws IllegalArgumentException
- {
- this.parameterHolder = parameterHolder;
- try
- {
- GET_PARAMETERS = parameterHolder.getClass().getMethod("getParameters");
- SET_PARAMETERS = parameterHolder.getClass().getMethod("setParameters", List.class);
- }
- catch (NoSuchMethodException e)
- {
- throw new IllegalArgumentException("Holder MetaData object doesn't implement get or set parameters method: " + e);
- }
- }
-
- private List<ParameterMetaData> getParameters()
- {
- try
- {
- return (List<ParameterMetaData>) GET_PARAMETERS.invoke(parameterHolder);
- }
- catch (Exception e)
- {
- throw new IllegalArgumentException(e);
- }
- }
-
- private void setParameters(List<ParameterMetaData> parameters)
- {
- try
- {
- SET_PARAMETERS.invoke(parameterHolder, parameters);
- }
- catch (Exception e)
- {
- throw new IllegalArgumentException(e);
- }
- }
-
- public T addParameterMetaData(String type, Object value)
- {
- List<ParameterMetaData> parameters = getParameters();
- if (parameters == null)
- {
- parameters = new ArrayList<ParameterMetaData>();
- setParameters(parameters);
- }
- parameters.add(new AbstractParameterMetaData(type, value));
- return parameterHolder;
- }
-
-}
Added: 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-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/CreateLifecycleMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -0,0 +1,56 @@
+/*
+* 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.spi.LifecycleMetaData;
+
+/**
+ * CreateLifecycleMetaDataBuilder.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class CreateLifecycleMetaDataBuilder extends LifecycleMetaDataBuilder
+{
+ /**
+ * Create a new CreateLifecycleMetaDataBuilder.
+ *
+ * @param beanMetaData
+ * @throws IllegalArgumentException
+ */
+ public CreateLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ {
+ super(beanMetaData);
+ }
+
+ LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
+ {
+ return beanMetaData.getCreate();
+ }
+
+ void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ {
+ beanMetaData.setCreate(lifecycle);
+ }
+
+}
\ No newline at end of file
Added: 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-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/DestroyLifecycleMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -0,0 +1,56 @@
+/*
+* 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.spi.LifecycleMetaData;
+
+/**
+ * DestroyLifecycleMetaDataBuilder.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class DestroyLifecycleMetaDataBuilder extends LifecycleMetaDataBuilder
+{
+ /**
+ * Create a new DestroyLifecycleMetaDataBuilder.
+ *
+ * @param beanMetaData
+ * @throws IllegalArgumentException
+ */
+ public DestroyLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ {
+ super(beanMetaData);
+ }
+
+ LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
+ {
+ return beanMetaData.getDestroy();
+ }
+
+ void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ {
+ beanMetaData.setDestroy(lifecycle);
+ }
+
+}
\ No newline at end of file
Added: 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-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/LifecycleMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -0,0 +1,72 @@
+/*
+* 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;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+
+/**
+ * Helper class.
+ * @see BeanMetaDataBuilder
+ * @see ParameterMetaDataBuilder
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public abstract class LifecycleMetaDataBuilder
+{
+ private AbstractBeanMetaData beanMetaData;
+ private ParameterMetaDataBuilder<AbstractLifecycleMetaData> builder;
+
+ public LifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ {
+ this.beanMetaData = beanMetaData;
+ }
+
+ abstract LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData);
+
+ abstract void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle);
+
+ public LifecycleMetaData createLifecycleMetaData(String methodName)
+ {
+ 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)
+ {
+ LifecycleMetaData lifecycle = getLifecycle(beanMetaData);
+ if (lifecycle == null)
+ {
+ createLifecycleMetaData(null);
+ }
+ return builder.addParameterMetaData(type, value);
+ }
+
+}
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/MutableParameterizedMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/MutableParameterizedMetaData.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/MutableParameterizedMetaData.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -0,0 +1,43 @@
+/*
+* 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 org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.beans.metadata.spi.ParameterizedMetaData;
+
+/**
+ * MutableParameterizedMetaData.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface MutableParameterizedMetaData extends ParameterizedMetaData
+{
+ /**
+ * Set the parameters.
+ *
+ * @param parameters the parameters
+ */
+ void setParameters(List<ParameterMetaData> parameters);
+}
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/ParameterMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/ParameterMetaDataBuilder.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/ParameterMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -0,0 +1,70 @@
+/*
+* 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.ArrayList;
+import java.util.List;
+
+import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+
+/**
+ * Helper class.
+ *
+ * @param <T> the parameter holder type
+ * @see BeanMetaDataBuilder
+ * @see LifecycleMetaDataBuilder
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ParameterMetaDataBuilder<T extends MutableParameterizedMetaData>
+{
+ private T parameterHolder;
+
+ public ParameterMetaDataBuilder(T parameterHolder) throws IllegalArgumentException
+ {
+ this.parameterHolder = parameterHolder;
+ }
+
+ private List<ParameterMetaData> getParameters()
+ {
+ return parameterHolder.getParameters();
+ }
+
+ private void setParameters(List<ParameterMetaData> parameters)
+ {
+ parameterHolder.setParameters(parameters);
+ }
+
+ public T addParameterMetaData(String type, Object value)
+ {
+ List<ParameterMetaData> parameters = getParameters();
+ if (parameters == null)
+ {
+ parameters = new ArrayList<ParameterMetaData>();
+ setParameters(parameters);
+ }
+ parameters.add(new AbstractParameterMetaData(type, value));
+ return parameterHolder;
+ }
+
+}
Added: 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-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StartLifecycleMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -0,0 +1,56 @@
+/*
+* 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.spi.LifecycleMetaData;
+
+/**
+ * StartLifecycleMetaDataBuilder.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class StartLifecycleMetaDataBuilder extends LifecycleMetaDataBuilder
+{
+ /**
+ * Create a new StartLifecycleMetaDataBuilder.
+ *
+ * @param beanMetaData
+ * @throws IllegalArgumentException
+ */
+ public StartLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ {
+ super(beanMetaData);
+ }
+
+ LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
+ {
+ return beanMetaData.getStart();
+ }
+
+ void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ {
+ beanMetaData.setStart(lifecycle);
+ }
+
+}
\ No newline at end of file
Added: 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-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StopLifecycleMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -0,0 +1,56 @@
+/*
+* 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.spi.LifecycleMetaData;
+
+/**
+ * StopLifecycleMetaDataBuilder.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class StopLifecycleMetaDataBuilder extends LifecycleMetaDataBuilder
+{
+ /**
+ * Create a new StopLifecycleMetaDataBuilder.
+ *
+ * @param beanMetaData
+ * @throws IllegalArgumentException
+ */
+ public StopLifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData) throws IllegalArgumentException
+ {
+ super(beanMetaData);
+ }
+
+ LifecycleMetaData getLifecycle(AbstractBeanMetaData beanMetaData)
+ {
+ return beanMetaData.getStop();
+ }
+
+ void setLifecycle(AbstractBeanMetaData beanMetaData, LifecycleMetaData lifecycle)
+ {
+ beanMetaData.setStop(lifecycle);
+ }
+
+}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/ConstructorMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/ConstructorMetaData.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/ConstructorMetaData.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -21,7 +21,6 @@
*/
package org.jboss.beans.metadata.spi;
-import java.util.List;
/**
* Metadata about construction.
@@ -29,16 +28,9 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision$
*/
-public interface ConstructorMetaData extends FeatureMetaData
+public interface ConstructorMetaData extends ParameterizedMetaData, FeatureMetaData
{
/**
- * Get the parameters.
- *
- * @return List<ParameterMetaData>.
- */
- List<ParameterMetaData> getParameters();
-
- /**
* Get the value.
*
* @return the value.
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/LifecycleMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/LifecycleMetaData.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/LifecycleMetaData.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -21,8 +21,6 @@
*/
package org.jboss.beans.metadata.spi;
-import java.util.List;
-
import org.jboss.dependency.spi.ControllerState;
/**
@@ -31,7 +29,7 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision$
*/
-public interface LifecycleMetaData extends FeatureMetaData
+public interface LifecycleMetaData extends ParameterizedMetaData, FeatureMetaData
{
/**
* Get the state
@@ -53,11 +51,4 @@
* @return the method name.
*/
String getMethodName();
-
- /**
- * Get the parameters.
- *
- * @return List<ParameterMetaData>.
- */
- List<ParameterMetaData> getParameters();
}
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/ParameterizedMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/ParameterizedMetaData.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/ParameterizedMetaData.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -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.beans.metadata.spi;
+
+import java.util.List;
+
+/**
+ * ParameterizedMetaData.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ParameterizedMetaData
+{
+ /**
+ * Get the parameters.
+ *
+ * @return List<ParameterMetaData>.
+ */
+ List<ParameterMetaData> getParameters();
+}
Copied: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java (from rev 59429, projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/BeanMetaDataBuilder.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/BeanMetaDataBuilder.java 2007-01-09 04:03:44 UTC (rev 59429)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -0,0 +1,250 @@
+/*
+* 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.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;
+import org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData;
+import org.jboss.beans.metadata.plugins.AbstractConstructorMetaData;
+import org.jboss.beans.metadata.plugins.AbstractDemandMetaData;
+import org.jboss.beans.metadata.plugins.AbstractDependencyMetaData;
+import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
+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.CreateLifecycleMetaDataBuilder;
+import org.jboss.beans.metadata.plugins.builder.DestroyLifecycleMetaDataBuilder;
+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.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;
+
+/**
+ * Helper class.
+ * 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>
+ */
+public class BeanMetaDataBuilder
+{
+ private AbstractBeanMetaData beanMetaData;
+ // parameter builders
+ private ParameterMetaDataBuilder<AbstractConstructorMetaData> constructorBuilder;
+ private LifecycleMetaDataBuilder createBuilder;
+ private LifecycleMetaDataBuilder startBuilder;
+ private LifecycleMetaDataBuilder stopBuilder;
+ private LifecycleMetaDataBuilder destroyBuilder;
+
+ public BeanMetaDataBuilder(String bean)
+ {
+ this(new AbstractBeanMetaData(bean));
+ }
+
+ public BeanMetaDataBuilder(String name, String bean)
+ {
+ this(new AbstractBeanMetaData(name, bean));
+ }
+
+ public BeanMetaDataBuilder(AbstractBeanMetaData beanMetaData)
+ {
+ this.beanMetaData = beanMetaData;
+ // lifecycle builders
+ createBuilder = new CreateLifecycleMetaDataBuilder(beanMetaData);
+ startBuilder = new StartLifecycleMetaDataBuilder(beanMetaData);
+ stopBuilder = new StopLifecycleMetaDataBuilder(beanMetaData);
+ destroyBuilder = new DestroyLifecycleMetaDataBuilder(beanMetaData);
+ }
+
+ public BeanMetaData getBeanMetaData()
+ {
+ return beanMetaData;
+ }
+
+ public BeanMetaDataBuilder setMode(String modeString)
+ {
+ return setMode(new ControllerMode(modeString));
+ }
+
+ public BeanMetaDataBuilder setMode(ControllerMode mode)
+ {
+ beanMetaData.setMode(mode);
+ return this;
+ }
+
+ public BeanMetaDataBuilder setClassLoader(Object classLoader)
+ {
+ beanMetaData.setClassLoader(new AbstractClassLoaderMetaData(new AbstractValueMetaData(classLoader)));
+ return this;
+ }
+
+ public BeanMetaDataBuilder addConstructorParameter(String type, Object value)
+ {
+ AbstractConstructorMetaData constructor = (AbstractConstructorMetaData) beanMetaData.getConstructor();
+ if (constructor == null)
+ {
+ constructor = new AbstractConstructorMetaData();
+ beanMetaData.setConstructor(constructor);
+ constructorBuilder = new ParameterMetaDataBuilder<AbstractConstructorMetaData>(constructor);
+ }
+ constructorBuilder.addParameterMetaData(type, value);
+ return this;
+ }
+
+ public BeanMetaDataBuilder addPropertyMetaData(String name, Object value)
+ {
+ Set<PropertyMetaData> properties = beanMetaData.getProperties();
+ if (properties == null)
+ {
+ properties = new HashSet<PropertyMetaData>();
+ beanMetaData.setProperties(properties);
+ }
+ properties.add(new AbstractPropertyMetaData(name, value));
+ return this;
+ }
+
+ public BeanMetaDataBuilder setCreate(String methodName)
+ {
+ createBuilder.createLifecycleMetaData(methodName);
+ return this;
+ }
+
+ public BeanMetaDataBuilder addCreateParameter(String type, Object value)
+ {
+ createBuilder.addParameterMetaData(type, value);
+ return this;
+ }
+
+ public BeanMetaDataBuilder setStart(String methodName)
+ {
+ startBuilder.createLifecycleMetaData(methodName);
+ return this;
+ }
+
+ public BeanMetaDataBuilder addStartParameter(String type, Object value)
+ {
+ startBuilder.addParameterMetaData(type, value);
+ return this;
+ }
+
+ public BeanMetaDataBuilder setStop(String methodName)
+ {
+ stopBuilder.createLifecycleMetaData(methodName);
+ return this;
+ }
+
+ public BeanMetaDataBuilder addStopParameter(String type, Object value)
+ {
+ stopBuilder.addParameterMetaData(type, value);
+ return this;
+ }
+
+ public BeanMetaDataBuilder setDestroy(String methodName)
+ {
+ destroyBuilder.createLifecycleMetaData(methodName);
+ return this;
+ }
+
+ public BeanMetaDataBuilder addDestroyParameter(String type, Object value)
+ {
+ destroyBuilder.addParameterMetaData(type, value);
+ return this;
+ }
+
+ public BeanMetaDataBuilder addSupply(Object supply)
+ {
+ Set<SupplyMetaData> supplies = beanMetaData.getSupplies();
+ if (supplies == null)
+ {
+ supplies = new HashSet<SupplyMetaData>();
+ beanMetaData.setSupplies(supplies);
+ }
+ supplies.add(new AbstractSupplyMetaData(supply));
+ return this;
+ }
+
+ public BeanMetaDataBuilder addDemand(Object demand)
+ {
+ Set<DemandMetaData> demands = beanMetaData.getDemands();
+ if (demands == null)
+ {
+ demands = new HashSet<DemandMetaData>();
+ beanMetaData.setDemands(demands);
+ }
+ demands.add(new AbstractDemandMetaData(demand));
+ return this;
+ }
+
+ public BeanMetaDataBuilder addDependency(Object dependency)
+ {
+ Set<DependencyMetaData> dependencies = beanMetaData.getDepends();
+ if (dependencies == null)
+ {
+ dependencies = new HashSet<DependencyMetaData>();
+ beanMetaData.setDepends(dependencies);
+ }
+ dependencies.add(new AbstractDependencyMetaData(dependency));
+ return this;
+ }
+
+ public BeanMetaDataBuilder addInstall(String methodName)
+ {
+ List<InstallMetaData> installs = beanMetaData.getInstalls();
+ if (installs == null)
+ {
+ installs = new ArrayList<InstallMetaData>();
+ beanMetaData.setInstalls(installs);
+ }
+ 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)
+ {
+ uninstalls = new ArrayList<InstallMetaData>();
+ beanMetaData.setUninstalls(uninstalls);
+ }
+ AbstractInstallMetaData uninstallMetaData = new AbstractInstallMetaData();
+ uninstallMetaData.setMethodName(methodName);
+ uninstalls.add(uninstallMetaData);
+ return this;
+ }
+
+}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/config/Configurator.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/config/Configurator.java 2007-01-11 12:25:33 UTC (rev 59523)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/config/Configurator.java 2007-01-11 13:22:49 UTC (rev 59524)
@@ -541,6 +541,7 @@
* Unconfigure a bean property
*
* @param object the object to unconfigure
+ * @param cl the classloader
* @param info the bean info
* @param metaData the property metadata
* @throws Throwable for any error
@@ -590,7 +591,6 @@
if (metaData == null)
throw new IllegalArgumentException("Null bean metadata");
- ClassLoader cl = getClassLoader(metaData);
Set<TargettedJoinpoint> result = new HashSet<TargettedJoinpoint>();
Set<PropertyMetaData> propertys = metaData.getProperties();
if (propertys != null && propertys.isEmpty() == false)
@@ -677,6 +677,7 @@
*
* @param trace whether trace is enabled
* @param info the bean info
+ * @param cl the classloader
* @param name the property name
* @param type the property type
* @return the property info
@@ -692,24 +693,28 @@
if (trace)
log.trace("Resolving property on bean info=" + info + " name=" + name);
- Set properties = info.getProperties();
+ // FIXME the isAssignable and isProgression currently needs a classloader
+ // to work properly, use the bean's classloader if there isn't one provided
+ if (cl == null)
+ cl = info.getClassInfo().getType().getClassLoader();
+
+ Set<PropertyInfo> properties = info.getProperties();
if (properties != null && properties.size() > 0)
{
- for (Iterator i = properties.iterator(); i.hasNext();)
+ for (PropertyInfo ainfo : properties)
{
- PropertyInfo ainfo = (PropertyInfo) i.next();
if (name.equals(ainfo.getName()))
{
String[] typeNames = {type};
TypeInfo[] typeInfos = {ainfo.getType()};
- if (equals(typeNames, typeInfos) || assignable(cl, typeNames, typeInfos) || progression(cl, typeNames, typeInfos))
+ if (equals(typeNames, typeInfos) || isAssignable(cl, typeNames, typeInfos) || isProgression(cl, typeNames, typeInfos))
{
return ainfo;
}
}
}
}
-
+
throw new JoinpointException("Property " + name + " not found for " + info);
}
@@ -881,13 +886,18 @@
/**
* Test whether type names can be assigned to type infos
+ *
+ * TODO isAssignableFrom should be part of the TypeInfo api
+ * with comparisons made between TypeInfos
*
* @param cl bean classloader
* @param typeNames the type names
* @param typeInfos the type infos
* @return true when they can be assigned
+ * @throws Throwable for any error
*/
- public static boolean assignable(ClassLoader cl, String[] typeNames, TypeInfo[] typeInfos) throws Throwable
+ @SuppressWarnings("unchecked")
+ public static boolean isAssignable(ClassLoader cl, String[] typeNames, TypeInfo[] typeInfos) throws Throwable
{
if (cl == null)
return false;
@@ -917,8 +927,9 @@
* @param typeNames the type names
* @param typeInfos the type infos
* @return true when we can use progression
+ * @throws Throwable for any error
*/
- public static boolean progression(ClassLoader cl, String[] typeNames, TypeInfo[] typeInfos) throws Throwable
+ public static boolean isProgression(ClassLoader cl, String[] typeNames, TypeInfo[] typeInfos) throws Throwable
{
if (cl == null)
return false;
More information about the jboss-cvs-commits
mailing list