[jboss-cvs] JBossAS SVN: r85281 - in projects/jboss-man/branches/Branch_2_1/managed/src: test/java/org/jboss/test/managed/factory/support and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Mar 5 02:32:22 EST 2009


Author: scott.stark at jboss.org
Date: 2009-03-05 02:32:22 -0500 (Thu, 05 Mar 2009)
New Revision: 85281

Added:
   projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/JmsDestinationTemplateInfo.java
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/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java
Log:
JBMAN-62, Need copy(BasicDeploymentTemplateInfo)


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 07:28:51 UTC (rev 85280)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/BasicDeploymentTemplateInfo.java	2009-03-05 07:32:22 UTC (rev 85281)
@@ -95,18 +95,10 @@
       this.properties.put(property.getName(), property);
    }
 
-   
    public DeploymentTemplateInfo copy()
    {
       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);
+      this.copy(copy);
       return copy;
    }
 
@@ -122,4 +114,16 @@
       tmp.append('}');
       return tmp.toString();
    }
+
+   protected void copy(BasicDeploymentTemplateInfo copy)
+   {
+      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);
+   }
 }

Copied: projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/JmsDestinationTemplateInfo.java (from rev 85275, projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/JmsDestinationTemplateInfo.java)
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/JmsDestinationTemplateInfo.java	                        (rev 0)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/JmsDestinationTemplateInfo.java	2009-03-05 07:32:22 UTC (rev 85281)
@@ -0,0 +1,128 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * 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.test.managed.factory.support;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.annotation.factory.AnnotationProxy;
+import org.jboss.managed.api.DeploymentTemplateInfo;
+import org.jboss.managed.api.annotation.ManagementObjectID;
+import org.jboss.managed.plugins.BasicDeploymentTemplateInfo;
+import org.jboss.managed.plugins.DefaultFieldsImpl;
+import org.jboss.managed.plugins.ManagedObjectImpl;
+import org.jboss.managed.plugins.ManagedPropertyImpl;
+import org.jboss.metatype.api.types.MetaType;
+import org.jboss.metatype.api.types.SimpleMetaType;
+import org.jboss.metatype.api.values.MetaValue;
+
+/**
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
+ */
+public class JmsDestinationTemplateInfo extends BasicDeploymentTemplateInfo
+{
+   private static final long serialVersionUID = 1;
+   private String destinationType = "queue";
+   
+   public JmsDestinationTemplateInfo(String name, String description, String destinationType)
+   {
+      super(name, description);
+      this.destinationType = destinationType;
+      super.setRootManagedPropertyName("services");
+
+      ManagedObjectImpl mo;
+      if("queue".equals(destinationType))
+         mo = new ManagedObjectImpl("org.jboss.jms.server.destination.QueueServiceMO");
+      else if("topic".equals(destinationType))
+         mo = new ManagedObjectImpl("org.jboss.jms.server.destination.TopicServiceMO");
+      else
+         throw new IllegalStateException("Unexpected destination type: " + destinationType);
+
+      addManagedProperty("name", "The destination name", true, false, SimpleMetaType.STRING, mo);
+      addManagedProperty("JNDIName", "The destination's JNDI name", false, true, SimpleMetaType.STRING, mo);
+   }
+   
+   
+   public String getDestinationType()
+   {
+      return destinationType;
+   }
+
+
+   @Override
+   public JmsDestinationTemplateInfo copy()
+   {
+      JmsDestinationTemplateInfo copy = new JmsDestinationTemplateInfo(getName(), getDescription(), destinationType);
+      super.copy(copy);
+      return copy;
+   }
+
+   private void addManagedProperty(String fieldName,
+                                   String fieldDescr,
+                                   boolean mandatory,
+                                   boolean isID,
+                                   MetaType metaType,
+                                   ManagedObjectImpl mo)
+   {
+      
+      addManagedProperty(fieldName, fieldDescr, mandatory, isID, metaType, null, mo);
+   }
+
+   private void addManagedProperty(String fieldName,
+                                   String fieldDescr,
+                                   boolean mandatory,
+                                   boolean isID,
+                                   MetaType metaType,
+                                   MetaValue value,
+                                   ManagedObjectImpl mo)
+   {
+      DefaultFieldsImpl fields = new DefaultFieldsImpl();
+      fields.setDescription(fieldDescr);
+      fields.setMandatory(mandatory);
+      fields.setMetaType(metaType);
+      fields.setName(fieldName);
+      ManagedPropertyImpl mp = new ManagedPropertyImpl(mo, fields);
+      if(isID)
+      {
+         Map<String, Annotation> annotations = new HashMap<String, Annotation>();
+         Map<String, Object> idFields = Collections.emptyMap();
+         try
+         {
+            ManagementObjectID id = (ManagementObjectID) AnnotationProxy.createProxy(idFields, ManagementObjectID.class);
+            annotations.put(ManagementObjectID.class.getName(), id);
+            mp.setAnnotations(annotations);
+         }
+         catch(Exception e)
+         {
+            throw new UndeclaredThrowableException(e);
+         }
+      }
+
+      super.addProperty(mp);
+      if(value != null)
+         mp.setValue(value);
+   }
+}

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 07:28:51 UTC (rev 85280)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java	2009-03-05 07:32:22 UTC (rev 85281)
@@ -32,6 +32,7 @@
 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.JmsDestinationTemplateInfo;
 import org.jboss.test.managed.factory.support.template.ManagementObjectExplicit;
 
 
@@ -127,4 +128,23 @@
       assertEquals("property1.value", SimpleValueSupport.wrap("value1-copy"), value1);
       assertEquals("property1_1.value", SimpleValueSupport.wrap("value1-orig"), value1_1);
    }
+
+   public void testSubclassCopy()
+   {
+      JmsDestinationTemplateInfo info = new JmsDestinationTemplateInfo("testSubclassCopy", "testSubclassCopy", "queue");
+      ManagedProperty jndiName = info.getProperties().get("JNDIName");
+      jndiName.setValue(SimpleValueSupport.wrap("testSubclassCopy"));
+      JmsDestinationTemplateInfo info2 = info.copy();
+      jndiName.setValue(SimpleValueSupport.wrap("testSubclassCopy-updated"));
+      ManagedProperty jndiName2 = info2.getProperties().get("JNDIName");
+      MetaValue value = jndiName.getValue();
+      MetaValue value2 = jndiName2.getValue();
+
+      assertTrue(info.getProperties() != info2.getProperties());
+      assertTrue(jndiName != jndiName2);
+      assertTrue(jndiName.getFields() != jndiName2.getFields());
+      assertTrue(value != value2);
+      assertEquals("jndiName", SimpleValueSupport.wrap("testSubclassCopy-updated"), jndiName.getValue());
+      assertEquals("jndiName2", SimpleValueSupport.wrap("testSubclassCopy"), value2);
+   }
 }




More information about the jboss-cvs-commits mailing list