[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