[jboss-cvs] JBossAS SVN: r85265 - in projects/jboss-man/trunk/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:18:32 EST 2009
Author: scott.stark at jboss.org
Date: 2009-03-04 19:18:30 -0500 (Wed, 04 Mar 2009)
New Revision: 85265
Modified:
projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/DeploymentTemplateInfo.java
projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/Fields.java
projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedProperty.java
projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/BasicDeploymentTemplateInfo.java
projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DefaultFieldsImpl.java
projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedPropertyImpl.java
projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/template/ManagementObjectExplicit.java
projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java
projects/jboss-man/trunk/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/trunk/managed/src/main/java/org/jboss/managed/api/DeploymentTemplateInfo.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/DeploymentTemplateInfo.java 2009-03-04 23:57:22 UTC (rev 85264)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/DeploymentTemplateInfo.java 2009-03-05 00:18:30 UTC (rev 85265)
@@ -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/trunk/managed/src/main/java/org/jboss/managed/api/Fields.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/Fields.java 2009-03-04 23:57:22 UTC (rev 85264)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/Fields.java 2009-03-05 00:18:30 UTC (rev 85265)
@@ -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/trunk/managed/src/main/java/org/jboss/managed/api/ManagedProperty.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedProperty.java 2009-03-04 23:57:22 UTC (rev 85264)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedProperty.java 2009-03-05 00:18:30 UTC (rev 85265)
@@ -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/trunk/managed/src/main/java/org/jboss/managed/plugins/BasicDeploymentTemplateInfo.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/BasicDeploymentTemplateInfo.java 2009-03-04 23:57:22 UTC (rev 85264)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/BasicDeploymentTemplateInfo.java 2009-03-05 00:18:30 UTC (rev 85265)
@@ -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/trunk/managed/src/main/java/org/jboss/managed/plugins/DefaultFieldsImpl.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DefaultFieldsImpl.java 2009-03-04 23:57:22 UTC (rev 85264)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DefaultFieldsImpl.java 2009-03-05 00:18:30 UTC (rev 85265)
@@ -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/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedPropertyImpl.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedPropertyImpl.java 2009-03-04 23:57:22 UTC (rev 85264)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedPropertyImpl.java 2009-03-05 00:18:30 UTC (rev 85265)
@@ -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/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/template/ManagementObjectExplicit.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/template/ManagementObjectExplicit.java 2009-03-04 23:57:22 UTC (rev 85264)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/template/ManagementObjectExplicit.java 2009-03-05 00:18:30 UTC (rev 85265)
@@ -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/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java 2009-03-04 23:57:22 UTC (rev 85264)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java 2009-03-05 00:18:30 UTC (rev 85265)
@@ -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/trunk/managed/src/test/java/org/jboss/test/managed/mock/MockDOMFields.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/mock/MockDOMFields.java 2009-03-04 23:57:22 UTC (rev 85264)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/mock/MockDOMFields.java 2009-03-05 00:18:30 UTC (rev 85265)
@@ -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