[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