[jboss-cvs] JBossAS SVN: r80683 - trunk/system/src/main/org/jboss/deployers/plugins/managed.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 7 14:50:23 EST 2008


Author: scott.stark at jboss.org
Date: 2008-11-07 14:50:23 -0500 (Fri, 07 Nov 2008)
New Revision: 80683

Added:
   trunk/system/src/main/org/jboss/deployers/plugins/managed/KernelDeploymentManagedObjectCreator.java
Log:
JBAS-5286, ManagedObjectCreator for KernelDeployments

Added: trunk/system/src/main/org/jboss/deployers/plugins/managed/KernelDeploymentManagedObjectCreator.java
===================================================================
--- trunk/system/src/main/org/jboss/deployers/plugins/managed/KernelDeploymentManagedObjectCreator.java	                        (rev 0)
+++ trunk/system/src/main/org/jboss/deployers/plugins/managed/KernelDeploymentManagedObjectCreator.java	2008-11-07 19:50:23 UTC (rev 80683)
@@ -0,0 +1,133 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, 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.deployers.plugins.managed;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.managed.ManagedObjectCreator;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.logging.Logger;
+import org.jboss.managed.api.Fields;
+import org.jboss.managed.api.ManagedObject;
+import org.jboss.managed.api.ManagedProperty;
+import org.jboss.managed.api.MutableManagedObject;
+import org.jboss.managed.api.factory.ManagedObjectFactory;
+import org.jboss.managed.plugins.factory.AbstractManagedObjectFactory;
+import org.jboss.metadata.spi.MetaData;
+import org.jboss.metatype.api.types.CollectionMetaType;
+import org.jboss.metatype.api.values.CollectionValueSupport;
+import org.jboss.metatype.api.values.GenericValue;
+import org.jboss.metatype.api.values.GenericValueSupport;
+
+/**
+ * ManagedObjectCreator for KernelDeployment
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
+ */
+public class KernelDeploymentManagedObjectCreator
+   implements ManagedObjectCreator
+{
+   private static Logger log = Logger.getLogger(DefaultManagedObjectCreator.class);
+   private ManagedObjectFactory mof;
+
+   
+   public ManagedObjectFactory getMof()
+   {
+      return mof;
+   }
+
+
+   public void setMof(ManagedObjectFactory mof)
+   {
+      this.mof = mof;
+   }
+
+
+   /**
+    * Build managed object.
+    *
+    * @param unit the deployment unit
+    * @param managedObjects map of managed objects
+    * @throws DeploymentException for any deployment exception
+    */
+   public void build(DeploymentUnit unit, Set<String> attachments,
+      Map<String, ManagedObject> managedObjects)
+      throws DeploymentException
+   {
+      KernelDeployment deployment = unit.getAttachment(KernelDeployment.class);
+      if(deployment == null)
+         return;
+
+      List<BeanMetaDataFactory> beanFactories = deployment.getBeanFactories();
+
+      // Get the KernelDeployment ManagedObject
+      ManagedObject deploymentMO = managedObjects.get(KernelDeployment.class.getName());
+      if(deploymentMO == null)
+      {
+         // Should not happen?
+         deploymentMO = mof.createManagedObject(deployment.getClass());
+         managedObjects.put(KernelDeployment.class.getName(), deploymentMO);
+      }
+      // Update the beanFactories value to 
+      ManagedProperty beanFactoriesMP = deploymentMO.getProperty("beanFactories");
+      List<GenericValue> tmp = new ArrayList<GenericValue>();
+      CollectionMetaType moType = new CollectionMetaType(BeanMetaDataFactory.class.getName(), AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE);
+      if(beanFactories != null)
+      {
+         for(BeanMetaDataFactory bmdf : beanFactories)
+         {
+            if((bmdf instanceof BeanMetaData) == false)
+               continue;
+            BeanMetaData bmd = (BeanMetaData) bmdf;
+            DeploymentUnit compUnit = unit.getComponent(bmd.getName());
+            MetaData metaData = compUnit.getMetaData();
+            GenericValue gv = getManagedObjectValue(bmd, metaData, deploymentMO);
+            if(gv != null)
+               tmp.add(gv);
+         }
+      }
+      GenericValue[] mos = new GenericValue[tmp.size()];
+      tmp.toArray(mos);
+      CollectionValueSupport values = new CollectionValueSupport(moType, mos);
+      // This bypasses the write through back to the metadata
+      beanFactoriesMP.getFields().setField(Fields.VALUE, values);
+   }
+   protected GenericValue getManagedObjectValue(BeanMetaData bmd, MetaData metaData,
+         ManagedObject parentMO)
+   {
+      String name = bmd.getName();
+      ManagedObject mo = mof.initManagedObject(bmd, null, metaData, name, null);
+      if(parentMO != null && mo instanceof MutableManagedObject)
+      {
+         MutableManagedObject mmo = (MutableManagedObject) mo;
+         mmo.setParent(parentMO);
+      }
+      return new GenericValueSupport(AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE, mo);
+   }
+}




More information about the jboss-cvs-commits mailing list