[jboss-cvs] JBossAS SVN: r70025 - in trunk/profileservice/src/main/org/jboss/profileservice/management: plugins and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 22 01:17:58 EST 2008


Author: scott.stark at jboss.org
Date: 2008-02-22 01:17:58 -0500 (Fri, 22 Feb 2008)
New Revision: 70025

Modified:
   trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
   trunk/profileservice/src/main/org/jboss/profileservice/management/plugins/BasicDeploymentTemplateInfo.java
   trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java
   trunk/profileservice/src/main/org/jboss/profileservice/management/templates/FakeDsXmlDataSourceTemplate.java
   trunk/profileservice/src/main/org/jboss/profileservice/management/templates/JmsDestinationTemplate.java
   trunk/profileservice/src/main/org/jboss/profileservice/management/templates/JmsDestinationTemplateInfo.java
Log:
JBAS-4396, deal with component template that map to properties of the root managed objects

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java	2008-02-22 06:14:58 UTC (rev 70024)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java	2008-02-22 06:17:58 UTC (rev 70025)
@@ -44,7 +44,6 @@
 import org.jboss.deployers.client.spi.Deployment;
 import org.jboss.deployers.client.spi.main.MainDeployer;
 import org.jboss.deployers.spi.management.DeploymentTemplate;
-import org.jboss.deployers.spi.management.DeploymentTemplateInfo;
 import org.jboss.deployers.spi.management.ManagementView;
 import org.jboss.deployers.spi.management.RuntimeComponentDispatcher;
 import org.jboss.deployers.vfs.spi.client.VFSDeployment;
@@ -54,6 +53,7 @@
 import org.jboss.managed.api.ManagedComponent;
 import org.jboss.managed.api.ManagedDeployment;
 import org.jboss.managed.api.ManagedDeployment.DeploymentPhase;
+import org.jboss.managed.api.DeploymentTemplateInfo;
 import org.jboss.managed.api.ManagedObject;
 import org.jboss.managed.api.ManagedOperation;
 import org.jboss.managed.api.ManagedParameter;
@@ -75,6 +75,7 @@
 import org.jboss.metatype.api.values.SimpleValue;
 import org.jboss.metatype.api.values.SimpleValueSupport;
 import org.jboss.metatype.api.values.MetaValueFactory;
+import org.jboss.profileservice.management.plugins.BasicDeploymentTemplateInfo;
 import org.jboss.profileservice.spi.AttachmentsSerializer;
 import org.jboss.profileservice.spi.NoSuchDeploymentException;
 import org.jboss.profileservice.spi.NoSuchProfileException;
@@ -653,9 +654,11 @@
       VFSDeployment ctx = deploymentFactory.createVFSDeployment(vf);
       activeProfile.addDeployment(ctx, phase);
       mainDeployer.addDeployment(ctx);
+      // Seems useless, what was the original point of this?
       template.updateTemplateDeployment(ctx, info);
       mainDeployer.process();
 
