[jboss-cvs] JBossAS SVN: r85266 - in projects/jboss-man/branches/Branch_2_1/managed/src: main/java/org/jboss/managed/plugins and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Mar 4 19:21:19 EST 2009


Author: scott.stark at jboss.org
Date: 2009-03-04 19:21:18 -0500 (Wed, 04 Mar 2009)
New Revision: 85266

Modified:
   projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/DeploymentTemplateInfo.java
   projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/Fields.java
   projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/ManagedProperty.java
   projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/BasicDeploymentTemplateInfo.java
   projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/DefaultFieldsImpl.java
   projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/ManagedPropertyImpl.java
   projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/template/ManagementObjectExplicit.java
   projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java
   projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/mock/MockDOMFields.java
Log:
JBMAN-62, Add copy operations to DeploymentTemplateInfo, ManagedProperty, Fields


Modified: projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/DeploymentTemplateInfo.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/DeploymentTemplateInfo.java	2009-03-05 00:18:30 UTC (rev 85265)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/DeploymentTemplateInfo.java	2009-03-05 00:21:18 UTC (rev 85266)
@@ -59,8 +59,10 @@
    public Map<String, ManagedProperty> getProperties();
 
    /**
-    * 
-    * @return
+    * Create a deep copy of the template info. This ensures any ManagedProperty
+    * objects returned in the copy do not share the same value references such
+    * that modification of the property value in the copy affects the original.
+    * @return a deep copy of the template info.
     */
    public DeploymentTemplateInfo copy();
 }

Modified: projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/Fields.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/Fields.java	2009-03-05 00:18:30 UTC (rev 85265)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/Fields.java	2009-03-05 00:21:18 UTC (rev 85266)
@@ -96,4 +96,10 @@
     * @param value the field value
     */
    void setField(String name, Object value);
+
+   /**
+    * Create a copy of the fields.
+    * @return a copy of the fields.
+    */
+   Fields copy();
 }

Modified: projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/ManagedProperty.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/ManagedProperty.java	2009-03-05 00:18:30 UTC (rev 85265)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/api/ManagedProperty.java	2009-03-05 00:21:18 UTC (rev 85266)
@@ -63,8 +63,16 @@
     * @return the fields
     */
    Fields getFields();
-   
+
    /**
+    * Create a copy of the managed property. This is a copy that whose fields
+    * are copies of the original property. Changes to the copies fields have
+    * not affect on the original.
+    * @return a copy of the managed property.
+    */
+   ManagedProperty copy();
+
+   /**
     * Get a field
     *
     * @param <T> the expected type

Modified: projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/BasicDeploymentTemplateInfo.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/BasicDeploymentTemplateInfo.java	2009-03-05 00:18:30 UTC (rev 85265)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/BasicDeploymentTemplateInfo.java	2009-03-05 00:21:18 UTC (rev 85266)
@@ -98,7 +98,16 @@
    
    public DeploymentTemplateInfo copy()
    {
-      return null;
+      BasicDeploymentTemplateInfo copy = new BasicDeploymentTemplateInfo(name, description);
+      copy.setRootManagedPropertyName(rootManagedPropertyName);
+      Map<String, ManagedProperty> copyProps = new HashMap<String, ManagedProperty>();
+      for(ManagedProperty prop : properties.values())
+      {
+         ManagedProperty copyProp = prop.copy();
+         copyProps.put(copyProp.getName(), copyProp);
+      }
+      copy.setProperties(copyProps);
+      return copy;
    }
 
    public String toString()

Modified: projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/DefaultFieldsImpl.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/DefaultFieldsImpl.java	2009-03-05 00:18:30 UTC (rev 85265)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/DefaultFieldsImpl.java	2009-03-05 00:21:18 UTC (rev 85266)
@@ -308,6 +308,14 @@
       throw new IllegalStateException("Field " + fieldName + " with value " + field + " is  a of the expected type: " + expected.getName());
    }
 
+   @SuppressWarnings("unchecked")
+   public Fields copy()
+   {
+      DefaultFieldsImpl copy = new DefaultFieldsImpl();
+      copy.fields = (HashMap<String, Object>) fields.clone();
+      return copy;
+   }
+
    /**
     * Display key fields like name, metaType and value
     */

Modified: projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/ManagedPropertyImpl.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/ManagedPropertyImpl.java	2009-03-05 00:18:30 UTC (rev 85265)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/ManagedPropertyImpl.java	2009-03-05 00:21:18 UTC (rev 85266)
@@ -508,6 +508,13 @@
       return getName().equals(other.getName());
    }
    
