[jboss-cvs] JBossAS SVN: r89618 - in projects/ejb3/trunk/metrics-deployer: src/main/java/org/jboss/ejb3/metrics/deployer and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jun 1 14:13:38 EDT 2009


Author: ALRubinger
Date: 2009-06-01 14:13:38 -0400 (Mon, 01 Jun 2009)
New Revision: 89618

Modified:
   projects/ejb3/trunk/metrics-deployer/pom.xml
   projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/Ejb3MetricsDeployer.java
Log:
[EJBTHREE-1839] Committed Emanuel's patch to attach one KernelDeployment.  When coupled w/ jboss-man:2.1.1-20090531.135556-1 all works as expected.  Would still prefer to simply add any attachments have have jboss-deployers pick them up (saving EJB3 from the jboss-man API)

Modified: projects/ejb3/trunk/metrics-deployer/pom.xml
===================================================================
--- projects/ejb3/trunk/metrics-deployer/pom.xml	2009-06-01 17:49:55 UTC (rev 89617)
+++ projects/ejb3/trunk/metrics-deployer/pom.xml	2009-06-01 18:13:38 UTC (rev 89618)
@@ -27,7 +27,7 @@
   <properties>
   
     <!-- Versioning -->
-    <version.org.jboss.deployers.jboss_deployers_spi>2.0.0.CR2</version.org.jboss.deployers.jboss_deployers_spi>
+    <version.org.jboss.deployers.jboss_deployers_spi>2.0.7.GA</version.org.jboss.deployers.jboss_deployers_spi>
     <version.org.jboss.ejb3_jboss.ejb3.core>1.1.6</version.org.jboss.ejb3_jboss.ejb3.core>
     <version.org.jboss.ejb3_jboss.ejb3.metrics.spi>1.0.0-alpha-1</version.org.jboss.ejb3_jboss.ejb3.metrics.spi>
     <version.org.jboss.man_jboss.managed>2.1.0.SP1</version.org.jboss.man_jboss.managed>

Modified: projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/Ejb3MetricsDeployer.java
===================================================================
--- projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/Ejb3MetricsDeployer.java	2009-06-01 17:49:55 UTC (rev 89617)
+++ projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/Ejb3MetricsDeployer.java	2009-06-01 18:13:38 UTC (rev 89618)
@@ -21,14 +21,20 @@
  */
 package org.jboss.ejb3.metrics.deployer;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractConstructorMetaData;
 import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
+import org.jboss.deployers.spi.deployer.managed.ManagedObjectCreator;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.ejb3.Container;
 import org.jboss.ejb3.Ejb3Deployment;
@@ -37,7 +43,12 @@
 import org.jboss.ejb3.stateful.StatefulContainer;
 import org.jboss.ejb3.stateless.StatelessContainer;
 import org.jboss.ejb3.statistics.InvocationStatistics;
+import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.logging.Logger;
+import org.jboss.managed.api.ManagedObject;
+import org.jboss.managed.api.factory.ManagedObjectFactory;
+import org.jboss.metadata.spi.MetaData;
 
 /**
  * Ejb3MetricsDeployer
@@ -51,6 +62,7 @@
  * @version $Revision: $
  */
 public class Ejb3MetricsDeployer extends AbstractSimpleRealDeployer<Ejb3Deployment>
+   implements ManagedObjectCreator
 {
 
    // ------------------------------------------------------------------------------||
@@ -85,6 +97,11 @@
     */
    private static final String BEAN_NAME_METRICS_SUFFIX_INVOCATION = BEAN_NAME_METRICS_SUFFIX + "-invocation";
 
+   /** 
+    * The managed object factory.
+    */
+   private ManagedObjectFactory managedObjectFactory = ManagedObjectFactory.getInstance();
+   
    // ------------------------------------------------------------------------------||
    // Constructor ------------------------------------------------------------------||
    // ------------------------------------------------------------------------------||
@@ -96,7 +113,7 @@
    {
       // Invoke super
       super(Ejb3Deployment.class);
-
+      
       // Output is a flag upon which other deployers may rely
       this.addOutput(NAME_OUTPUT);
    }
@@ -134,6 +151,10 @@
       final Collection<Container> containers = deployment.getEjbContainers().values();
       if (containers != null)
       {
+         final AbstractKernelDeployment kernelDeployment = new AbstractKernelDeployment();
+         List<BeanMetaDataFactory> beanFactories = new ArrayList<BeanMetaDataFactory>();
+         kernelDeployment.setBeanFactories(beanFactories);
+         
          // For each EJB Container
          for (final Container container : containers)
          {
@@ -152,9 +173,9 @@
                }
                final ManagedInvocationStatisticsWrapper wrapper = new ManagedInvocationStatisticsWrapper(stats);
 
-               // Attach to the DU
+               // Add to beanFactories
                final String invocationBeanName = sessionContainer.getName() + BEAN_NAME_METRICS_SUFFIX_INVOCATION;
-               this.attach(wrapper, invocationBeanName, du);
+               this.attach(wrapper, invocationBeanName, beanFactories);
                log.debug("Attached invocation stats for: " + invocationBeanName);
 
                // SLSB
@@ -166,9 +187,9 @@
                   // Make new metrics
                   final SessionInstanceMetrics metrics = new BasicStatelessSessionInstanceMetrics(slsb);
 
-                  // Attach to the DU
+                  // Add to beanFactories
                   final String beanName = slsb.getName() + BEAN_NAME_METRICS_SUFFIX_INSTANCE;
-                  this.attach(metrics, beanName, du);
+                  this.attach(metrics, beanName, beanFactories);
                   log.debug("Attached metrics stats for: " + beanName);
                }
 
@@ -181,33 +202,56 @@
                   // Make new metrics
                   final SessionInstanceMetrics metrics = new BasicStatefulSessionInstanceMetrics(sfsb);
 
-                  // Attach to the DU
+                  // Add to beanFactories
                   final String beanName = sfsb.getName() + BEAN_NAME_METRICS_SUFFIX_INSTANCE;
-                  this.attach(metrics, beanName, du);
+                  this.attach(metrics, beanName, beanFactories);
                   log.debug("Attached metrics stats for: " + beanName);
                }
 
             }
          }