+      
       /* Scan through the template properties to see if there is a
          property with an ManagementObjectID annotation that needs
          to be used to update the associated ManagedObject name.
@@ -694,9 +697,22 @@
          }
       }
 
-      // Now apply the managed properties
+      // Now apply the managed properties to get the deployment ManagedObjects
       Map<String, ManagedObject> mos = mainDeployer.getManagedObjects(ctx.getName());
       log.debug("applyTemplate, profile="+activeProfile+", deploymentBaseName="+deploymentBaseName+", phase="+phase+", :"+mos);
+      // TODO: need a proper api for mapping to the template properties
+      if(info instanceof BasicDeploymentTemplateInfo)
+      {
+         BasicDeploymentTemplateInfo binfo = (BasicDeploymentTemplateInfo) info;
+         String propName = binfo.getRootManagedPropertyName();
+         if(propName != null)
+         {
+            // Flatten out the root objects
+            ManagedObject rootMO = mos.get(ctx.getName());
+            if(rootMO != null)
+               flattenRootObject(rootMO, propName, mos);
+         }
+      }
       for(ManagedProperty prop : info.getProperties().values())
       {
          // Skip null values
@@ -968,6 +984,42 @@
    {
       return mainDeployer.getManagedDeployment(ctx.getName());
    }
+   /**
+    * Take the root managed object and the associated deployment unit
+    * managed object map, and look to the root MO for a collection type
+    * managed property named rootProperty to which the template property
+    * map.
+    * 
+    * @param rootMO
+    * @param rootProperty
+    * @param managedObjects
+    */
+   private void flattenRootObject(ManagedObject rootMO, String rootProperty,
+         Map<String,ManagedObject> managedObjects)
+   {
+      ManagedProperty deployments = rootMO.getProperty(rootProperty);
+      MetaType propType = deployments.getMetaType();
+      if (propType.isCollection())
+      {
+         CollectionMetaType amt = (CollectionMetaType) propType;
+         MetaType etype = amt.getElementType();
+         if (etype == AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE)
+         {
+            CollectionValue avalue = (CollectionValue) deployments.getValue();
+            if(avalue != null)
+            {
+               MetaValue[] elements = avalue.getElements();
+               for(int n = 0; n < avalue.getSize(); n ++)
+               {
+                  GenericValue gv = (GenericValue) elements[n];
+                  ManagedObject propMO = (ManagedObject) gv.getValue();
+                  if(propMO != null)
+                     managedObjects.put(propMO.getName(), propMO);
+               }
+            }
+         }
+      }
+   }
 
    public class ManagedOperationDelegate implements ManagedOperation
    {

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/plugins/BasicDeploymentTemplateInfo.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/plugins/BasicDeploymentTemplateInfo.java	2008-02-22 06:14:58 UTC (rev 70024)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/plugins/BasicDeploymentTemplateInfo.java	2008-02-22 06:17:58 UTC (rev 70025)
@@ -25,11 +25,12 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.jboss.deployers.spi.management.DeploymentTemplateInfo;
+import org.jboss.managed.api.DeploymentTemplateInfo;
+import org.jboss.managed.api.ManagedObject;
 import org.jboss.managed.api.ManagedProperty;
 
 /**
- * 
+ * A simple bean type of implementation of DeploymentTemplateInfo
  * @author Scott.Stark at jboss.org
  * @version $Revision:$
  */
@@ -37,8 +38,18 @@
    implements DeploymentTemplateInfo, Serializable
 {
    private static final long serialVersionUID = 1;
+   /** The name the template is registered under with the profile service */
    private String name;
+   /** The template description */
    private String description;
+   /** The name of the ManagedProperty in the Map<String, ManagedObject> map
+    * obtained from the mainDeployer.getManagedObjects(VFSDeployment)
+    * for the resulting template VFSDeployment.
+    */
+   private String rootManagedPropertyName;
+   /**
+    * 
+    */
    private Map<String, ManagedProperty> properties;
 
    public BasicDeploymentTemplateInfo(String name, String description)
@@ -63,6 +74,15 @@
       return name;
    }
 
+   public String getRootManagedPropertyName()
+   {
+      return rootManagedPropertyName;
+   }
+   public void setRootManagedPropertyName(String rootManagedPropertyName)
+   {
+      this.rootManagedPropertyName = rootManagedPropertyName;
+   }
+
    public Map<String, ManagedProperty> getProperties()
    {
       return properties;

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java	2008-02-22 06:14:58 UTC (rev 70024)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java	2008-02-22 06:17:58 UTC (rev 70025)
@@ -30,9 +30,9 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.jboss.deployers.spi.management.DeploymentTemplate;
-import org.jboss.deployers.spi.management.DeploymentTemplateInfo;
 import org.jboss.deployers.vfs.spi.client.VFSDeployment;
 import org.jboss.logging.Logger;
+import org.jboss.managed.api.DeploymentTemplateInfo;
 import org.jboss.managed.api.ManagedProperty;
 import org.jboss.metatype.api.types.CompositeMetaType;
 import org.jboss.metatype.api.values.CompositeValue;

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/templates/FakeDsXmlDataSourceTemplate.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/templates/FakeDsXmlDataSourceTemplate.java	2008-02-22 06:14:58 UTC (rev 70024)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/templates/FakeDsXmlDataSourceTemplate.java	2008-02-22 06:17:58 UTC (rev 70025)
@@ -28,8 +28,8 @@
 import java.util.Map;
 
 import org.jboss.deployers.spi.management.DeploymentTemplate;
-import org.jboss.deployers.spi.management.DeploymentTemplateInfo;
 import org.jboss.deployers.vfs.spi.client.VFSDeployment;
+import org.jboss.managed.api.DeploymentTemplateInfo;
 import org.jboss.managed.api.ManagedProperty;
 import org.jboss.profileservice.mock.ds.DataSourceDeployment;
 import org.jboss.profileservice.mock.ds.FakeDataSourceDeployer;

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/templates/JmsDestinationTemplate.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/templates/JmsDestinationTemplate.java	2008-02-22 06:14:58 UTC (rev 70024)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/templates/JmsDestinationTemplate.java	2008-02-22 06:17:58 UTC (rev 70025)
@@ -35,9 +35,9 @@
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlValue;
 import org.jboss.deployers.spi.management.DeploymentTemplate;
-import org.jboss.deployers.spi.management.DeploymentTemplateInfo;
 import org.jboss.deployers.vfs.spi.client.VFSDeployment;
 import org.jboss.logging.Logger;
+import org.jboss.managed.api.DeploymentTemplateInfo;
 import org.jboss.managed.api.ManagedProperty;
 import org.jboss.virtual.VirtualFile;
 
@@ -81,14 +81,14 @@
       String destinationType = destinationInfo.getDestinationType();
 
       JmsDestinationMetaData destination = new JmsDestinationMetaData();
-
+      String jndiName = "" + getProperty(info, "JNDIName");
       if("queue".equals(destinationType))
       {
          destination.className = "org.jboss.jms.server.destination.QueueService";
          destination.annotation =
             "@org.jboss.system.deployers.managed.ManagementObjectClass(code=org.jboss.jms.server.destination.QueueServiceMO)";
          destination.xmbeanDd = "xmdesc/Queue-xmbean.xml";
-         destination.jmxName = "jboss.messaging.destination:service=Queue,name=" + getProperty(info, "JNDIName");
+         destination.jmxName = "jboss.messaging.destination:service=Queue,name=" + jndiName;
       }
       else if("topic".equals(destinationType))
       {
@@ -96,35 +96,18 @@
          destination.annotation =
             "@org.jboss.system.deployers.managed.ManagementObjectClass(code=org.jboss.jms.server.destination.TopicServiceMO)";
          destination.xmbeanDd = "xmdesc/Topic-xmbean.xml";
-         destination.jmxName = "jboss.messaging.destination:service=Topic,name=" + getProperty(info, "JNDIName");
+         destination.jmxName = "jboss.messaging.destination:service=Topic,name=" + jndiName;
       }
       else
       {
          throw new IllegalStateException("Unsupported destination type: " + destinationType);
       }
+      List<JmsAttributeMetaData> attributes = new ArrayList<JmsAttributeMetaData>();
 
-/*
-      ServiceMetaData destination = new ServiceMetaData();
-      destination.setCode("org.jboss.jms.server.destination.QueueService");
+      JmsAttributeMetaData jndiNameMD = new JmsAttributeMetaData("JNDIName", jndiName);
+      destination.attribute = attributes;
+      attributes.add(jndiNameMD);
 
-      java.util.Properties keyValues = new java.util.Properties();
-      keyValues.put("service", "Queue");
-      keyValues.put("name", destinationInfo.getName());
-      ObjectName name = new ObjectName("jboss.messaging.destination", keyValues);
-      destination.setObjectName(name);
-
-      ServiceDependencyMetaData depends = new ServiceDependencyMetaData();
-      depends.setIDependOn("jboss.messaging:service=PostOffice");
-      List<ServiceDependencyMetaData> dependsList = new ArrayList<ServiceDependencyMetaData>();
-      dependsList.add(depends);
-      destination.setDependencies(dependsList);
-
-      ServiceDeployment deployment = new ServiceDeployment();
-      List<ServiceMetaData> services = new ArrayList<ServiceMetaData>();
-      services.add(destination);
-      deployment.setServices(services);
-*/
-
       List<JmsDependencyMetaData> depends = new ArrayList<JmsDependencyMetaData>();
       destination.depends = depends;
       depends.add(new JmsDependencyMetaData("ServerPeer", "jboss.messaging:service=ServerPeer"));
@@ -195,9 +178,25 @@
       @XmlElement
       String annotation;
 
+      public List<JmsAttributeMetaData> attribute;
       public List<JmsDependencyMetaData> depends;
    }
 
+   public static class JmsAttributeMetaData
+   {
+      @XmlAttribute
+      String name;
+      @XmlValue
+      String value;
+      public JmsAttributeMetaData()
+      {
+      }
+      public JmsAttributeMetaData(String name, String value)
+      {
+         this.name = name;
+         this.value = value;
+      }
+   }
    public static class JmsDependencyMetaData
    {
       @XmlAttribute(name = "optional-attribute-name")

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/templates/JmsDestinationTemplateInfo.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/templates/JmsDestinationTemplateInfo.java	2008-02-22 06:14:58 UTC (rev 70024)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/templates/JmsDestinationTemplateInfo.java	2008-02-22 06:17:58 UTC (rev 70025)
@@ -49,6 +49,7 @@
    {
       super(name, description);
       this.destinationType = destinationType;
+      super.setRootManagedPropertyName("services");
    }
 
 
@@ -67,8 +68,8 @@
       else
          throw new IllegalStateException("Unexpected destination type: " + destinationType);
 
-      addManagedProperty("Name", "The destination name", true, true, SimpleMetaType.STRING, mo);
-      addManagedProperty("JNDIName", "The destination's JNDI name", false, false, SimpleMetaType.STRING, mo);
+      addManagedProperty("name", "The destination name", true, false, SimpleMetaType.STRING, mo);
+      addManagedProperty("JNDIName", "The destination's JNDI name", false, true, SimpleMetaType.STRING, mo);
    }
 
    private void addManagedProperty(String fieldName,




More information about the jboss-cvs-commits mailing list