[jboss-cvs] JBossAS SVN: r70372 - projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 4 15:49:43 EST 2008


Author: kabir.khan at jboss.com
Date: 2008-03-04 15:49:43 -0500 (Tue, 04 Mar 2008)
New Revision: 70372

Modified:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
Log:
Fix so it works better

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java	2008-03-04 20:30:08 UTC (rev 70371)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java	2008-03-04 20:49:43 UTC (rev 70372)
@@ -22,7 +22,9 @@
 package org.jboss.beans.metadata.spi.factory;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -38,9 +40,11 @@
 import org.jboss.beans.metadata.plugins.AbstractConstructorMetaData;
 import org.jboss.beans.metadata.plugins.AbstractDemandMetaData;
 import org.jboss.beans.metadata.plugins.AbstractDependencyMetaData;
+import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
 import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
 import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
 import org.jboss.beans.metadata.plugins.AbstractMapMetaData;
+import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
 import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
 import org.jboss.beans.metadata.plugins.AbstractSupplyMetaData;
 import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
@@ -57,9 +61,16 @@
 import org.jboss.beans.metadata.spi.DependencyMetaData;
 import org.jboss.beans.metadata.spi.InstallMetaData;
 import org.jboss.beans.metadata.spi.LifecycleMetaData;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.beans.metadata.spi.ParameterizedMetaData;
 import org.jboss.beans.metadata.spi.PropertyMetaData;
 import org.jboss.beans.metadata.spi.SupplyMetaData;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.beans.metadata.spi.builder.ParameterMetaDataBuilder;
 import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.kernel.plugins.bootstrap.basic.KernelConstants;
+import org.jboss.kernel.spi.config.KernelConfigurator;
 import org.jboss.util.JBossObject;
 
 /**
@@ -484,34 +495,109 @@
 
    public List<BeanMetaData> getBeans()
    {
-      AbstractBeanMetaData gbf = new AbstractBeanMetaData();
-      gbf.setName(name);
-      gbf.setAliases(aliases);
-      gbf.setBean(GenericBeanFactory.class.getName());
-      gbf.setMode(mode);
-      Set<PropertyMetaData> properties = new HashSet<PropertyMetaData>();
-      gbf.setProperties(properties);
-      if (this.properties != null)
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(name, GenericBeanFactory.class.getName());
+      builder.setAliases(aliases);
+      builder.setMode(mode);
+      ValueMetaData injectKernelConfigurator = builder.createInject(KernelConstants.KERNEL_CONFIGURATOR_NAME);
+      builder.addConstructorParameter(KernelConfigurator.class.getName(), injectKernelConfigurator);
+      builder.addPropertyMetaData("bean", bean);
+      builder.addPropertyMetaData("constructor", constructor);
+      builder.addPropertyMetaData("start", start);
+      builder.addPropertyMetaData("create", create);
+      if (demands != null && demands.size() > 0)
       {
-         properties.addAll(this.properties);
+         for (DemandMetaData demand : demands)
+         {
+            builder.addDemand(demand.getDemand());
+         }
       }
-      properties.add(createProperty("bean", bean));
-      properties.add(createProperty("classLoader", classLoader));
-      properties.add(createProperty("constructor", constructor));
-      properties.add(createMapProperty("properties", properties));
-      properties.add(createProperty("start", start));
-      properties.add(createProperty("create", create));
-      gbf.setDemands(demands);
-      gbf.setDepends(depends);
-      gbf.setSupplies(supplies);
-      gbf.setInstalls(installs);
-      gbf.setUninstalls(uninstalls);
-      gbf.setInstallCallbacks(installCallbacks);
-      gbf.setUninstallCallbacks(uninstallCallbacks);
-      return Collections.singletonList((BeanMetaData) gbf);
+      if (depends != null && depends.size() > 0)
+      {
+         for (DependencyMetaData dependency : depends)
+         {
+            builder.addDependency(dependency.getDependency());
+         }
+      }
+      if (supplies != null && supplies.size() > 0)
+      {
+         for (SupplyMetaData supply : supplies)
+         {
+            builder.addSupply(supply.getSupply());
+         }
+      }
+      if (installs != null && installs.size() > 0)
+      {
+         for (InstallMetaData install : installs)
+         {
+            ParameterMetaDataBuilder paramBuilder = builder.addInstallWithParameters(install.getMethodName(), install.getBean(), install.getState(), install.getDependentState());
+            setParameters(paramBuilder, install);
+         }
+      }
+      if (uninstalls != null && uninstalls.size() > 0)
+      {
+         for (InstallMetaData uninstall : uninstalls)
+         {
+            ParameterMetaDataBuilder paramBuilder = builder.addUninstallWithParameters(uninstall.getMethodName(), uninstall.getBean(), uninstall.getState(), uninstall.getDependentState());
+            setParameters(paramBuilder, uninstall);
+         }
+      }
+      if (properties != null && properties.size() > 0)
+      {
+         HashMap<String, ValueMetaData> propertyMap = new HashMap<String, ValueMetaData>(); 
+         for (PropertyMetaData property : properties)
+         {
+            propertyMap.put(property.getName(), property.getValue());
+         }
+      }
+      //TODO: installCallbacks and uninstallCallbacks
+      
+      return Collections.singletonList(builder.getBeanMetaData());
    }
+   
+//   public List<BeanMetaData> newGetBeans()
+//   {
+//      AbstractBeanMetaData gbf = new AbstractBeanMetaData();
+//      gbf.setName(name);
+//      gbf.setAliases(aliases);
+//      gbf.setBean(GenericBeanFactory.class.getName());
+//      gbf.setMode(mode);
+//      Set<PropertyMetaData> properties = new HashSet<PropertyMetaData>();
+//      gbf.setProperties(properties);
+//      if (this.properties != null)
+//      {
+//         properties.addAll(this.properties);
+//      }
+//      properties.add(createProperty("bean", bean));
+//      properties.add(createProperty("classLoader", classLoader));
+//      properties.add(createProperty("constructor", constructor));
+//      properties.add(createMapProperty("properties", properties));
+//      properties.add(createProperty("start", start));
+//      properties.add(createProperty("create", create));
+//      gbf.setDemands(demands);
+//      gbf.setDepends(depends);
+//      gbf.setSupplies(supplies);
+//      gbf.setInstalls(installs);
+//      gbf.setUninstalls(uninstalls);
+//      gbf.setInstallCallbacks(installCallbacks);
+//      gbf.setUninstallCallbacks(uninstallCallbacks);
+//      return Collections.singletonList((BeanMetaData) gbf);
+//   }
 
    /**
+    * Add the parameters
+    */
+   private void setParameters(ParameterMetaDataBuilder builder, ParameterizedMetaData metadata)
+   {
+      List<ParameterMetaData> params = metadata.getParameters();
+      if (params != null && params.size() > 0)
+      {
+         for (ParameterMetaData param : params)
+         {
+            builder.addParameterMetaData(param.getType(), param.getValue());
+         }
+      }
+   }
+   /**
     * Create property.
     *
     * @param name the property name
@@ -540,4 +626,4 @@
       }
       return new AbstractPropertyMetaData(name, map);
    }
-}
\ No newline at end of file
+}




More information about the jboss-cvs-commits mailing list