[jboss-cvs] JBossAS SVN: r70272 - 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 29 10:52:35 EST 2008
Author: kabir.khan at jboss.com
Date: 2008-02-29 10:52:35 -0500 (Fri, 29 Feb 2008)
New Revision: 70272
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/spi/builder/BeanMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java
Log:
Make BeanMetaDataBuilder.addPropertyMetaData() replace existing properties if they exist
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-29 15:46:16 UTC (rev 70271)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2008-02-29 15:52:35 UTC (rev 70272)
@@ -23,6 +23,7 @@
import java.util.Collection;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -219,6 +220,7 @@
public BeanMetaDataBuilder addPropertyMetaData(String name, Object value)
{
Set<PropertyMetaData> properties = getProperties();
+ removeProperty(properties, name);
properties.add(new AbstractPropertyMetaData(name, value));
return this;
}
@@ -226,6 +228,7 @@
public BeanMetaDataBuilder addPropertyMetaData(String name, String value)
{
Set<PropertyMetaData> properties = getProperties();
+ removeProperty(properties, name);
properties.add(new AbstractPropertyMetaData(name, value));
return this;
}
@@ -233,6 +236,7 @@
public BeanMetaDataBuilder addPropertyMetaData(String name, ValueMetaData value)
{
Set<PropertyMetaData> properties = getProperties();
+ removeProperty(properties, name);
properties.add(new AbstractPropertyMetaData(name, value));
return this;
}
@@ -240,6 +244,8 @@
public BeanMetaDataBuilder addPropertyMetaData(String name, Collection<ValueMetaData> value)
{
Set<PropertyMetaData> properties = getProperties();
+ removeProperty(properties, name);
+
if (value instanceof ValueMetaData)
{
properties.add(new AbstractPropertyMetaData(name, (ValueMetaData)value));
@@ -254,6 +260,8 @@
public BeanMetaDataBuilder addPropertyMetaData(String name, Map<ValueMetaData, ValueMetaData> value)
{
Set<PropertyMetaData> properties = getProperties();
+ removeProperty(properties, name);
+
if (value instanceof ValueMetaData)
{
properties.add(new AbstractPropertyMetaData(name, (ValueMetaData)value));
@@ -265,6 +273,19 @@
return this;
}
+ private Set<PropertyMetaData> removeProperty(Set<PropertyMetaData> properties, String name)
+ {
+ for (Iterator<PropertyMetaData> it = properties.iterator() ; it.hasNext() ; )
+ {
+ PropertyMetaData property = it.next();
+ if (name.equals(property.getName()))
+ {
+ it.remove();
+ }
+ }
+ return properties;
+ }
+
private Set<PropertyMetaData> getProperties()
{
Set<PropertyMetaData> properties = beanMetaData.getProperties();
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-29 15:46:16 UTC (rev 70271)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2008-02-29 15:52:35 UTC (rev 70272)
@@ -263,7 +263,7 @@
public abstract BeanMetaDataBuilder addConstructorParameter(String type, ValueMetaData value);
/**
- * Add a property
+ * Add a property, replace it if it already exists
*
* @param name the property name
* @param value the value
@@ -272,7 +272,7 @@
public abstract BeanMetaDataBuilder addPropertyMetaData(String name, Object value);
/**
- * Add a property
+ * Add a property, replace it if it already exists
*
* @param name the property name
* @param value the value
@@ -281,7 +281,7 @@
public abstract BeanMetaDataBuilder addPropertyMetaData(String name, String value);
/**
- * Add a property
+ * Add a property, replace it if it already exists
*
* @param name the property name
* @param value the value
@@ -290,7 +290,7 @@
public abstract BeanMetaDataBuilder addPropertyMetaData(String name, ValueMetaData value);
/**
- * Add a property
+ * Add a property, replace it if it already exists
*
* @param name the property name
* @param value the value
@@ -299,7 +299,7 @@
public abstract BeanMetaDataBuilder addPropertyMetaData(String name, Collection<ValueMetaData> value);
/**
- * Add a property
+ * Add a property, replace it if it already exists
*
* @param name the property name
* @param value the value
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java 2008-02-29 15:46:16 UTC (rev 70271)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java 2008-02-29 15:52:35 UTC (rev 70272)
@@ -252,8 +252,74 @@
assertTrue(coll.contains("Zwei"));
Map<?, ?> mp = bean.getMap();
- assertEquals(2, lst.size());
+ assertEquals(2, mp.size());
assertEquals("Uno", mp.get("One"));
assertEquals("Dos", mp.get("Two"));
}
+
+ public void testReplacePropertyMetaData() throws Throwable
+ {
+ BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder("ReplaceBean", SimpleBean.class.getName());
+
+ builder.addPropertyMetaData("anInt", new Integer(1));
+ builder.addPropertyMetaData("anInt", new Integer(5));
+
+ builder.addPropertyMetaData("AString", "One");
+ builder.addPropertyMetaData("AString", "Two");
+
+ ValueMetaData value = builder.createValue("Three");
+ builder.addPropertyMetaData("anObject", value);
+ value = builder.createValue("Four");
+ builder.addPropertyMetaData("anObject", value);
+
+ List<ValueMetaData> array = builder.createArray();
+ builder.addPropertyMetaData("array", array);
+
+ array = builder.createArray();
+ array.add(builder.createValue(new Integer(5)));
+ array.add(builder.createValue(new Integer(10)));
+ builder.addPropertyMetaData("array", array);
+
+ Map<ValueMetaData, ValueMetaData> map = builder.createMap();
+ builder.addPropertyMetaData("map", map);
+
+ map = builder.createMap();
+ map.put(builder.createValue("One"), builder.createValue("Uno"));
+ map.put(builder.createValue("Two"), builder.createValue("Dos"));
+ builder.addPropertyMetaData("map", map);
+
+ AbstractKernelDeployment deployment = new AbstractKernelDeployment();
+ deployment.setBeans(Arrays.asList(builder.getBeanMetaData()));
+
+ Kernel kernel = bootstrap();
+ KernelController controller = kernel.getController();
+ AbstractKernelDeployer deployer = new AbstractKernelDeployer(kernel);
+
+ deployer.deploy(deployment);
+
+ Object o = controller.getInstalledContext("ReplaceBean").getTarget();
+ assertNotNull(o);
+ assertInstanceOf(o, SimpleBean.class);
+ SimpleBean bean = (SimpleBean)o;
+
+ Integer integer = bean.getAnInt();
+ assertEquals(new Integer(5), integer);
+
+ String string = bean.getAString();
+ assertEquals("Two", string);
+
+ Object obj = bean.getAnObject();
+ assertEquals("Four", obj);
+
+ Object[] arr = bean.getArray();
+ assertEquals(2, arr.length);
+ assertEquals(5, arr[0]);
+ assertEquals(10, arr[1]);
+
+ Map<?, ?> mp = bean.getMap();
+ assertEquals(2, mp.size());
+ assertEquals("Uno", mp.get("One"));
+ assertEquals("Dos", mp.get("Two"));
+ }
+
}
More information about the jboss-cvs-commits
mailing list