+         // 
+         du.addAttachment(NAME_OUTPUT, kernelDeployment, KernelDeployment.class);
       }
 
-      // Set a flag showing we were here as the output
-      du.addAttachment(NAME_OUTPUT, true, Boolean.class);
    }
 
+   /**
+    * Build the managed object for the ejb3 metrics.
+    */
+   public void build(DeploymentUnit unit, Set<String> attachmentNames,
+         Map<String, ManagedObject> managedObjects) throws DeploymentException
+   {
+      KernelDeployment deployment = unit.getAttachment(NAME_OUTPUT, KernelDeployment.class);
+      if(deployment != null)
+      {
+         for(BeanMetaData bmd : deployment.getBeans())
+         {
+            MetaData metaData = null;
+            DeploymentUnit compUnit = unit.getComponent(bmd.getName());
+            if(compUnit != null)
+               metaData = compUnit.getMetaData();
+            
+            ManagedObject mo = managedObjectFactory.initManagedObject(bmd, null, metaData, bmd.getName(), null);
+            if(mo != null)
+               managedObjects.put(bmd.getName(), mo);
+         }
+      }
+   }
+   
    // ------------------------------------------------------------------------------||
    // Internal Helper Methods -----------------------------------------------------||
    // ------------------------------------------------------------------------------||
 
    /**
-    * Attaches the specified object to the specified DeploymentUnit
+    * Attaches the specified object to the specified beanFactories
     * 
     * @param attachment
     * @param beanName
-    * @param du
+    * @param beanFactories
     * @throws IllegalArgumentException If any argument is not specified
     */
-   private void attach(final Object attachment, final String beanName, final DeploymentUnit du)
+   private void attach(final Object attachment, final String beanName, final List<BeanMetaDataFactory> beanFactories)
          throws IllegalArgumentException
    {
       // Precondition Checks
@@ -215,55 +259,15 @@
       {
          throw new IllegalArgumentException("metrics is null");
       }
-      if (du == null)
-      {
-         throw new IllegalArgumentException("Deployment Unit is null");
-      }
 
-      // Make a new metrics definition
-      final BeanMetaDataBuilder bmdb = BeanMetaDataBuilder.createBuilder(beanName, attachment.getClass().getName());
-      bmdb.setConstructorValue(new AlreadyInstantiated(attachment));
-      final BeanMetaData bean = bmdb.getBeanMetaData();
-
-      // Add the attachment
-      du.addAttachment(beanName, bean, BeanMetaData.class);
-      if (log.isTraceEnabled())
-      {
-         log.trace("Added metrics attachment to " + du + ": " + bean);
-      }
+      // Create the BeanMetaData manually, as
+      // BeanMetaDataBuilder.setConstructor is doing some nonsense
+      AbstractBeanMetaData bmd = new AbstractBeanMetaData(beanName, attachment.getClass().getName()); 
+      AbstractConstructorMetaData cmd = new AbstractConstructorMetaData();
+      cmd.setValue(new AbstractValueMetaData(attachment));    
+      bmd.setConstructor(cmd);
+      // Add to beanFactories
+      beanFactories.add(bmd);
    }
 
-   // ------------------------------------------------------------------------------||
-   // Inner Classes ----------------------------------------------------------------||
-   // ------------------------------------------------------------------------------||
-
-   /**
-    * Constructor metadata which uses an underlying bean already 
-    * instanciated.
-    * 
-    * @author Scott Stark
-    */
-   private static class AlreadyInstantiated extends AbstractConstructorMetaData
-   {
-      private static final long serialVersionUID = 1L;
-
-      private Object bean;
-
-      public class Factory
-      {
-         public Object create()
-         {
-            return bean;
-         }
-      }
-
-      public AlreadyInstantiated(Object bean)
-      {
-         this.bean = bean;
-         this.setFactory(new AbstractValueMetaData(new Factory()));
-         this.setFactoryClass(Factory.class.getName());
-         this.setFactoryMethod("create");
-      }
-   }
-
 }




More information about the jboss-cvs-commits mailing list