+   public ManagedProperty copy()
+   {
+      Fields fieldsCopy = fields.copy();
+      ManagedProperty mp = new ManagedPropertyImpl(fieldsCopy);
+      return mp;
+   }
+
    /**
     * Initialise a ManagedPropertyImpl.
     * 

Modified: projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/template/ManagementObjectExplicit.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/template/ManagementObjectExplicit.java	2009-03-05 00:18:30 UTC (rev 85265)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/template/ManagementObjectExplicit.java	2009-03-05 00:21:18 UTC (rev 85266)
@@ -38,6 +38,7 @@
 {
    /** The serialVersionUID */
    private static final long serialVersionUID = -1L;
+   private String property1;
 
    /**
     * Get property 1
@@ -47,8 +48,12 @@
    @ManagementProperty(includeInTemplate=true)
    public String getProperty1() 
    {
-      return null;
+      return property1;
    }
+   public void setProperty1(String value)
+   {
+      this.property1 = value;
+   }
 
    /**
     * Get property 2

Modified: projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java	2009-03-05 00:18:30 UTC (rev 85265)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java	2009-03-05 00:21:18 UTC (rev 85266)
@@ -21,11 +21,16 @@
 */
 package org.jboss.test.managed.factory.test;
 
+import java.util.Map;
+
 import junit.framework.Test;
 
 import org.jboss.managed.api.DeploymentTemplateInfo;
 import org.jboss.managed.api.ManagedObject;
+import org.jboss.managed.api.ManagedProperty;
 import org.jboss.managed.plugins.factory.DeploymentTemplateInfoFactory;
+import org.jboss.metatype.api.values.MetaValue;
+import org.jboss.metatype.api.values.SimpleValueSupport;
 import org.jboss.test.managed.factory.AbstractManagedObjectFactoryTest;
 import org.jboss.test.managed.factory.support.template.ManagementObjectExplicit;
 
@@ -84,4 +89,42 @@
       assertTrue("property1 is in template info", info.getProperties().containsKey("property1"));      
    }
 
-}
\ No newline at end of file
+   public void testCopy()
+   {
+      ManagementObjectExplicit explicit = new ManagementObjectExplicit();
+      explicit.setProperty1("value1-orig");
+      ManagedObject managedObject = super.initManagedObject(explicit);
+
+      DeploymentTemplateInfoFactory factory = new DeploymentTemplateInfoFactory();
+      DeploymentTemplateInfo info1 = factory.createTemplateInfo(managedObject, "testExplicit", "testExplicit");
+      log.info(info1);
+      assertEquals("testExplicit", info1.getName());
+      assertEquals("testExplicit", info1.getDescription());
+      assertTrue("property1 is in template info", info1.getProperties().containsKey("property1"));
+      ManagedProperty property1 = managedObject.getProperty("property1");
+      
+      DeploymentTemplateInfo info1_1 = info1.copy();
+      log.info(info1);
+      assertEquals("testExplicit", info1.getName());
+      assertEquals("testExplicit", info1.getDescription());
+      assertTrue("property1 is in template info", info1.getProperties().containsKey("property1"));
+
+      Map<String, ManagedProperty> props1 = info1.getProperties();
+      ManagedProperty iproperty1 = props1.get("property1");
+      assertNotNull(iproperty1);
+      iproperty1.setValue(SimpleValueSupport.wrap("value1-copy"));
+
+      Map<String, ManagedProperty> props1_1 = info1_1.getProperties();
+      assertTrue("info1.props != info1_1.props", props1 != props1_1);
+      assertEquals("props size", props1.size(), props1_1.size());
+      ManagedProperty iproperty1_1 = props1_1.get("property1");
+      assertNotNull("info1.copy property1", iproperty1_1);
+      assertTrue("property1 != property1_1", iproperty1 != iproperty1_1);
+      assertTrue(property1.getFields() != iproperty1_1.getFields());
+      MetaValue value1 = iproperty1.getValue();
+      MetaValue value1_1 = iproperty1_1.getValue();
+      assertTrue(value1 != value1_1);
+      assertEquals("property1.value", SimpleValueSupport.wrap("value1-copy"), value1);
+      assertEquals("property1_1.value", SimpleValueSupport.wrap("value1-orig"), value1_1);
+   }
+}

Modified: projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/mock/MockDOMFields.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/mock/MockDOMFields.java	2009-03-05 00:18:30 UTC (rev 85265)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/mock/MockDOMFields.java	2009-03-05 00:21:18 UTC (rev 85266)
@@ -102,4 +102,12 @@
       }
       throw new UnsupportedOperationException("setField " + name);
    }
+
+   public Fields copy()
+   {
+      Element elementCopy = (Element) element.cloneNode(true);
+      MockDOMFields copy = new MockDOMFields(elementCopy, elementName);
+      return copy;
+   }
+   
 }




More information about the jboss-cvs-commits mailing list