[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