[jboss-cvs] JBossAS SVN: r69862 - in projects/microcontainer/trunk/kernel/src: main/org/jboss/beans/metadata/spi/builder and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Feb 15 09:11:55 EST 2008
Author: adrian at jboss.org
Date: 2008-02-15 09:11:55 -0500 (Fri, 15 Feb 2008)
New Revision: 69862
Added:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/ParameterMetaDataBuilderImpl.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/ParameterMetaDataBuilder.java
Removed:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/ParameterMetaDataBuilder.java
Modified:
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/BeanMetaDataBuilderImpl.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/StateMetaDataBuilder.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/dependency/test/MatcherDemandSupplyTestCase.java
Log:
General javadoc and fixup of BeanMetaDataBuilder to make it more useful
Modified: 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 2008-02-15 14:10:54 UTC (rev 69861)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/AbstractInstallMetaDataBuilder.java 2008-02-15 14:11:55 UTC (rev 69862)
@@ -29,6 +29,7 @@
* AbstractInstallMetaDataBuilder.
*
* @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
*/
public abstract class AbstractInstallMetaDataBuilder extends StateMetaDataBuilder
{
@@ -51,11 +52,4 @@
{
// 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/BeanMetaDataBuilderImpl.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2008-02-15 14:10:54 UTC (rev 69861)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2008-02-15 14:11:55 UTC (rev 69862)
@@ -21,18 +21,29 @@
*/
package org.jboss.beans.metadata.plugins.builder;
+import java.util.Collection;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
+import org.jboss.beans.metadata.plugins.AbstractArrayMetaData;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData;
+import org.jboss.beans.metadata.plugins.AbstractCollectionMetaData;
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.AbstractDependencyValueMetaData;
import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
+import org.jboss.beans.metadata.plugins.AbstractListMetaData;
+import org.jboss.beans.metadata.plugins.AbstractMapMetaData;
import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
+import org.jboss.beans.metadata.plugins.AbstractSetMetaData;
import org.jboss.beans.metadata.plugins.AbstractSupplyMetaData;
import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
+import org.jboss.beans.metadata.plugins.StringValueMetaData;
+import org.jboss.beans.metadata.plugins.ThisValueMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.DemandMetaData;
import org.jboss.beans.metadata.spi.DependencyMetaData;
@@ -40,6 +51,7 @@
import org.jboss.beans.metadata.spi.SupplyMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.beans.metadata.spi.builder.ParameterMetaDataBuilder;
import org.jboss.dependency.spi.ControllerMode;
import org.jboss.dependency.spi.ControllerState;
@@ -50,30 +62,60 @@
* TODO - add on demand, when building OSGi, Spring, ...
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
*/
-class BeanMetaDataBuilderImpl implements BeanMetaDataBuilder
+class BeanMetaDataBuilderImpl extends BeanMetaDataBuilder
{
+ /** The bean metadata */
private AbstractBeanMetaData beanMetaData;
- // parameter builders
- private ParameterMetaDataBuilder<AbstractConstructorMetaData> constructorBuilder;
+
+ /** The constructor builder */
+ private ParameterMetaDataBuilderImpl<AbstractConstructorMetaData> constructorBuilder;
+
+ /** The create lifecycle builder */
private LifecycleMetaDataBuilder createBuilder;
+
+ /** The start lifecycle builder */
private LifecycleMetaDataBuilder startBuilder;
+
+ /** The stop lifecycle builder */
private LifecycleMetaDataBuilder stopBuilder;
+
+ /** The destroy lifecycle builder */
private LifecycleMetaDataBuilder destroyBuilder;
- // install
+
+ /** The install builder */
private AbstractInstallMetaDataBuilder installBuilder;
+
+ /** The uninstall builder */
private AbstractInstallMetaDataBuilder uninstallBuilder;
+ /**
+ * Create a new BeanMetaDataBuilderImpl.
+ *
+ * @param bean the bean
+ */
public BeanMetaDataBuilderImpl(String bean)
{
this(new AbstractBeanMetaData(bean));
}
+ /**
+ * Create a new BeanMetaDataBuilderImpl.
+ *
+ * @param name the bean name
+ * @param bean the bean
+ */
public BeanMetaDataBuilderImpl(String name, String bean)
{
this(new AbstractBeanMetaData(name, bean));
}
+ /**
+ * Create a new BeanMetaDataBuilderImpl.
+ *
+ * @param beanMetaData the bean metadata
+ */
public BeanMetaDataBuilderImpl(AbstractBeanMetaData beanMetaData)
{
this.beanMetaData = beanMetaData;
@@ -98,20 +140,15 @@
return this;
}
- 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)
+ public BeanMetaDataBuilder setClassLoader(ValueMetaData classLoader)
{
- beanMetaData.setClassLoader(new AbstractClassLoaderMetaData(new AbstractValueMetaData(classLoader)));
+ beanMetaData.setClassLoader(new AbstractClassLoaderMetaData(classLoader));
return this;
}
@@ -122,15 +159,34 @@
{
constructor = new AbstractConstructorMetaData();
beanMetaData.setConstructor(constructor);
- constructorBuilder = new ParameterMetaDataBuilder<AbstractConstructorMetaData>(constructor);
+ constructorBuilder = new ParameterMetaDataBuilderImpl<AbstractConstructorMetaData>(constructor);
}
}
- public BeanMetaDataBuilder setConstructorValue(Object value)
+ public BeanMetaDataBuilder setFactory(ValueMetaData factory)
{
- return setConstructorValue(new AbstractValueMetaData(value));
+ checkConstructorBuilder();
+ AbstractConstructorMetaData constructor = (AbstractConstructorMetaData) beanMetaData.getConstructor();
+ constructor.setFactory(factory);
+ return this;
}
+ public BeanMetaDataBuilder setFactoryClass(String factoryClass)
+ {
+ checkConstructorBuilder();
+ AbstractConstructorMetaData constructor = (AbstractConstructorMetaData) beanMetaData.getConstructor();
+ constructor.setFactoryClass(factoryClass);
+ return this;
+ }
+
+ public BeanMetaDataBuilder setFactoryMethod(String factoryMethod)
+ {
+ checkConstructorBuilder();
+ AbstractConstructorMetaData constructor = (AbstractConstructorMetaData) beanMetaData.getConstructor();
+ constructor.setFactoryMethod(factoryMethod);
+ return this;
+ }
+
public BeanMetaDataBuilder setConstructorValue(ValueMetaData value)
{
checkConstructorBuilder();
@@ -146,6 +202,13 @@
return this;
}
+ public BeanMetaDataBuilder addConstructorParameter(String type, String value)
+ {
+ checkConstructorBuilder();
+ constructorBuilder.addParameterMetaData(type, value);
+ return this;
+ }
+
public BeanMetaDataBuilder addConstructorParameter(String type, ValueMetaData value)
{
checkConstructorBuilder();
@@ -197,6 +260,12 @@
return this;
}
+ public BeanMetaDataBuilder addCreateParameter(String type, String value)
+ {
+ createBuilder.addParameterMetaData(type, value);
+ return this;
+ }
+
public BeanMetaDataBuilder addCreateParameter(String type, ValueMetaData value)
{
createBuilder.addParameterMetaData(type, value);
@@ -215,6 +284,12 @@
return this;
}
+ public BeanMetaDataBuilder addStartParameter(String type, String value)
+ {
+ startBuilder.addParameterMetaData(type, value);
+ return this;
+ }
+
public BeanMetaDataBuilder addStartParameter(String type, ValueMetaData value)
{
startBuilder.addParameterMetaData(type, value);
@@ -233,6 +308,12 @@
return this;
}
+ public BeanMetaDataBuilder addStopParameter(String type, String value)
+ {
+ stopBuilder.addParameterMetaData(type, value);
+ return this;
+ }
+
public BeanMetaDataBuilder addStopParameter(String type, ValueMetaData value)
{
stopBuilder.addParameterMetaData(type, value);
@@ -251,15 +332,16 @@
return this;
}
- public BeanMetaDataBuilder addDestroyParameter(String type, ValueMetaData value)
+ public BeanMetaDataBuilder addDestroyParameter(String type, String value)
{
destroyBuilder.addParameterMetaData(type, value);
return this;
}
- public BeanMetaDataBuilder addSupply(Object supply)
+ public BeanMetaDataBuilder addDestroyParameter(String type, ValueMetaData value)
{
- return addSupply(supply, null);
+ destroyBuilder.addParameterMetaData(type, value);
+ return this;
}
public BeanMetaDataBuilder addSupply(Object supply, String type)
@@ -277,13 +359,8 @@
return this;
}
- public BeanMetaDataBuilder addDemand(Object demand)
+ public BeanMetaDataBuilder addDemand(Object demand, ControllerState whenRequired, String transformer)
{
- return addDemand(demand, null, null);
- }
-
- public BeanMetaDataBuilder addDemand(Object demand, String whenRequired, String transformer)
- {
Set<DemandMetaData> demands = beanMetaData.getDemands();
if (demands == null)
{
@@ -292,7 +369,7 @@
}
AbstractDemandMetaData admd = new AbstractDemandMetaData(demand);
if (whenRequired != null)
- admd.setWhenRequired(new ControllerState(whenRequired));
+ admd.setWhenRequired(whenRequired);
if (transformer != null)
admd.setTransformer(transformer);
demands.add(admd);
@@ -311,76 +388,110 @@
return this;
}
- public BeanMetaDataBuilder addInstall(String methodName)
+ public ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean, ControllerState state)
{
- return addInstall(methodName, null);
+ AbstractInstallMetaData install = (AbstractInstallMetaData) installBuilder.createLifecycleMetaData(methodName);
+ install.setBean(bean);
+ if (state != null)
+ install.setDependentState(state);
+ return new ParameterMetaDataBuilderImpl<AbstractInstallMetaData>(install);
}
- public BeanMetaDataBuilder addInstall(String methodName, String bean)
+ public ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean, ControllerState state)
{
- return addInstall(methodName, bean, new String[]{}, new Object[]{});
+ AbstractInstallMetaData uninstall = (AbstractInstallMetaData) uninstallBuilder.createLifecycleMetaData(methodName);
+ uninstall.setBean(bean);
+ if (state != null)
+ uninstall.setDependentState(state);
+ return new ParameterMetaDataBuilderImpl<AbstractInstallMetaData>(uninstall);
}
- public BeanMetaDataBuilder addInstall(String methodName, String type, Object value)
+ public ValueMetaData createNull()
{
- return addInstall(methodName, null, type, value);
+ return new AbstractValueMetaData();
}
-
- public BeanMetaDataBuilder addInstall(String methodName, String bean, String type, Object value)
+
+ public ValueMetaData createThis()
{
- return addInstall(methodName, bean, new String[]{type}, new Object[]{value});
+ return new ThisValueMetaData();
}
-
- public BeanMetaDataBuilder addInstall(String methodName, String[] types, Object[] values)
+
+ public ValueMetaData createValue(Object value)
{
- return addInstall(methodName, null, types, values);
+ return new AbstractValueMetaData(value);
}
-
- public BeanMetaDataBuilder addInstall(String methodName, String bean, String[] types, Object[] values)
+
+ public ValueMetaData createString(String type, String value)
{
- AbstractInstallMetaData install = (AbstractInstallMetaData)installBuilder.createLifecycleMetaData(methodName);
- install.setBean(bean);
- for(int i = 0; i < types.length; i++)
- {
- installBuilder.addParameter(install, types[i], values[i]);
- }
- return this;
+ StringValueMetaData result = new StringValueMetaData(value);
+ result.setType(type);
+ return result;
}
-
- public BeanMetaDataBuilder addUninstall(String methodName)
+
+ public ValueMetaData createInject(Object bean, String property, ControllerState whenRequired, ControllerState dependentState)
{
- return addUninstall(methodName, null);
+ AbstractDependencyValueMetaData result = new AbstractDependencyValueMetaData(bean, property);
+ if (whenRequired != null)
+ result.setWhenRequiredState(whenRequired);
+ if (dependentState != null)
+ result.setDependentState(dependentState);
+ return result;
}
-
- public BeanMetaDataBuilder addUninstall(String methodName, String type, Object value)
+
+ @SuppressWarnings("unchecked")
+ public Collection<ValueMetaData> createCollection(String collectionType, String elementType)
{
- return addUninstall(methodName, new String[]{type}, new Object[]{value});
+ AbstractCollectionMetaData collection = new AbstractCollectionMetaData();
+ if (collectionType != null)
+ collection.setType(collectionType);
+ if (elementType != null)
+ collection.setElementType(elementType);
+ return (Collection) collection;
}
-
- public BeanMetaDataBuilder addUninstall(String methodName, String[] types, Object[] values)
+
+ @SuppressWarnings("unchecked")
+ public List<ValueMetaData> createList(String listType, String elementType)
{
- return addUninstall(methodName, null, types, values);
+ AbstractListMetaData collection = new AbstractListMetaData();
+ if (listType != null)
+ collection.setType(listType);
+ if (elementType != null)
+ collection.setElementType(elementType);
+ return (List) collection;
}
-
- public BeanMetaDataBuilder addUninstall(String methodName, String bean)
+
+ @SuppressWarnings("unchecked")
+ public Set<ValueMetaData> createSet(String setType, String elementType)
{
- return addUninstall(methodName, bean, new String[]{}, new Object[]{});
+ AbstractSetMetaData collection = new AbstractSetMetaData();
+ if (setType != null)
+ collection.setType(setType);
+ if (elementType != null)
+ collection.setElementType(elementType);
+ return (Set) collection;
}
-
- public BeanMetaDataBuilder addUninstall(String methodName, String bean, String type, Object value)
+
+ @SuppressWarnings("unchecked")
+ public List<ValueMetaData> createArray(String arrayType, String elementType)
{
- return addUninstall(methodName, bean, new String[]{type}, new Object[]{value});
+ AbstractArrayMetaData collection = new AbstractArrayMetaData();
+ if (arrayType != null)
+ collection.setType(arrayType);
+ if (elementType != null)
+ collection.setElementType(elementType);
+ return (List) collection;
}
-
- public BeanMetaDataBuilder addUninstall(String methodName, String bean, String[] types, Object[] values)
+
+ @SuppressWarnings("unchecked")
+ public Map<ValueMetaData, ValueMetaData> createMap(String mapType, String keyType, String valueType)
{
- AbstractInstallMetaData uninstall = (AbstractInstallMetaData)uninstallBuilder.createLifecycleMetaData(methodName);
- uninstall.setBean(bean);
- for(int i = 0; i < types.length; i++)
- {
- uninstallBuilder.addParameter(uninstall, types[i], values[i]);
- }
- return this;
+ AbstractMapMetaData map = new AbstractMapMetaData();
+ if (mapType != null)
+ map.setType(mapType);
+ if (keyType != null)
+ map.setKeyType(keyType);
+ if (valueType != null)
+ map.setValue(valueType);
+ return (Map) map;
}
-
}
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 2008-02-15 14:10:54 UTC (rev 69861)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/LifecycleMetaDataBuilder.java 2008-02-15 14:11:55 UTC (rev 69862)
@@ -25,17 +25,18 @@
import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
import org.jboss.beans.metadata.spi.LifecycleMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.ParameterMetaDataBuilder;
/**
* Helper class.
* @see BeanMetaDataBuilderImpl
- * @see ParameterMetaDataBuilder
+ * @see ParameterMetaDataBuilderImpl
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
public abstract class LifecycleMetaDataBuilder extends StateMetaDataBuilder
{
- protected ParameterMetaDataBuilder<AbstractLifecycleMetaData> builder;
+ protected ParameterMetaDataBuilderImpl<AbstractLifecycleMetaData> builder;
public LifecycleMetaDataBuilder(AbstractBeanMetaData beanMetaData)
{
@@ -51,7 +52,7 @@
protected void applyAfterSet(AbstractLifecycleMetaData lifecycle)
{
- builder = new ParameterMetaDataBuilder<AbstractLifecycleMetaData>(lifecycle);
+ builder = new ParameterMetaDataBuilderImpl<AbstractLifecycleMetaData>(lifecycle);
}
protected void checkLlifecycle()
@@ -63,13 +64,13 @@
}
}
- public LifecycleMetaData addParameterMetaData(String type, Object value)
+ public ParameterMetaDataBuilder addParameterMetaData(String type, Object value)
{
checkLlifecycle();
return builder.addParameterMetaData(type, value);
}
- public LifecycleMetaData addParameterMetaData(String type, ValueMetaData value)
+ public ParameterMetaDataBuilder addParameterMetaData(String type, ValueMetaData value)
{
checkLlifecycle();
return builder.addParameterMetaData(type, value);
Deleted: 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 2008-02-15 14:10:54 UTC (rev 69861)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/ParameterMetaDataBuilder.java 2008-02-15 14:11:55 UTC (rev 69862)
@@ -1,83 +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.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.ValueMetaData;
-
-/**
- * Helper class.
- *
- * @param <T> the parameter holder type
- * @see BeanMetaDataBuilderImpl
- * @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);
- }
-
- private List<ParameterMetaData> checkParameters()
- {
- List<ParameterMetaData> parameters = getParameters();
- if (parameters == null)
- {
- parameters = new ArrayList<ParameterMetaData>();
- setParameters(parameters);
- }
- return parameters;
- }
-
- public T addParameterMetaData(String type, Object value)
- {
- List<ParameterMetaData> parameters = checkParameters();
- parameters.add(new AbstractParameterMetaData(type, value));
- return parameterHolder;
- }
-
- public T addParameterMetaData(String type, ValueMetaData value)
- {
- List<ParameterMetaData> parameters = checkParameters();
- parameters.add(new AbstractParameterMetaData(type, value));
- return parameterHolder;
- }
-
-}
Copied: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/ParameterMetaDataBuilderImpl.java (from rev 69811, 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/ParameterMetaDataBuilderImpl.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/ParameterMetaDataBuilderImpl.java 2008-02-15 14:11:55 UTC (rev 69862)
@@ -0,0 +1,128 @@
+/*
+* 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.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.ParameterMetaDataBuilder;
+
+/**
+ * Helper class.
+ *
+ * @param <T> the parameter holder type
+ * @see LifecycleMetaDataBuilder
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
+ */
+public class ParameterMetaDataBuilderImpl<T extends MutableParameterizedMetaData> implements ParameterMetaDataBuilder
+{
+ /** The parameter holder */
+ private T parameterHolder;
+
+ /**
+ * Create a new ParameterMetaDataBuilder.
+ *
+ * @param parameterHolder the parameter holder
+ * @throws IllegalArgumentException for a null parameter
+ */
+ public ParameterMetaDataBuilderImpl(T parameterHolder)
+ {
+ if (parameterHolder == null)
+ throw new IllegalArgumentException("Null parameter holder");
+ this.parameterHolder = parameterHolder;
+ }
+
+ /**
+ * Get the parameters
+ *
+ * @return the parameters
+ */
+ private List<ParameterMetaData> getParameters()
+ {
+ return parameterHolder.getParameters();
+ }
+
+ /**
+ * Set the parameters
+ *
+ * @param parameters the parameters
+ */
+ private void setParameters(List<ParameterMetaData> parameters)
+ {
+ parameterHolder.setParameters(parameters);
+ }
+
+ /**
+ * Check the parameters
+ *
+ * @return the parameters
+ */
+ private List<ParameterMetaData> checkParameters()
+ {
+ List<ParameterMetaData> parameters = getParameters();
+ if (parameters == null)
+ {
+ parameters = new ArrayList<ParameterMetaData>();
+ setParameters(parameters);
+ }
+ return parameters;
+ }
+
+ /**
+ * Add a parameter
+ *
+ * @param type the type
+ * @param value the value
+ * @return the parameter
+ */
+ public ParameterMetaDataBuilder addParameterMetaData(String type, Object value)
+ {
+ List<ParameterMetaData> parameters = checkParameters();
+ parameters.add(new AbstractParameterMetaData(type, value));
+ return this;
+ }
+
+ /**
+ * Add a parameter
+ *
+ * @param type the type
+ * @param value the value
+ * @return the parameter
+ */
+ public ParameterMetaDataBuilder addParameterMetaData(String type, String value)
+ {
+ List<ParameterMetaData> parameters = checkParameters();
+ parameters.add(new AbstractParameterMetaData(type, value));
+ return this;
+ }
+
+ public ParameterMetaDataBuilder addParameterMetaData(String type, ValueMetaData value)
+ {
+ List<ParameterMetaData> parameters = checkParameters();
+ parameters.add(new AbstractParameterMetaData(type, value));
+ return this;
+ }
+}
Modified: 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 2008-02-15 14:10:54 UTC (rev 69861)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/StateMetaDataBuilder.java 2008-02-15 14:11:55 UTC (rev 69862)
@@ -28,7 +28,7 @@
/**
* Helper class.
* @see BeanMetaDataBuilderImpl
- * @see org.jboss.beans.metadata.plugins.builder.ParameterMetaDataBuilder
+ * @see org.jboss.beans.metadata.plugins.builder.ParameterMetaDataBuilderImpl
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2008-02-15 14:10:54 UTC (rev 69861)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2008-02-15 14:11:55 UTC (rev 69862)
@@ -21,99 +21,1155 @@
*/
package org.jboss.beans.metadata.spi.builder;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.dependency.spi.ControllerState;
/**
* BeanMetaDataBuilder contract.
- * TODO - javadocs
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
*/
-public interface BeanMetaDataBuilder
+public abstract class BeanMetaDataBuilder
{
- BeanMetaData getBeanMetaData();
+ /**
+ * Create builder from bean.
+ *
+ * @param bean bean class name
+ * @return new Builder
+ */
+ public static BeanMetaDataBuilder createBuilder(String bean)
+ {
+ return BeanMetaDataBuilderFactory.createBuilder(bean);
+ }
- BeanMetaDataBuilder setAliases(Set<Object> aliases);
+ /**
+ * Create builder from name and bean.
+ *
+ * @param name bean name
+ * @param bean bean class name
+ * @return new Builder
+ */
+ public static BeanMetaDataBuilder createBuilder(String name, String bean)
+ {
+ return BeanMetaDataBuilderFactory.createBuilder(name, bean);
+ }
- BeanMetaDataBuilder setMode(String modeString);
+ /**
+ * Create builder from BeanMetaData.
+ *
+ * @param beanMetaData bean meta data
+ * @return new builder
+ */
+ public static BeanMetaDataBuilder createBuilder(AbstractBeanMetaData beanMetaData)
+ {
+ return BeanMetaDataBuilderFactory.createBuilder(beanMetaData);
+ }
- BeanMetaDataBuilder setMode(ControllerMode mode);
+ /**
+ * Get the constructed bean metadata
+ *
+ * @return the bean metadata
+ */
+ public abstract BeanMetaData getBeanMetaData();
- BeanMetaDataBuilder setClassLoader(Object classLoader);
+ /**
+ * Set the aliases
+ *
+ * @param aliases the aliases
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setAliases(Set<Object> aliases);
- BeanMetaDataBuilder setConstructorValue(Object value);
+ /**
+ * Set the mode
+ *
+ * @param modeString the mode
+ * @return the builder
+ */
+ public BeanMetaDataBuilder setMode(String modeString)
+ {
+ return setMode(new ControllerMode(modeString));
+ }
- BeanMetaDataBuilder setConstructorValue(ValueMetaData value);
+ /**
+ * Set the mode
+ *
+ * @param mode the mode
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setMode(ControllerMode mode);
- BeanMetaDataBuilder addConstructorParameter(String type, Object value);
+ /**
+ * Set that we don't want to use the deployment classloader
+ *
+ * @return the builder
+ */
- BeanMetaDataBuilder addConstructorParameter(String type, ValueMetaData value);
+ public BeanMetaDataBuilder setNoClassLoader()
+ {
+ return setClassLoader(createNull());
+ }
- BeanMetaDataBuilder addPropertyMetaData(String name, Object value);
+ /**
+ * Set the classloader
+ *
+ * @param classLoader the classloader
+ * @return the builder
+ */
- BeanMetaDataBuilder addPropertyMetaData(String name, String value);
+ public BeanMetaDataBuilder setClassLoader(Object classLoader)
+ {
+ return setClassLoader(createValue(classLoader));
+ }
- BeanMetaDataBuilder addPropertyMetaData(String name, ValueMetaData value);
+ /**
+ * Set the classloader
+ *
+ * @param classLoader the classloader
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setClassLoader(ValueMetaData classLoader);
- BeanMetaDataBuilder setCreate(String methodName);
+ /**
+ * Set the factory
+ *
+ * @param factory the factory
+ * @return the builder
+ */
+ public BeanMetaDataBuilder setFactory(Object factory)
+ {
+ return setFactory(createValue(factory));
+ }
- BeanMetaDataBuilder addCreateParameter(String type, Object value);
+ /**
+ * Set the factory
+ *
+ * @param bean the bean name
+ * @return the builder
+ */
+ public BeanMetaDataBuilder setFactory(String bean)
+ {
+ return setFactory(bean, null);
+ }
- BeanMetaDataBuilder addCreateParameter(String type, ValueMetaData value);
+ /**
+ * Set the factory
+ *
+ * @param bean the bean name
+ * @param property the property name for the factory
+ * @return the builder
+ */
+ public BeanMetaDataBuilder setFactory(String bean, String property)
+ {
+ return setFactory(createInject(bean, property));
+ }
- BeanMetaDataBuilder setStart(String methodName);
+ /**
+ * Set the factory
+ *
+ * @param factory the factory
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setFactory(ValueMetaData factory);
- BeanMetaDataBuilder addStartParameter(String type, Object value);
+ /**
+ * Set the factory class
+ *
+ * @param factoryClass the factory class
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setFactoryClass(String factoryClass);
- BeanMetaDataBuilder addStartParameter(String type, ValueMetaData value);
+ /**
+ * Set the factory method
+ *
+ * @param factoryMethod the factory method
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setFactoryMethod(String factoryMethod);
- BeanMetaDataBuilder setStop(String methodName);
+ /**
+ * Set the constructor value
+ *
+ * @param value the object "constructed"
+ * @return the builder
+ */
+
+ public BeanMetaDataBuilder setConstructorValue(Object value)
+ {
+ return setConstructorValue(createValue(value));
+ }
- BeanMetaDataBuilder addStopParameter(String type, Object value);
+ /**
+ * Set the constructor value
+ *
+ * @param type the type
+ * @param value the object "constructed"
+ * @return the builder
+ */
+
+ public BeanMetaDataBuilder setConstructorValue(String type, String value)
+ {
+ return setConstructorValue(createString(type, value));
+ }
- BeanMetaDataBuilder addStopParameter(String type, ValueMetaData value);
+ /**
+ * Set the constructor value
+ *
+ * @param value the object "constructed"
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setConstructorValue(ValueMetaData value);
- BeanMetaDataBuilder setDestroy(String methodName);
+ /**
+ * Add a constructor parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addConstructorParameter(String type, Object value);
- BeanMetaDataBuilder addDestroyParameter(String type, Object value);
+ /**
+ * Add a constructor parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addConstructorParameter(String type, String value);
- BeanMetaDataBuilder addDestroyParameter(String type, ValueMetaData value);
+ /**
+ * Add a constructor parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addConstructorParameter(String type, ValueMetaData value);
- BeanMetaDataBuilder addSupply(Object supply);
+ /**
+ * Add a property
+ *
+ * @param name the property name
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addPropertyMetaData(String name, Object value);
- BeanMetaDataBuilder addSupply(Object supply, String type);
+ /**
+ * Add a property
+ *
+ * @param name the property name
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addPropertyMetaData(String name, String value);
- BeanMetaDataBuilder addDemand(Object demand);
+ /**
+ * Add a property
+ *
+ * @param name the property name
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addPropertyMetaData(String name, ValueMetaData value);
- BeanMetaDataBuilder addDemand(Object demand, String whenRequired, String transformer);
+ /**
+ * Set the create method
+ *
+ * @param methodName the method name
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setCreate(String methodName);
- BeanMetaDataBuilder addDependency(Object dependency);
+ /**
+ * Add a create parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addCreateParameter(String type, Object value);
- BeanMetaDataBuilder addInstall(String methodName);
+ /**
+ * Add a create parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addCreateParameter(String type, String value);
- BeanMetaDataBuilder addInstall(String methodName, String bean);
+ /**
+ * Add a create parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addCreateParameter(String type, ValueMetaData value);
- BeanMetaDataBuilder addInstall(String methodName, String type, Object value);
+ /**
+ * Set the start method
+ *
+ * @param methodName the method name
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setStart(String methodName);
- BeanMetaDataBuilder addInstall(String methodName, String bean, String type, Object value);
+ /**
+ * Add a start parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addStartParameter(String type, Object value);
- BeanMetaDataBuilder addInstall(String methodName, String[] types, Object[] values);
+ /**
+ * Add a start parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addStartParameter(String type, String value);
- BeanMetaDataBuilder addInstall(String methodName, String bean, String[] types, Object[] values);
+ /**
+ * Add a start parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addStartParameter(String type, ValueMetaData value);
- BeanMetaDataBuilder addUninstall(String methodName);
+ /**
+ * Set the stop method
+ *
+ * @param methodName the method name
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setStop(String methodName);
- BeanMetaDataBuilder addUninstall(String methodName, String type, Object value);
+ /**
+ * Add a stop parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addStopParameter(String type, Object value);
- BeanMetaDataBuilder addUninstall(String methodName, String[] types, Object[] values);
+ /**
+ * Add a stop parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addStopParameter(String type, String value);
- BeanMetaDataBuilder addUninstall(String methodName, String bean);
+ /**
+ * Add a stop parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addStopParameter(String type, ValueMetaData value);
- BeanMetaDataBuilder addUninstall(String methodName, String bean, String type, Object value);
+ /**
+ * Set the destroy method
+ *
+ * @param methodName the method name
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setDestroy(String methodName);
- BeanMetaDataBuilder addUninstall(String methodName, String bean, String[] types, Object[] values);
+ /**
+ * Add a destroy parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addDestroyParameter(String type, Object value);
+
+ /**
+ * Add a destroy parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addDestroyParameter(String type, String value);
+
+ /**
+ * Add a destroy parameter
+ *
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addDestroyParameter(String type, ValueMetaData value);
+
+ /**
+ * Add a supply
+ *
+ * @param supply the supply
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addSupply(Object supply)
+ {
+ return addSupply(supply, null);
+ }
+
+ /**
+ * Add a supply
+ *
+ * @param supply the supply
+ * @param type the supply type
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addSupply(Object supply, String type);
+
+ /**
+ * Add a demand
+ *
+ * @param demand the demand
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addDemand(Object demand)
+ {
+ return addDemand(demand, (ControllerState) null, null);
+ }
+
+ /**
+ * Add a demand
+ *
+ * @param demand the demand
+ * @param whenRequired when the demand is required
+ * @param transformer the transformer
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addDemand(Object demand, String whenRequired, String transformer)
+ {
+ ControllerState whenRequiredState = null;
+ if (whenRequired != null)
+ whenRequiredState = new ControllerState(whenRequired);
+ return addDemand(demand, whenRequiredState, transformer);
+ }
+
+ /**
+ * Add a demand
+ *
+ * @param demand the demand
+ * @param whenRequired when the demand is required
+ * @param transformer the transformer
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addDemand(Object demand, ControllerState whenRequired, String transformer);
+
+ /**
+ * Add a dependency
+ *
+ * @param dependency the dependency
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addDependency(Object dependency);
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName)
+ {
+ return addInstall(methodName, null);
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String type, Object value)
+ {
+ return addInstall(methodName, null, type, value);
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String type, String value)
+ {
+ return addInstall(methodName, null, type, value);
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String type, ValueMetaData value)
+ {
+ return addInstall(methodName, null, type, value);
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String[] types, Object[] values)
+ {
+ return addInstall(methodName, null, types, values);
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String[] types, String[] values)
+ {
+ return addInstall(methodName, null, types, values);
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String[] types, ValueMetaData[] values)
+ {
+ return addInstall(methodName, null, types, values);
+ }
+
+ /**
+ * Add an install with a this parameter
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstallWithThis(String methodName, String bean)
+ {
+ return addInstallWithThis(methodName, bean, null);
+ }
+
+ /**
+ * Add an install with a this parameter
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param state the state when to install
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstallWithThis(String methodName, String bean, ControllerState state)
+ {
+ ParameterMetaDataBuilder parameters = addInstallWithParameters(methodName, bean, state);
+ parameters.addParameterMetaData(null, createThis());
+ return this;
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String bean)
+ {
+ addInstallWithParameters(methodName, bean);
+ return this;
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String bean, String type, Object value)
+ {
+ ParameterMetaDataBuilder parameters = addInstallWithParameters(methodName, bean);
+ parameters.addParameterMetaData(type, value);
+ return this;
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String bean, String type, String value)
+ {
+ ParameterMetaDataBuilder parameters = addInstallWithParameters(methodName, bean);
+ parameters.addParameterMetaData(type, value);
+ return this;
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String bean, String type, ValueMetaData value)
+ {
+ ParameterMetaDataBuilder parameters = addInstallWithParameters(methodName, bean);
+ parameters.addParameterMetaData(type, value);
+ return this;
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String bean, String[] types, Object[] values)
+ {
+ ParameterMetaDataBuilder parameters = addInstallWithParameters(methodName, bean);
+ for (int i = 0; i < types.length; i++)
+ parameters.addParameterMetaData(types[i], values[i]);
+ return this;
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String bean, String[] types, String[] values)
+ {
+ ParameterMetaDataBuilder parameters = addInstallWithParameters(methodName, bean);
+ for (int i = 0; i < types.length; i++)
+ parameters.addParameterMetaData(types[i], values[i]);
+ return this;
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addInstall(String methodName, String bean, String[] types, ValueMetaData[] values)
+ {
+ ParameterMetaDataBuilder parameters = addInstallWithParameters(methodName, bean);
+ for (int i = 0; i < types.length; i++)
+ parameters.addParameterMetaData(types[i], values[i]);
+ return this;
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @return the builder
+ */
+ public ParameterMetaDataBuilder addInstallWithParameters(String methodName)
+ {
+ return addInstallWithParameters(methodName, null);
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @return the builder
+ */
+ public ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean)
+ {
+ return addInstallWithParameters(methodName, bean, null);
+ }
+
+ /**
+ * Add an install
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param state the state when to install
+ * @return the parameter builder
+ */
+ public abstract ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean, ControllerState state);
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName)
+ {
+ return addUninstall(methodName, null);
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String type, Object value)
+ {
+ return addUninstall(methodName, null, type, value);
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String type, String value)
+ {
+ return addUninstall(methodName, null, type, value);
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String type, ValueMetaData value)
+ {
+ return addUninstall(methodName, null, type, value);
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String[] types, Object[] values)
+ {
+ return addUninstall(methodName, null, types, values);
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String[] types, String[] values)
+ {
+ return addUninstall(methodName, null, types, values);
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String[] types, ValueMetaData[] values)
+ {
+ return addUninstall(methodName, null, types, values);
+ }
+
+ /**
+ * Add an uninstall with a this parameter
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstallWithThis(String methodName, String bean)
+ {
+ return addUninstallWithThis(methodName, bean, null);
+ }
+
+ /**
+ * Add an uninstall with a this parameter
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param state the state when to uninstall
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstallWithThis(String methodName, String bean, ControllerState state)
+ {
+ ParameterMetaDataBuilder parameters = addUninstallWithParameters(methodName, bean, state);
+ parameters.addParameterMetaData(null, createThis());
+ return this;
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean)
+ {
+ addUninstallWithParameters(methodName, bean);
+ return this;
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean, String type, Object value)
+ {
+ ParameterMetaDataBuilder parameters = addUninstallWithParameters(methodName, bean);
+ parameters.addParameterMetaData(type, value);
+ return this;
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean, String type, String value)
+ {
+ ParameterMetaDataBuilder parameters = addUninstallWithParameters(methodName, bean);
+ parameters.addParameterMetaData(type, value);
+ return this;
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param type the parameter type
+ * @param value the value
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean, String type, ValueMetaData value)
+ {
+ ParameterMetaDataBuilder parameters = addUninstallWithParameters(methodName, bean);
+ parameters.addParameterMetaData(type, value);
+ return this;
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean, String[] types, Object[] values)
+ {
+ ParameterMetaDataBuilder parameters = addUninstallWithParameters(methodName, bean);
+ for (int i = 0; i < types.length; ++i)
+ parameters.addParameterMetaData(types[i], values[i]);
+ return this;
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean, String[] types, String[] values)
+ {
+ ParameterMetaDataBuilder parameters = addUninstallWithParameters(methodName, bean);
+ for (int i = 0; i < types.length; ++i)
+ parameters.addParameterMetaData(types[i], values[i]);
+ return this;
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param types the parameter types
+ * @param values the values
+ * @return the builder
+ */
+ public BeanMetaDataBuilder addUninstall(String methodName, String bean, String[] types, ValueMetaData[] values)
+ {
+ ParameterMetaDataBuilder parameters = addUninstallWithParameters(methodName, bean);
+ for (int i = 0; i < types.length; ++i)
+ parameters.addParameterMetaData(types[i], values[i]);
+ return this;
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @return the builder
+ */
+ public ParameterMetaDataBuilder addUninstallWithParameters(String methodName)
+ {
+ return addUninstallWithParameters(methodName, null);
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @return the builder
+ */
+ public ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean)
+ {
+ return addUninstallWithParameters(methodName, bean, null);
+ }
+
+ /**
+ * Add an uninstall
+ *
+ * @param methodName the method name
+ * @param bean the bean name
+ * @param state the state when to install
+ * @return the parameter builder
+ */
+ public abstract ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean, ControllerState state);
+
+ /**
+ * Create a null value
+ *
+ * @return the null value
+ */
+ public abstract ValueMetaData createNull();
+
+ /**
+ * Create a this value
+ *
+ * @return the this value
+ */
+ public abstract ValueMetaData createThis();
+
+ /**
+ * Create a value
+ *
+ * @param value the already constructed value
+ * @return the value
+ */
+ public abstract ValueMetaData createValue(Object value);
+
+ /**
+ * Create a string value
+ *
+ * @param type the type to be converted into
+ * @param value the value
+ * @return the string value
+ */
+ public abstract ValueMetaData createString(String type, String value);
+
+ /**
+ * Create an injection
+ *
+ * @param bean the bean to inject
+ * @return the injection
+ */
+ public ValueMetaData createInject(Object bean)
+ {
+ return createInject(bean, null, null, null);
+ }
+
+ /**
+ * Create an injection
+ *
+ * @param bean the bean to inject
+ * @param property the property of the bean
+ * @return the injection
+ */
+ public ValueMetaData createInject(Object bean, String property)
+ {
+ return createInject(bean, property, null, null);
+ }
+
+ /**
+ * Create an injection
+ *
+ * @param bean the bean to inject
+ * @param property the property of the bean
+ * @param whenRequired when the injection is required
+ * @param dependentState the state of the injected bean
+ * @return the injection
+ */
+ public abstract ValueMetaData createInject(Object bean, String property, ControllerState whenRequired, ControllerState dependentState);
+
+ /**
+ * Create a new collection
+ *
+ * @return the collection
+ */
+ public Collection<ValueMetaData> createCollection()
+ {
+ return createCollection(null, null);
+ }
+
+ /**
+ * Create a new collection
+ *
+ * @param collectionType the collection type
+ * @param elementType the element type
+ * @return the collection
+ */
+ public abstract Collection<ValueMetaData> createCollection(String collectionType, String elementType);
+
+ /**
+ * Create a new list
+ *
+ * @return the list
+ */
+ public List<ValueMetaData> createList()
+ {
+ return createList(null, null);
+ }
+
+ /**
+ * Create a new list
+ *
+ * @param listType the list type
+ * @param elementType the element type
+ * @return the list
+ */
+ public abstract List<ValueMetaData> createList(String listType, String elementType);
+
+ /**
+ * Create a new set
+ *
+ * @return the set
+ */
+ public Set<ValueMetaData> createSet()
+ {
+ return createSet(null, null);
+ }
+
+ /**
+ * Create a new set
+ *
+ * @param setType the set type
+ * @param elementType the element type
+ * @return the set
+ */
+ public abstract Set<ValueMetaData> createSet(String setType, String elementType);
+
+ /**
+ * Create a new array
+ *
+ * @return the array
+ */
+ public List<ValueMetaData> createArray()
+ {
+ return createArray(null, null);
+ }
+
+ /**
+ * Create a new array
+ *
+ * @param arrayType the array type
+ * @param elementType the element type
+ * @return the set
+ */
+ public abstract List<ValueMetaData> createArray(String arrayType, String elementType);
+
+ /**
+ * Create a new map
+ *
+ * @return the map
+ */
+ public Map<ValueMetaData, ValueMetaData> createMap()
+ {
+ return createMap(null, null, null);
+ }
+
+ /**
+ * Create a new map
+ *
+ * @param mapType the map type
+ * @param keyType the key type
+ * @param valueType the value type
+ * @return the map
+ */
+ public abstract Map<ValueMetaData, ValueMetaData> createMap(String mapType, String keyType, String valueType);
}
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/ParameterMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/ParameterMetaDataBuilder.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/ParameterMetaDataBuilder.java 2008-02-15 14:11:55 UTC (rev 69862)
@@ -0,0 +1,60 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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 org.jboss.beans.metadata.spi.ValueMetaData;
+
+/**
+ * ParameterMetaDataBuilder.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ParameterMetaDataBuilder
+{
+ /**
+ * Add a parameter
+ *
+ * @param type the type
+ * @param value the value
+ * @return the parameter
+ */
+ ParameterMetaDataBuilder addParameterMetaData(String type, Object value);
+
+ /**
+ * Add a parameter
+ *
+ * @param type the type
+ * @param value the value
+ * @return the builder
+ */
+ ParameterMetaDataBuilder addParameterMetaData(String type, String value);
+
+ /**
+ * Add a parameter
+ *
+ * @param type the type
+ * @param value the value
+ * @return the builder
+ */
+ ParameterMetaDataBuilder addParameterMetaData(String type, ValueMetaData value);
+}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/MatcherDemandSupplyTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/MatcherDemandSupplyTestCase.java 2008-02-15 14:10:54 UTC (rev 69861)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/MatcherDemandSupplyTestCase.java 2008-02-15 14:11:55 UTC (rev 69862)
@@ -78,17 +78,17 @@
protected void setBeanMetaDatas() throws Throwable
{
BeanMetaDataBuilder b0 = BeanMetaDataBuilderFactory.createBuilder("regexpDemander", Object.class.getName());
- b0.addDemand("^[a-zA-Z0-9._%+-]+ at acme\\.((org)|(com))$", null, "regexp");
+ b0.addDemand("^[a-zA-Z0-9._%+-]+ at acme\\.((org)|(com))$", (String) null, "regexp");
BeanMetaDataBuilder b1 = BeanMetaDataBuilderFactory.createBuilder("regexpSupplier", Object.class.getName());
b1.addSupply("aj at acme.org");
BeanMetaDataBuilder b2 = BeanMetaDataBuilderFactory.createBuilder("intervalDemander", Object.class.getName());
- b2.addDemand("(1,10]", null, "interval");
+ b2.addDemand("(1,10]", (String) null, "interval");
BeanMetaDataBuilder b3 = BeanMetaDataBuilderFactory.createBuilder("intervalSupplier", Object.class.getName());
b3.addSupply("5", "java.lang.Integer");
BeanMetaDataBuilder b4 = BeanMetaDataBuilderFactory.createBuilder("customDemander", Object.class.getName());
- b4.addDemand("fragment", null, CustomMatcherTransfomer.class.getName());
+ b4.addDemand("fragment", (String) null, CustomMatcherTransfomer.class.getName());
BeanMetaDataBuilder b5 = BeanMetaDataBuilderFactory.createBuilder("customSupplier", Object.class.getName());
b5.addSupply("i supply fragment word");
More information about the jboss-cvs-commits
mailing list