[jboss-cvs] JBossAS SVN: r60952 - in trunk: profileservice/src/main/org/jboss/profileservice/management/builders and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Feb 27 13:14:12 EST 2007


Author: scott.stark at jboss.org
Date: 2007-02-27 13:14:12 -0500 (Tue, 27 Feb 2007)
New Revision: 60952

Modified:
   trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
   trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java
   trunk/profileservice/src/main/org/jboss/profileservice/management/builders/DomFields.java
   trunk/profileservice/src/main/org/jboss/profileservice/management/builders/FakeConnectionFactoryDeployerManagedObjectBuilder.java
   trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java
   trunk/profileservice/src/main/org/jboss/profileservice/mock/ds/FakeDataSourceDeployer.java
   trunk/profileservice/src/resources/profileservice-beans.xml
   trunk/system/src/main/org/jboss/profileservice/aop/DeployerAspects.java
   trunk/system/src/main/org/jboss/profileservice/aop/TrackingAdvice.java
   trunk/system/src/main/org/jboss/system/server/profileservice/repository/AbstractFileAttachmentsSerializer.java
   trunk/system/src/main/org/jboss/system/server/profileservice/repository/JavaSerializationAttachmentsSerializer.java
   trunk/system/src/main/org/jboss/system/server/profileservice/repository/SerializableDeploymentRepository.java
Log:
JBMICROCONT-151, refactor the attachment api on DeploymentUnit to facilitate proper usage

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -392,19 +392,27 @@
       checkIncomplete();
    }
 
+   /**
+    * Called by the DeployerAspects to register a deployment as a
+    * ComponentType.
+    */
    public void updateComponentType(DeploymentUnit unit, ComponentType type)
    {
       DeploymentContext ctx = unit.getDeploymentContext();
       log.debug("updateComponentType, unit="+unit.getName()+", type="+type);
       ctxToCompType.put(ctx, type);
       DeploymentContext topCtx = ctx.getTopLevel();
-      if( ctxToDeployment.containsKey(topCtx) == false )
+      if( type.getSubtype().equals("Topic") )
+         log.info("Saw Topic");
+      if( ctxToDeployment.containsKey(ctx) == false )
       {
+         // This deployment unit has not been indexed yet
          try
          {
+            // Rebuild the ManagedDeployment structure
             ManagedDeployment md = getManagedDeployment(topCtx);
             indexComponents(md);
-            ctxToDeployment.put(topCtx, md);
+            ctxToDeployment.put(ctx, md);
          }
          catch(Exception e)
          {

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -29,13 +29,13 @@
 import org.jboss.logging.Logger;
 import org.jboss.managed.api.ManagedObject;
 import org.jboss.managed.plugins.advice.WrapperAdvice;
-import org.jboss.system.metadata.ServiceDeployment;
+import org.w3c.dom.Document;
 
 /**
  * A ManagedObjectBuilder for use as an override to the ConnectionFactoryDeployer
  * 
  * @author Scott.Stark at jboss.org
- * @version $Revision:$
+ * @version $Revision$
  */
 public class ConnectionFactoryDeployerManagedObjectBuilder
    implements ManagedObjectBuilder
@@ -48,10 +48,9 @@
       String name = unit.getSimpleName();
       if(name.endsWith("-ds.xml"))
       {
-         Map<String, Object> attachments = unit.getAttachments();
-         log.info(name+" attachments: "+attachments);
-         ServiceDeployment dsMetaData = unit.getAttachment(ServiceDeployment.class);
-         String attachName = ServiceDeployment.class.getName();
+         Map<String, Object> attachments = unit.getTransientManagedObjects().getAttachments();
+         log.debug(name+" attachments: "+attachments);
+         String attachName = Document.class.getName();
          ManagedObject mo = new DomDataSourceManagedObject(attachName);
          ManagedObject wrapMO = WrapperAdvice.wrapManagedObject(mo);
          map.put(attachName, wrapMO);


Property changes on: trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java
___________________________________________________________________
Name: svn:keywords
   - Id,Revision
   + Id Revision

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/builders/DomFields.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/builders/DomFields.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/builders/DomFields.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -73,7 +73,7 @@
    {
       if (VALUE.equals(name))
       {
-         String string = (String) value;
+         String string = value.toString();
          String elementName = getElementName();
          NodeList nodes = element.getElementsByTagName(elementName);
          Element childElement = null;

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/builders/FakeConnectionFactoryDeployerManagedObjectBuilder.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/builders/FakeConnectionFactoryDeployerManagedObjectBuilder.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/builders/FakeConnectionFactoryDeployerManagedObjectBuilder.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -77,7 +77,7 @@
       String name = unit.getSimpleName();
       if(name.endsWith("-dsf.xml"))
       {
-         Map<String, Object> attachments = unit.getAttachments();
+         Map<String, Object> attachments = unit.getTransientManagedObjects().getAttachments();
          log.info(name+" attachments: "+attachments);
          ServiceDeployment service = unit.getAttachment(ServiceDeployment.class);
          if( service == null )

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -24,11 +24,22 @@
 import java.io.File;
 import java.io.FileWriter;
 import java.net.URI;
+import java.util.Map;
 
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
 import org.jboss.deployers.spi.management.DeploymentTemplate;
 import org.jboss.deployers.spi.management.DeploymentTemplateInfo;
 import org.jboss.deployers.spi.structure.DeploymentContext;
+import org.jboss.logging.Logger;
+import org.jboss.managed.api.ManagedProperty;
 import org.jboss.virtual.VirtualFile;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Text;
+import org.jboss.util.xml.DOMWriter;
 
 /**
  * A template for creating a datasource(*-ds.xml) deployments.
@@ -39,6 +50,7 @@
 public class DsXmlDataSourceTemplate
    implements DeploymentTemplate
 {
+   private static final Logger log = Logger.getLogger(DsXmlDataSourceTemplate.class);
    private DeploymentTemplateInfo info;
 
    /**
@@ -55,11 +67,38 @@
       VirtualFile dsXmlVF = root.findChild(dsName);
       return dsXmlVF;
    }
+
+   /**
+    * Update the ctx with the metadata values that correspond to the
+    * template info values.
+    * @param ctx - the DeploymentContext to associate metadata to
+    * @param values - the managed property values passed to apply.
+    */
    public void updateTemplateDeployment(DeploymentContext ctx,
          DeploymentTemplateInfo values)
       throws Exception
    {
-   
+      // Add the -ds.xml Document metadata
+      Document document = null;
+      try
+      {
+         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+         DocumentBuilder builder = factory.newDocumentBuilder();
+         DOMImplementation impl = builder.getDOMImplementation();
+         document = impl.createDocument(null, null, null);
+         Element element = document.createElement("datasources");
+         document.appendChild(element);
+      }
+      catch (RuntimeException e)
+      {
+         throw e;
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException("Error creating dom", e);
+      }
+
+      ctx.getPredeterminedManagedObjects().addAttachment(Document.class, document);   
    }
 
    public DeploymentTemplateInfo getInfo()
@@ -84,4 +123,38 @@
       fw.flush();
       fw.close();
    }
+
+   protected Document buildDocument(DeploymentTemplateInfo values)
+      throws Exception
+   {
+      Document document = null;
+      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+      DocumentBuilder builder = factory.newDocumentBuilder();
+      DOMImplementation impl = builder.getDOMImplementation();
+      document = impl.createDocument(null, null, null);
+      Element ds = document.createElement("datasources");
+      document.appendChild(ds);
+      Map<String, ManagedProperty> properties = values.getProperties();
+      // datasource-type
+      ManagedProperty dsType = properties.get("datasource-type");
+      if( dsType == null || dsType.getValue() == null )
+         throw new IllegalStateException("Required datasource-type value not found");
+      Element dsTypeElem = document.createElement(dsType.getValue().toString());
+      ds.appendChild(dsTypeElem);
+      // All other
+      for(ManagedProperty p : properties.values())
+      {
+         String tagName = p.getName();
+         if( p.isMandatory() && p.getValue() == null )
+            throw new IllegalStateException("Required "+tagName+" value not found");
+         Element element = document.createElement(tagName);
+         Text t = document.createTextNode(p.getValue().toString());
+         element.appendChild(t);
+         dsTypeElem.appendChild(element);
+      }
+
+      log.debug("Updated metadata to: "+DOMWriter.printNode(document, true));
+      return document;
+   }
+
 }

Modified: trunk/profileservice/src/main/org/jboss/profileservice/mock/ds/FakeDataSourceDeployer.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/mock/ds/FakeDataSourceDeployer.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/mock/ds/FakeDataSourceDeployer.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -95,7 +95,7 @@
       String name = unit.getSimpleName();
       if(name.endsWith("-dsf.xml"))
       {
-         Map<String, Object> attachments = unit.getAttachments();
+         Map<String, Object> attachments = unit.getTransientManagedObjects().getAttachments();
          log.info(name+" attachments: "+attachments);
          ServiceDeployment service = unit.getAttachment(ServiceDeployment.class);
          if( service == null )

Modified: trunk/profileservice/src/resources/profileservice-beans.xml
===================================================================
--- trunk/profileservice/src/resources/profileservice-beans.xml	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/resources/profileservice-beans.xml	2007-02-27 18:14:12 UTC (rev 60952)
@@ -67,6 +67,20 @@
     
     <!-- DeploymentTemplates -->
     <bean name="DsXmlDataSourceTemplate"
+        class="org.jboss.profileservice.management.templates.DsXmlDataSourceTemplate">
+        <install bean="ManagementView" method="addTemplate">
+            <parameter>
+                <this/>
+            </parameter>
+        </install>
+        <uninstall bean="ManagementView" method="removeTemplate">
+            <parameter>
+                <this/>
+            </parameter>
+        </uninstall>
+        <property name="info"><inject bean="DsXmlDataSourceTemplateInfo"/></property>
+    </bean>
+    <bean name="FakeDsXmlDataSourceTemplate"
         class="org.jboss.profileservice.management.templates.FakeDsXmlDataSourceTemplate">
         <install bean="ManagementView" method="addTemplate">
             <parameter>
@@ -78,13 +92,14 @@
                 <this/>
             </parameter>
         </uninstall>
-        <property name="info"><inject bean="DsXmlDataSourceTemplateInfo"/></property>
+        <property name="info"><inject bean="FakeDsXmlDataSourceTemplateInfo"/></property>
         <property name="deployer"><inject bean="FakeDataSourceDeployer" /></property>
     </bean>
-    <bean name="DsXmlDataSourceTemplateInfo"
+    
+    <bean name="FakeDsXmlDataSourceTemplateInfo"
         class="org.jboss.profileservice.management.templates.DsXmlDataSourceTemplateInfo">
         <constructor>
-            <parameter>DsXmlDataSourceTemplate</parameter>
+            <parameter>FakeDsXmlDataSourceTemplateInfo</parameter>
             <parameter>A template for *-dsf.xml deployments</parameter>
             <parameter>org.jboss.system.metadata.ServiceMetaData</parameter>
         </constructor>
@@ -95,6 +110,20 @@
             <inject bean="DsPropertyMappings" />
         </property>
     </bean>
+    <bean name="DsXmlDataSourceTemplateInfo"
+        class="org.jboss.profileservice.management.templates.DsXmlDataSourceTemplateInfo">
+        <constructor>
+            <parameter>DsXmlDataSourceTemplate</parameter>
+            <parameter>A template for *-ds.xml deployments</parameter>
+            <parameter>org.w3c.dom.Document</parameter>
+        </constructor>
+        <!-- Specify a mapping from service attribute names used by the datasource
+            deployment ServiceMetaData to ManagedProperty names. 
+        -->
+        <property name="propertyNameMappings">
+            <inject bean="DsPropertyMappings" />
+        </property>
+    </bean>
     <bean name="DsPropertyMappings" class="java.util.HashMap">
         <constructor>
             <map class="java.util.HashMap" keyClass="java.lang.String" valueClass="java.lang.String">


Property changes on: trunk/profileservice/src/resources/profileservice-beans.xml
___________________________________________________________________
Name: svn:keywords
   - Id, Revision
   + Id Revision

Modified: trunk/system/src/main/org/jboss/profileservice/aop/DeployerAspects.java
===================================================================
--- trunk/system/src/main/org/jboss/profileservice/aop/DeployerAspects.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/profileservice/aop/DeployerAspects.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -49,6 +49,7 @@
    private static ComponentTypeVisitor compVisitor;
    private static ComponentTypeListener compListener;
    private static AttachmentsSerializer attachmentsSerializer;
+   private static boolean trace = log.isTraceEnabled();
 
    public static ComponentTypeVisitor getCompVisitor()
    {
@@ -88,7 +89,8 @@
 
    public Object invoke(Invocation invocation) throws Throwable
    {
-      log.debug(invocation);
+      if( trace )
+         log.trace(invocation);
       MethodInvocation mi = (MethodInvocation) invocation;
       String methodName = mi.getMethod().getName();
       Object value = null;
@@ -117,7 +119,8 @@
       Deployer target = Deployer.class.cast(invocation.getTargetObject());
       Object[] args = invocation.getArguments();
       DeploymentUnit unit = DeploymentUnit.class.cast(args[0]);
-      log.debug("prepareDeploy, target="+target+", unit="+unit.getSimpleName());
+      if( trace )
+         log.trace("prepareDeploy, target="+target+", unit="+unit.getSimpleName());
       if( attachmentsSerializer != null )
       {
          ClassLoader loader = null;
@@ -160,7 +163,8 @@
       Object[] args = invocation.getArguments();
       Deployer target = Deployer.class.cast(invocation.getTargetObject());
       DeploymentUnit unit = DeploymentUnit.class.cast(args[0]);
-      log.debug("commitDeploy, target="+target+", unit="+unit.getSimpleName());
+      if( trace )
+         log.trace("commitDeploy, target="+target+", unit="+unit.getSimpleName());
       if( compVisitor != null )
       {
          ComponentType type = compVisitor.visit(unit);
@@ -199,7 +203,8 @@
       throws Throwable
    {
       Object target = invocation.getTargetObject();
-      log.debug("prepareUndeploy, target="+target);
+      if( trace )
+         log.trace("prepareUndeploy, target="+target);
       return invocation.invokeNext();
    }
    public Object commitUndeploy(MethodInvocation invocation)
@@ -207,7 +212,8 @@
    {
       Object target = invocation.getTargetObject();
       Object value = invocation.invokeNext();
-      log.debug("commitUndeploy, target="+target);
+      if( trace )
+         log.trace("commitUndeploy, target="+target);
       return value;
    }
 

Modified: trunk/system/src/main/org/jboss/profileservice/aop/TrackingAdvice.java
===================================================================
--- trunk/system/src/main/org/jboss/profileservice/aop/TrackingAdvice.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/profileservice/aop/TrackingAdvice.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -43,6 +43,7 @@
    private static Logger log = Logger.getLogger(TrackingAdvice.class);
    private static ConcurrentHashMap<Object, Map<String, Object>> attachmentsByTarget =
       new ConcurrentHashMap<Object, Map<String, Object>>();
+   private static boolean trace;
 
    public static Attachments wrapAttachments(Attachments attachments)
    {
@@ -52,13 +53,16 @@
    public Object invoke(Invocation inv)
       throws Throwable
    {
-      log.info("invoke, "+inv);
+      if( trace )
+         log.trace("invoke, "+inv);
       return inv.invokeNext();
    }
 
    public Object addAttachment(MethodInvocation mi)
       throws Throwable
    {
+      if( trace )
+         log.trace(mi);
       Object target = mi.getTargetObject();
       Object[] args = mi.getArguments();
       Object value = mi.invokeNext();
@@ -113,7 +117,7 @@
    public static Map<String, Object> clearAttachmentsForTarget(Object key)
    {
       Map<String, Object> attachments = attachmentsByTarget.remove(key);
-      if( log.isTraceEnabled() )
+      if( trace )
          log.trace("clearAttachmentsForTarget, target="+key+" :"+attachments);
       return attachments;
    }
@@ -127,7 +131,8 @@
          attachmentsByTarget.put(target, attachments);
       }
       attachments.put(name, attachment);
-      log.debug("addAttachment, target="+target+", name="+name);
+      if( trace )
+         log.trace("addAttachment, target="+target+", name="+name+", attachment="+attachment);
    }
    private static void removeAttachment(Object target, String name)
    {
@@ -138,7 +143,8 @@
          if( attachments.size() == 0 )
             attachmentsByTarget.remove(target);
       }
-      log.debug("removeAttachment, target="+target+", name="+name);
+      if( trace )
+         log.trace("removeAttachment, target="+target+", name="+name);
    }
 
    /**
@@ -160,7 +166,7 @@
       params.setObjectAsSuperClass(true);
       params.setTarget(target);
       Object proxy = proxyFactory.createAdvisedProxy(params);
-      if( log.isTraceEnabled() )
+      if( trace )
          log.trace("Created proxy: "+proxy.getClass()+"@"+System.identityHashCode(proxy)+" target: "+target.getClass());
       return interfaceClass.cast(proxy);
    }

Modified: trunk/system/src/main/org/jboss/system/server/profileservice/repository/AbstractFileAttachmentsSerializer.java
===================================================================
--- trunk/system/src/main/org/jboss/system/server/profileservice/repository/AbstractFileAttachmentsSerializer.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/system/server/profileservice/repository/AbstractFileAttachmentsSerializer.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -89,7 +89,7 @@
             throw new IOException("Failed to create attachmentsParent: "+attachmentsParent.getAbsolutePath());
       }
 
-      Map<String, Object> attachments = TrackingAdvice.clearAttachmentsForTarget(ctx.getTransientManagedObjects());
+      Map<String, Object> attachments = TrackingAdvice.clearAttachmentsForTarget(ctx.getTransientAttachments());
       if( attachments != null )
          saveAttachments(attachmentsStore, attachments, loader);
    }

Modified: trunk/system/src/main/org/jboss/system/server/profileservice/repository/JavaSerializationAttachmentsSerializer.java
===================================================================
--- trunk/system/src/main/org/jboss/system/server/profileservice/repository/JavaSerializationAttachmentsSerializer.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/system/server/profileservice/repository/JavaSerializationAttachmentsSerializer.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -47,6 +47,7 @@
    protected Map<String, Object> loadAttachments(File attachmentsStore, ClassLoader loader)
       throws Exception
    {
+      log.debug("loadAttachments, attachmentsStore="+attachmentsStore);
       Thread.currentThread().setContextClassLoader(loader);
       FileInputStream fis = new FileInputStream(attachmentsStore);
       ObjectInputStream ois = new TCLObjectInputStream(fis, loader);
@@ -74,6 +75,15 @@
          Map<String, Object> map, ClassLoader loader)
       throws Exception
    {
+      log.debug("saveAttachments, attachmentsStore="+attachmentsStore);
+      if( log.isTraceEnabled() )
+      {
+         log.trace("Attachments.size: "+map.size());
+         for(String key : map.keySet())
+         {
+            log.trace(key+", "+map.get(key));
+         }
+      }
       FileOutputStream fos = new FileOutputStream(attachmentsStore);
       ObjectOutputStream oos = new ObjectOutputStream(fos);
       oos.writeObject(map);

Modified: trunk/system/src/main/org/jboss/system/server/profileservice/repository/SerializableDeploymentRepository.java
===================================================================
--- trunk/system/src/main/org/jboss/system/server/profileservice/repository/SerializableDeploymentRepository.java	2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/system/server/profileservice/repository/SerializableDeploymentRepository.java	2007-02-27 18:14:12 UTC (rev 60952)
@@ -581,13 +581,13 @@
       ClassLoader prevTCL = Thread.currentThread().getContextClassLoader();
       try
       {
-         Map<String, Object> map = null; //serializer.loadAttachments(ctx, prevTCL);
+         Map<String, Object> map = null;
          if( map != null )
          {
             for(String key : map.keySet())
             {
                Object value = map.get(key);
-               ctx.getTransientAttachments().addAttachment(key, value);
+               ctx.getPredeterminedManagedObjects().addAttachment(key, value);
             }
          }
       }




More information about the jboss-cvs-commits mailing list