[jboss-cvs] JBossAS SVN: r70274 - in projects/microcontainer/trunk/aop-mc-int/src: main/org/jboss/aop/microcontainer/beans/xml and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 29 11:09:05 EST 2008


Author: kabir.khan at jboss.com
Date: 2008-02-29 11:09:04 -0500 (Fri, 29 Feb 2008)
New Revision: 70274

Added:
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectManagerUtil.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowEntry.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/MixinData.java
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbAopTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbDeploymentTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbAopTestCase.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbDeploymentTestCase.java
Removed:
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/BeanMetaDataUtil.java
Modified:
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/ArrayBindBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectManagerAwareBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/BindBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowCalled.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowNotCalled.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowStackBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/DomainBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/IntroductionBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/LifecycleBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/PrecedenceBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/StackBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/TypeDefBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/xml/AOPBeansSchemaInitializer.java
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/AspectWithDependencyJaxbDeploymentTestCaseNotAutomatic1.xml
Log:
[JBAOP-526] Use BeanMetaDataBuilder instead of BeanUtil


Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/ArrayBindBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/ArrayBindBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/ArrayBindBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -25,10 +25,10 @@
 import java.util.List;
 
 import org.jboss.aop.microcontainer.beans.ArrayBinding;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractListMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.spi.ControllerState;
 import org.jboss.util.id.GUID;
 
 /**
@@ -68,50 +68,49 @@
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
 
       //Create AspectBinding
-      AbstractBeanMetaData binding = new AbstractBeanMetaData();
       if (name == null)
       {
          name = GUID.asString();
       }
-      binding.setName(name);
-      BeanMetaDataUtil.setSimpleProperty(binding, "name", name);
-      binding.setBean(ArrayBinding.class.getName());
-      BeanMetaDataUtil.setSimpleProperty(binding, "type", type);
-      util.setAspectManagerProperty(binding, "manager");
-      result.add(binding);
+      BeanMetaDataBuilder bindingBuilder = BeanMetaDataBuilder.createBuilder(name, ArrayBinding.class.getName());
+      bindingBuilder.addPropertyMetaData("name", name);
+      bindingBuilder.addPropertyMetaData("type", type);
+      util.setAspectManagerProperty(bindingBuilder, "manager");
+      result.add(bindingBuilder.getBeanMetaData());
       
+      
       if (interceptors.size() > 0)
       {
-         AbstractListMetaData almd = new AbstractListMetaData();
+         List<ValueMetaData> bindingInterceptors = bindingBuilder.createList();
          int i = 0;
          for (BaseInterceptorData interceptor : interceptors)
          {
-            AbstractBeanMetaData bmd = new AbstractBeanMetaData(interceptor.getBeanClassName());
             String intName = name + "$" + i++; 
-            bmd.setName(intName);
-            util.setAspectManagerProperty(bmd, "manager");
-            BeanMetaDataUtil.DependencyBuilder builder = new BeanMetaDataUtil.DependencyBuilder(bmd, "binding", name).setState("Instantiated");
-            BeanMetaDataUtil.setDependencyProperty(builder);
+            BeanMetaDataBuilder interceptorBuilder = BeanMetaDataBuilder.createBuilder(intName, interceptor.getBeanClassName());
+            util.setAspectManagerProperty(interceptorBuilder, "manager");
+            ValueMetaData injectBinding = interceptorBuilder.createInject(name, null, null, ControllerState.INSTANTIATED);
+            interceptorBuilder.addPropertyMetaData("binding", injectBinding);
             
             if (interceptor instanceof AdviceOrInterceptorData)
             {
-               BeanMetaDataUtil.DependencyBuilder db = new BeanMetaDataUtil.DependencyBuilder(bmd, "aspect", interceptor.getRefName()); 
-               BeanMetaDataUtil.setDependencyProperty(db);
+               ValueMetaData injectAspect = interceptorBuilder.createInject(interceptor.getRefName());
+               interceptorBuilder.addPropertyMetaData("aspect", injectAspect);
                if (((AdviceOrInterceptorData)interceptor).getAdviceMethod() != null)
                {
-                  BeanMetaDataUtil.setSimpleProperty(bmd, "aspectMethod", ((AdviceOrInterceptorData)interceptor).getAdviceMethod());
+                  interceptorBuilder.addPropertyMetaData("aspectMethod", ((AdviceOrInterceptorData)interceptor).getAdviceMethod());
                }
-               BeanMetaDataUtil.setSimpleProperty(bmd, "type", ((AdviceOrInterceptorData)interceptor).getType());
+               interceptorBuilder.addPropertyMetaData("type", ((AdviceOrInterceptorData)interceptor).getType());
             }
             else
             {
-               BeanMetaDataUtil.DependencyBuilder db = new BeanMetaDataUtil.DependencyBuilder(bmd, "stack", interceptor.getRefName());
-               BeanMetaDataUtil.setDependencyProperty(db);
+               ValueMetaData injectStack = interceptorBuilder.createInject(interceptor.getRefName());
+               interceptorBuilder.addPropertyMetaData("stack", injectStack);
             }
-            result.add(bmd);
-            almd.add(new AbstractInjectionValueMetaData(intName));
-            BeanMetaDataUtil.setSimpleProperty(binding, "advices", almd);
+            result.add(interceptorBuilder.getBeanMetaData());
+            ValueMetaData injectInterceptor = bindingBuilder.createInject(intName);
+            bindingInterceptors.add(injectInterceptor);
          }         
+         bindingBuilder.addPropertyMetaData("advices", bindingInterceptors);
       }
       
       return result;

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -31,17 +31,12 @@
 import javax.xml.bind.annotation.XmlType;
 
 import org.jboss.aop.microcontainer.beans.Aspect;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
-import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
-import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
-import org.jboss.beans.metadata.plugins.ThisValueMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
-import org.jboss.beans.metadata.spi.InstallMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
-import org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.xb.annotations.JBossXmlSchema;
 
 /**
@@ -125,72 +120,52 @@
       result.add(this);
       
       //Add the Aspect
-      AbstractBeanMetaData aspect = new AbstractBeanMetaData();
-      aspect.setName(aspectName);
-      aspect.setBean(Aspect.class.getName());
-      BeanMetaDataUtil.setSimpleProperty(aspect, "scope", scope);
-      util.setAspectManagerProperty(aspect, "manager");
+      BeanMetaDataBuilder aspectBuilder = BeanMetaDataBuilder.createBuilder(aspectName, Aspect.class.getName());
+      aspectBuilder.addPropertyMetaData("scope", scope);
+      util.setAspectManagerProperty(aspectBuilder, "manager");
+      
       if (factory != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(aspect, "factory", Boolean.TRUE);
+         aspectBuilder.addPropertyMetaData("factory", Boolean.TRUE);
       }
-      result.add(aspect);
+      result.add(aspectBuilder.getBeanMetaData());
       
       if (hasInjectedBeans())
       {
-         configureWithDependencies(aspect);
+         configureWithDependencies(aspectBuilder);
       }
       else
       {
-         configureNoDependencies(aspect);
+         configureNoDependencies(aspectBuilder);
       }
 
       return result;
    }
 
-   private void configureWithDependencies(AbstractBeanMetaData aspect)
+   private void configureWithDependencies(BeanMetaDataBuilder aspectBuilder)
    {
-      aspect.addProperty(new AbstractPropertyMetaData("adviceBean", name));
+      aspectBuilder.addPropertyMetaData("adviceBean", name);
       
-      AbstractInstallMetaData installAspect = new AbstractInstallMetaData();
-      installAspect.setBean(aspect.getName());
-      installAspect.setMethodName("install");
-      ArrayList<ParameterMetaData> parameters = new ArrayList<ParameterMetaData>();
-      parameters.add(new AbstractParameterMetaData(new ThisValueMetaData()));
-      installAspect.setParameters(parameters);
-      
-      List<InstallMetaData> installs = getInstalls();
-      if (installs == null)
-         installs = new ArrayList<InstallMetaData>();
-      installs.add(installAspect);
-      setInstalls(installs);
-      
-      AbstractInstallMetaData uninstallAspect = new AbstractInstallMetaData();
-      uninstallAspect.setBean(aspect.getName());
-      uninstallAspect.setMethodName("uninstall");
-
-      List<InstallMetaData> uninstalls = getUninstalls();
-      if (uninstalls == null)
-         uninstalls = new ArrayList<InstallMetaData>();
-      uninstalls.add(uninstallAspect);
-      setUninstalls(uninstalls);
-      
+      BeanMetaDataBuilder thisBuilder = BeanMetaDataBuilder.createBuilder(this);
+      thisBuilder.addInstallWithThis("install", aspectBuilder.getBeanMetaData().getName());
+      thisBuilder.addUninstall("uninstall", aspectBuilder.getBeanMetaData().getName());
    }
    
-   private void configureNoDependencies(AbstractBeanMetaData aspect/*, AbstractBeanMetaData aspectBinding*/)
+   private void configureNoDependencies(BeanMetaDataBuilder aspectBuilder)
    {
-      aspect.addProperty(new AbstractPropertyMetaData("advice", new AbstractDependencyValueMetaData(name)));
+      ValueMetaData inject = aspectBuilder.createInject(name);
+      aspectBuilder.addPropertyMetaData("advice", inject);
    }
    
    
    private boolean hasInjectedBeans()
    {
-      ArrayList<AbstractDependencyValueMetaData> dependencies = new ArrayList<AbstractDependencyValueMetaData>();
+      ArrayList<ValueMetaData> dependencies = new ArrayList<ValueMetaData>();
       getDependencies(dependencies, this);
       
-      for (AbstractDependencyValueMetaData dep : dependencies)
+      for (ValueMetaData dep : dependencies)
       {
-         if(!((String)dep.getValue()).startsWith("jboss.kernel:service="))
+         if(!((String)dep.getUnderlyingValue()).startsWith("jboss.kernel:service="))
          {
             return true;
          }
@@ -198,7 +173,7 @@
       return false;
    }
    
-   private void getDependencies(ArrayList<AbstractDependencyValueMetaData> dependencies, MetaDataVisitorNode node)
+   private void getDependencies(ArrayList<ValueMetaData> dependencies, MetaDataVisitorNode node)
    {
       Iterator<? extends MetaDataVisitorNode> children = node.getChildren();
       

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectManagerAwareBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectManagerAwareBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectManagerAwareBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -33,7 +33,7 @@
 {
    private static final long serialVersionUID = 1L;
 
-   protected BeanMetaDataUtil util = new BeanMetaDataUtil();
+   protected AspectManagerUtil util = new AspectManagerUtil();
 
    @XmlAttribute(name="manager-bean")
    public void setManagerBean(String managerBean)

Added: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectManagerUtil.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectManagerUtil.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/AspectManagerUtil.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -0,0 +1,74 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.aop.microcontainer.beans.beanmetadatafactory;
+
+
+import java.io.Serializable;
+
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class AspectManagerUtil implements Serializable
+{
+   private static final long serialVersionUID = 1L;
+
+   /** Unless specified use the bean with this name as the aspect manager */
+   protected final static String DEFAULT_ASPECT_MANAGER = "AspectManager";
+   
+   /** The bean name of the aspect manager to use */
+   protected String managerBean = DEFAULT_ASPECT_MANAGER;
+
+   /** The property of the aspect manager bean, if any, containing the aspect manager */
+   protected String managerProperty;
+
+
+   public String getManagerBean()
+   {
+      return managerBean;
+   }
+
+   public void setManagerBean(String managerBean)
+   {
+      this.managerBean = managerBean;
+   }
+
+   public String getManagerProperty()
+   {
+      return managerProperty;
+   }
+
+   public void setManagerProperty(String aspectManagerProperty)
+   {
+      this.managerProperty = aspectManagerProperty;
+   }
+
+   public void setAspectManagerProperty(BeanMetaDataBuilder builder, String propertyName)
+   {
+      ValueMetaData value = builder.createInject(managerBean, managerProperty);
+      builder.addPropertyMetaData(propertyName, value);
+   }
+}

Deleted: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/BeanMetaDataUtil.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/BeanMetaDataUtil.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/BeanMetaDataUtil.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -1,165 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.aop.microcontainer.beans.beanmetadatafactory;
-
-
-import java.io.Serializable;
-
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
-import org.jboss.beans.metadata.spi.ValueMetaData;
-import org.jboss.dependency.spi.ControllerState;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class BeanMetaDataUtil implements Serializable
-{
-   private static final long serialVersionUID = 1L;
-
-   /** Unless specified use the bean with this name as the aspect manager */
-   protected final static String DEFAULT_ASPECT_MANAGER = "AspectManager";
-   
-   /** The bean name of the aspect manager to use */
-   protected String managerBean = DEFAULT_ASPECT_MANAGER;
-
-   /** The property of the aspect manager bean, if any, containing the aspect manager */
-   protected String managerProperty;
-
-
-   public String getManagerBean()
-   {
-      return managerBean;
-   }
-
-   public void setManagerBean(String managerBean)
-   {
-      this.managerBean = managerBean;
-   }
-
-   public String getManagerProperty()
-   {
-      return managerProperty;
-   }
-
-   public void setManagerProperty(String aspectManagerProperty)
-   {
-      this.managerProperty = aspectManagerProperty;
-   }
-
-   public static void setSimpleProperty(AbstractBeanMetaData bean, String propertyName, Object value)
-   {
-      bean.addProperty(new AbstractPropertyMetaData(propertyName, value));
-   }
-
-   public static void setSimpleProperty(AbstractBeanMetaData bean, String propertyName, ValueMetaData value)
-   {
-      bean.addProperty(new AbstractPropertyMetaData(propertyName, value));
-   }
-   
-   public static void setDependencyProperty(DependencyBuilder builder)
-   {
-      AbstractDependencyValueMetaData advmd = new AbstractDependencyValueMetaData(builder.getDependencyBean(), builder.getDependencyProperty());
-      if (builder.getState() != null)
-      {
-         advmd.setDependentState(new ControllerState(builder.getState()));
-      }
-      AbstractBeanMetaData bean = builder.getBean();
-      AbstractPropertyMetaData existing = (AbstractPropertyMetaData)bean.getProperty(builder.getPropertyName());
-      if (existing != null)
-      {
-         existing.setValue(advmd);
-      }
-      else
-      {
-         bean.addProperty(new AbstractPropertyMetaData(builder.getPropertyName(), advmd));
-      }
-   }
-
-   public void setAspectManagerProperty(AbstractBeanMetaData bean, String propertyName)
-   {
-      DependencyBuilder builder = new DependencyBuilder(bean, propertyName, managerBean).setDependencyProperty(managerProperty);
-      setDependencyProperty(builder);
-   }
-
-   public static class DependencyBuilder
-   {
-      AbstractBeanMetaData bean;
-      String propertyName;
-      String dependencyBean;
-      String dependencyProperty;
-      String state;
-      
-      public DependencyBuilder(AbstractBeanMetaData bean, String propertyName, String dependencyBean)
-      {
-         if (bean == null)
-            throw new IllegalArgumentException("Null bean");
-         if (propertyName == null)
-            throw new IllegalArgumentException("Null property name");
-         if (dependencyBean == null)
-            throw new IllegalArgumentException("Null dependency bean");
-         this.bean = bean;
-         this.propertyName = propertyName;
-         this.dependencyBean = dependencyBean;
-      }
-      
-      DependencyBuilder setDependencyProperty(String dependencyProperty)
-      {
-         this.dependencyProperty = dependencyProperty;
-         return this;
-      }
-
-      DependencyBuilder setState(String state)
-      {
-         this.state = state;
-         return this;
-      }
-
-      public AbstractBeanMetaData getBean()
-      {
-         return bean;
-      }
-
-      public String getPropertyName()
-      {
-         return propertyName;
-      }
-
-      public String getDependencyBean()
-      {
-         return dependencyBean;
-      }
-
-      public String getDependencyProperty()
-      {
-         return dependencyProperty;
-      }
-
-      public String getState()
-      {
-         return state;
-      }
-   }
-}

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/BindBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/BindBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/BindBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -31,10 +31,10 @@
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.jboss.aop.microcontainer.beans.AspectBinding;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractListMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.spi.ControllerState;
 import org.jboss.util.id.GUID;
 import org.jboss.xb.annotations.JBossXmlSchema;
 
@@ -76,56 +76,52 @@
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
 
       //Create AspectBinding
-      AbstractBeanMetaData binding = new AbstractBeanMetaData();
       if (name == null)
       {
          name = GUID.asString();
       }
-      binding.setName(name);
-      BeanMetaDataUtil.setSimpleProperty(binding, "name", name);
-      binding.setBean(AspectBinding.class.getName());
-
-      BeanMetaDataUtil.setSimpleProperty(binding, "pointcut", pointcut);
-      
+      BeanMetaDataBuilder bindingBuilder = BeanMetaDataBuilder.createBuilder(name, AspectBinding.class.getName());
+      bindingBuilder.addPropertyMetaData("name", name);
       if (cflow != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(binding, "cflow", cflow);
+         bindingBuilder.addPropertyMetaData("cflow", cflow);
       }
-      util.setAspectManagerProperty(binding, "manager");
-      result.add(binding);
+      bindingBuilder.addPropertyMetaData("pointcut", pointcut);
+      util.setAspectManagerProperty(bindingBuilder, "manager");
+      result.add(bindingBuilder.getBeanMetaData());
       
       if (interceptors.size() > 0)
       {
-         AbstractListMetaData almd = new AbstractListMetaData();
+         List<ValueMetaData> bindingInterceptors = bindingBuilder.createList();
          int i = 0;
          for (BaseInterceptorData interceptor : interceptors)
          {
-            AbstractBeanMetaData bmd = new AbstractBeanMetaData(interceptor.getBeanClassName());
             String intName = name + "$" + i++; 
-            bmd.setName(intName);
-            util.setAspectManagerProperty(bmd, "manager");
-            BeanMetaDataUtil.DependencyBuilder builder = new BeanMetaDataUtil.DependencyBuilder(bmd, "binding", name).setState("Instantiated");
-            BeanMetaDataUtil.setDependencyProperty(builder);
+            BeanMetaDataBuilder interceptorBuilder = BeanMetaDataBuilder.createBuilder(intName, interceptor.getBeanClassName());
+            util.setAspectManagerProperty(interceptorBuilder, "manager");
+            ValueMetaData injectBinding = interceptorBuilder.createInject(name, null, null, ControllerState.INSTANTIATED);
+            interceptorBuilder.addPropertyMetaData("binding", injectBinding);
             
             if (interceptor instanceof AdviceOrInterceptorData)
             {
-               BeanMetaDataUtil.DependencyBuilder db = new BeanMetaDataUtil.DependencyBuilder(bmd, "aspect", interceptor.getRefName()); 
-               BeanMetaDataUtil.setDependencyProperty(db);
+               ValueMetaData injectAspect = interceptorBuilder.createInject(interceptor.getRefName());
+               interceptorBuilder.addPropertyMetaData("aspect", injectAspect);
                if (((AdviceOrInterceptorData)interceptor).getAdviceMethod() != null)
                {
-                  BeanMetaDataUtil.setSimpleProperty(bmd, "aspectMethod", ((AdviceOrInterceptorData)interceptor).getAdviceMethod());
+                  interceptorBuilder.addPropertyMetaData("aspectMethod", ((AdviceOrInterceptorData)interceptor).getAdviceMethod());
                }
-               BeanMetaDataUtil.setSimpleProperty(bmd, "type", ((AdviceOrInterceptorData)interceptor).getType());
+               interceptorBuilder.addPropertyMetaData("type", ((AdviceOrInterceptorData)interceptor).getType());
             }
             else
             {
-               BeanMetaDataUtil.DependencyBuilder db = new BeanMetaDataUtil.DependencyBuilder(bmd, "stack", interceptor.getRefName());
-               BeanMetaDataUtil.setDependencyProperty(db);
+               ValueMetaData injectStack = interceptorBuilder.createInject(interceptor.getRefName());
+               interceptorBuilder.addPropertyMetaData("stack", injectStack);
             }
-            result.add(bmd);
-            almd.add(new AbstractInjectionValueMetaData(intName));
+            result.add(interceptorBuilder.getBeanMetaData());
+            ValueMetaData injectInterceptor = bindingBuilder.createInject(intName);
+            bindingInterceptors.add(injectInterceptor);
          }         
-         BeanMetaDataUtil.setSimpleProperty(binding, "advices", almd);
+         bindingBuilder.addPropertyMetaData("advices", bindingInterceptors);
       }
       
       return result;

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowCalled.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowCalled.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowCalled.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -21,28 +21,13 @@
 */ 
 package org.jboss.aop.microcontainer.beans.beanmetadatafactory;
 
-import javax.xml.bind.annotation.XmlAttribute;
-
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class CFlowCalled
+public class CFlowCalled extends CFlowEntry
 {
-   String expr;
-
-   public String getExpr()
-   {
-      return expr;
-   }
-
-   @XmlAttribute
-   public void setExpr(String expr)
-   {
-      this.expr = expr;
-   }
-   
    public boolean getCalled()
    {
       return true;

Added: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowEntry.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowEntry.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowEntry.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -0,0 +1,56 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.aop.microcontainer.beans.beanmetadatafactory;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class CFlowEntry
+{
+   private String expr;
+   private boolean called;
+
+   public String getExpr()
+   {
+      return expr;
+   }
+
+   @XmlAttribute
+   public void setExpr(String expr)
+   {
+      this.expr = expr;
+   }
+   
+   public boolean getCalled()
+   {
+      return called;
+   }
+   
+   public void setCalled(boolean called)
+   {
+      this.called = called;
+   }
+}

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowNotCalled.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowNotCalled.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowNotCalled.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -32,5 +32,4 @@
    {
       return false;
    }
-
 }

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowStackBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowStackBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/CFlowStackBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -30,11 +30,11 @@
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.jboss.aop.microcontainer.beans.CFlowStack;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractListMetaData;
+import org.jboss.aop.microcontainer.beans.CFlowStackEntry;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.xb.annotations.JBossXmlSchema;
 
 /**
@@ -49,10 +49,8 @@
    implements BeanMetaDataFactory
 {
    private static final long serialVersionUID = 1L;
-   /** For use when using the old handlers */
-   private ArrayList<AbstractBeanMetaData> entries = new ArrayList<AbstractBeanMetaData>();
    
-   private List<CFlowCalled> calledEntries = new ArrayList<CFlowCalled>();
+   private List<CFlowEntry> calledEntries = new ArrayList<CFlowEntry>();
 
    public CFlowStackBeanMetaDataFactory()
    {
@@ -65,56 +63,46 @@
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
       
       //Add the Aspect
-      AbstractBeanMetaData cflowStack = new AbstractBeanMetaData(CFlowStack.class.getName());
-      cflowStack.setName(getName());
-      BeanMetaDataUtil.setSimpleProperty(cflowStack, "name", getName());
-      util.setAspectManagerProperty(cflowStack, "manager");
-      result.add(cflowStack);
+      BeanMetaDataBuilder cflowStackBuilder = BeanMetaDataBuilder.createBuilder(getName(), CFlowStack.class.getName());
+      cflowStackBuilder.addPropertyMetaData("name", getName());
+      util.setAspectManagerProperty(cflowStackBuilder, "manager");
+      result.add(cflowStackBuilder.getBeanMetaData());
       
-      AbstractListMetaData lmd = new AbstractListMetaData();
-      lmd.setType(ArrayList.class.getName());
-      BeanMetaDataUtil.setSimpleProperty(cflowStack, "entries", lmd);
+      List<ValueMetaData> entryList = cflowStackBuilder.createList(null, ArrayList.class.getName());
+      cflowStackBuilder.addPropertyMetaData("entries", entryList);
       int i = 0;
-      if (entries != null)
-      {
-         for (AbstractBeanMetaData entry : entries)
-         {
-            String entryName = cflowStack.getName() + "$" + i++;
-            entry.setName(entryName);
-            lmd.add(new AbstractInjectionValueMetaData(entryName));
-            result.add(entry);
-         }
-      }
       if (calledEntries != null)
       {
-         for (CFlowCalled called : calledEntries)
+         for (CFlowEntry entry : calledEntries)
          {
-            AbstractBeanMetaData bmd = new AbstractBeanMetaData();
-            String entryName = cflowStack.getName() + "$" + i++;
-            bmd.setName(name);
-            BeanMetaDataUtil.setSimpleProperty(bmd, "called", called);
-            lmd.add(new AbstractInjectionValueMetaData(entryName));
+            String entryName = getName() + "$" + i++;
+            BeanMetaDataBuilder entryBuilder = BeanMetaDataBuilder.createBuilder(entryName, CFlowStackEntry.class.getName());
+            entryBuilder.addPropertyMetaData("called", entry.getCalled());
+            entryBuilder.addPropertyMetaData("expr", entry.getExpr());
+            ValueMetaData injectEntry = entryBuilder.createInject(entryName);
+            entryList.add(injectEntry);
+            result.add(entryBuilder.getBeanMetaData());
          }
       }
 
       return result;
    }
 
-   public void addEntry(AbstractBeanMetaData entry)
+   public void addEntry(CFlowEntry entry)
    {
-      entries.add(entry);
+      calledEntries.add(entry);
    }
 
-   public List<CFlowCalled> getCalledEntries()
+   public List<CFlowEntry> getCalledEntries()
    {
       return calledEntries;
    }
 
    @XmlElements({
-      @XmlElement(name="called", type=CFlowCalled.class),
+      @XmlElement(name="called", type=CFlowEntry.class),
       @XmlElement(name="not-called", type=CFlowNotCalled.class)
    })
-   public void setCalledEntries(List<CFlowCalled> calledEntries)
+   public void setCalledEntries(List<CFlowEntry> calledEntries)
    {
       this.calledEntries = calledEntries;
    }

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/DomainBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/DomainBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/DomainBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -26,9 +26,9 @@
 
 
 import org.jboss.aop.microcontainer.beans.AOPDomain;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 
 /**
  * 
@@ -80,28 +80,27 @@
    {
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
       
-      AbstractBeanMetaData domain = new AbstractBeanMetaData(AOPDomain.class.getName());
-      BeanMetaDataUtil.setSimpleProperty(domain, "name", getName());
-      domain.setName(getName());
+      BeanMetaDataBuilder domainBuilder = BeanMetaDataBuilder.createBuilder(getName(), AOPDomain.class.getName());
+      domainBuilder.addPropertyMetaData("name", getName());
       
       if (parentFirst != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(domain, "parentFirst", parentFirst);
+         domainBuilder.addPropertyMetaData("parentFirst", parentFirst);
       }
       if (inheritDefinitions != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(domain, "inheritDefinitions", inheritDefinitions);
+         domainBuilder.addPropertyMetaData("inheritDefinitions", inheritDefinitions);
       }
       if (inheritBindings != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(domain, "inheritBindings", inheritBindings);
+         domainBuilder.addPropertyMetaData("inheritBindings", inheritBindings);
       }
       if (extendz != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(domain, "extends", extendz);
+         domainBuilder.addPropertyMetaData("extends", extendz);
       }
-      util.setAspectManagerProperty(domain, "manager");
-      result.add(domain);
+      util.setAspectManagerProperty(domainBuilder, "manager");
+      result.add(domainBuilder.getBeanMetaData());
       
       for (BeanMetaData child : childBeans)
       {

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/IntroductionBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/IntroductionBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/IntroductionBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -23,15 +23,13 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.StringTokenizer;
 
 import org.jboss.aop.microcontainer.beans.IntroductionBinding;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractListMetaData;
-import org.jboss.beans.metadata.plugins.StringValueMetaData;
+import org.jboss.aop.microcontainer.beans.MixinEntry;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.util.id.GUID;
 
 /**
@@ -48,7 +46,7 @@
    private String clazz;
    private String expr;
    private String interfaces;
-   private ArrayList<AbstractBeanMetaData> mixins = new ArrayList<AbstractBeanMetaData>();
+   private ArrayList<MixinData> mixins = new ArrayList<MixinData>();
    
    public IntroductionBeanMetaDataFactory()
    {
@@ -86,7 +84,7 @@
       this.interfaces = interfaces;
    }
 
-   public void addMixinEntry(AbstractBeanMetaData mixin)
+   public void addMixinEntry(MixinData mixin)
    {
       mixins.add(mixin);
    }
@@ -96,67 +94,78 @@
    {
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
       
-      //Add the Aspect
-      AbstractBeanMetaData introduction = new AbstractBeanMetaData(IntroductionBinding.class.getName());
+      //Add the Introduction
       String name = getName();
       if (name == null)
       {
          name = GUID.asString();
       }
-      introduction.setName(name);
-      BeanMetaDataUtil.setSimpleProperty(introduction, "name", name);
-      util.setAspectManagerProperty(introduction, "manager");
+     
+      BeanMetaDataBuilder introductionBuilder = BeanMetaDataBuilder.createBuilder(name, IntroductionBinding.class.getName());
+      introductionBuilder.addPropertyMetaData("name", name);
+      util.setAspectManagerProperty(introductionBuilder, "manager");
       if (clazz != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(introduction, "classes", clazz);
+         introductionBuilder.addPropertyMetaData("classes", clazz);
       }
       if (expr != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(introduction, "expr", expr);
+         introductionBuilder.addPropertyMetaData("expr", expr);
       }
 
-      result.add(introduction);
-
+      result.add(introductionBuilder.getBeanMetaData());
+      
       if (interfaces != null)
       {
-         addInterfaces(introduction, "interfaces", interfaces);
+         addInterfaces(introductionBuilder, interfaces);
       }
       if (mixins != null)
       {
-         addMixins(introduction, result);
+         addMixins(introductionBuilder, result);
       }
       
       return result;
    }
+
+   public static void addInterfaces(BeanMetaDataBuilder introductionBuilder, String interfaces)
+   {
+      addInterfaces(introductionBuilder, "interfaces", interfaces);
+   }
    
-   public static void addInterfaces(AbstractBeanMetaData introduction, String propertyName, String interfaces)
+   public static void addInterfaces(BeanMetaDataBuilder introductionBuilder, String propertyName, String interfaces)
    {
-      AbstractListMetaData lmd = new AbstractListMetaData();
-      lmd.setType(ArrayList.class.getName());
-      lmd.setElementType(String.class.getName());
-      BeanMetaDataUtil.setSimpleProperty(introduction, propertyName, lmd);
-      
-      StringTokenizer tok = new StringTokenizer(interfaces, ",");
-      while (tok.hasMoreTokens())
+      List<ValueMetaData> ifs = introductionBuilder.createList(ArrayList.class.getName(), String.class.getName());
+      introductionBuilder.addPropertyMetaData(propertyName, ifs);
+      for (String token : interfaces.split(","))
       {
-         String token = tok.nextToken();
-         lmd.add(new StringValueMetaData(token.trim()));
+         ifs.add(introductionBuilder.createValue(token.trim()));
       }
    }
    
-   private void addMixins(AbstractBeanMetaData introduction, List<BeanMetaData> result)
+   private void addMixins(BeanMetaDataBuilder introductionBuilder, List<BeanMetaData> result)
    {
-      AbstractListMetaData lmd = new AbstractListMetaData();
-      lmd.setType(ArrayList.class.getName());
-      BeanMetaDataUtil.setSimpleProperty(introduction, "mixins", lmd);
+      List<ValueMetaData> mixinList = introductionBuilder.createList(ArrayList.class.getName(), null);
+      introductionBuilder.addPropertyMetaData("mixins", mixinList);
       int i = 0;
-      for (AbstractBeanMetaData mixin : mixins)
+      for (MixinData mixin : mixins)
       {
-         String name = introduction.getName() + "$" + i++;
-         mixin.setName(name);
-         result.add(mixin);
-
-         lmd.add(new AbstractInjectionValueMetaData(name));
+         String name = introductionBuilder.getBeanMetaData().getName() + "$" + i++;
+         BeanMetaDataBuilder mixinBuilder = BeanMetaDataBuilder.createBuilder(name, MixinEntry.class.getName());
+         mixinBuilder.addPropertyMetaData("mixin", mixin.getMixin());
+         addInterfaces(mixinBuilder, "interfaces", mixin.getInterfaces());
+         if (mixin.getTransient() != null)
+         {
+            mixinBuilder.addPropertyMetaData("transient", mixin.getTransient());
+         }
+         if (mixin.getConstruction() != null)
+         {
+            mixinBuilder.addPropertyMetaData("construction", mixin.getConstruction());
+         }
+         
+         result.add(mixinBuilder.getBeanMetaData());
+         
+         ValueMetaData injectMixin = introductionBuilder.createInject(name);
+         mixinList.add(injectMixin);
       }
    }
 }

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/LifecycleBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/LifecycleBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/LifecycleBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -23,16 +23,15 @@
 
 import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 import org.jboss.aop.microcontainer.beans.LifecycleBinding;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
-import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.beans.metadata.spi.DependencyMetaData;
 import org.jboss.beans.metadata.spi.PropertyMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.dependency.spi.ControllerState;
 
 /**
@@ -78,85 +77,53 @@
    {
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
 
-      //Do not include the bean factory here, just install the bean directly and the binding 
-      AbstractBeanMetaData lifecycle = new AbstractBeanMetaData();
-      lifecycle.setName(name);
-      lifecycle.setBean(getBeanClass());
+      //Do not include the bean factory here, just install the bean directly and the binding
+      BeanMetaDataBuilder lifecycleBuilder = BeanMetaDataBuilder.createBuilder(name, getBeanClass());
       for (PropertyMetaData pmd : properties)
       {
-         lifecycle.addProperty(pmd);   
+         lifecycleBuilder.addPropertyMetaData(pmd.getName(), pmd.getValue());   
       }
-      lifecycle.setDepends(getDepends());
-      result.add(lifecycle);
+      Set<DependencyMetaData> depends = getDepends();
+      if (depends != null)
+      {
+         for (DependencyMetaData depend : depends)
+         {
+            lifecycleBuilder.addDependency(depend.getDependency());
+         }
+      }
       
+      result.add(lifecycleBuilder.getBeanMetaData());
       
+      
       String aspectBindingName = name + "$AspectBinding";
-      AbstractBeanMetaData aspectBinding = new AbstractBeanMetaData();
-      aspectBinding.setName(aspectBindingName);
-      aspectBinding.setBean(LifecycleBinding.class.getName());
-
-      BeanMetaDataUtil.setSimpleProperty(aspectBinding, "callbackBean", name);
-      util.setAspectManagerProperty(aspectBinding, "manager");
+      BeanMetaDataBuilder bindingBuilder = BeanMetaDataBuilder.createBuilder(aspectBindingName, LifecycleBinding.class.getName());
+      bindingBuilder.addPropertyMetaData("callbackBean", name);
+      util.setAspectManagerProperty(bindingBuilder, "manager");
       if (expr != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(aspectBinding, "expr", expr);
+         bindingBuilder.addPropertyMetaData("expr", expr);
       }
       else if (classes != null) 
       {
-         BeanMetaDataUtil.setSimpleProperty(aspectBinding, "classes", classes);         
+         bindingBuilder.addPropertyMetaData("classes", classes);         
       }
-      BeanMetaDataUtil.setSimpleProperty(aspectBinding, "state", getState());
+      bindingBuilder.addPropertyMetaData("state", getState());
       if (installMethod != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(aspectBinding, "installMethod", installMethod);
+         bindingBuilder.addPropertyMetaData("installMethod", installMethod);
       }
       if (uninstallMethod != null)
       {
-         BeanMetaDataUtil.setSimpleProperty(aspectBinding, "uninstallMethod", uninstallMethod);
+         bindingBuilder.addPropertyMetaData("uninstallMethod", uninstallMethod);
       }
-      result.add(aspectBinding);
+      result.add(bindingBuilder.getBeanMetaData());
       
       return result;
    }
 
-
-   protected boolean hasInjectedBeans()
-   {
-      ArrayList<AbstractDependencyValueMetaData> dependencies = new ArrayList<AbstractDependencyValueMetaData>();
-      getDependencies(dependencies, this);
-      
-      for (AbstractDependencyValueMetaData dep : dependencies)
-      {
-         if(!((String)dep.getValue()).startsWith("jboss.kernel:service="))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   private void getDependencies(ArrayList<AbstractDependencyValueMetaData> dependencies, MetaDataVisitorNode node)
-   {
-      Iterator<? extends MetaDataVisitorNode> children = node.getChildren();
-      
-      if (children != null)
-      {
-         while (children.hasNext())
-         {
-            MetaDataVisitorNode child = children.next();
-            if (child instanceof AbstractDependencyValueMetaData)
-            {
-               dependencies.add((AbstractDependencyValueMetaData)child);
-            }
-            getDependencies(dependencies, child);
-         }
-      }
-   }
-
    @Override
    public void addBeanProperty(PropertyMetaData property)
    {
       properties.add(property);
    }
-
 }

Added: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/MixinData.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/MixinData.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/MixinData.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -0,0 +1,75 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.aop.microcontainer.beans.beanmetadatafactory;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class MixinData
+{
+   String mixin;
+   String isTransient;
+   String construction;
+   String interfaces;
+
+   public String getTransient()
+   {
+      return isTransient;
+   }
+
+   public void setTransient(String isTransient)
+   {
+      this.isTransient = isTransient;
+   }
+
+   public String getMixin()
+   {
+      return mixin;
+   }
+
+   public void setMixin(String mixin)
+   {
+      this.mixin = mixin;
+   }
+
+   public String getConstruction()
+   {
+      return construction;
+   }
+
+   public void setConstruction(String construction)
+   {
+      this.construction = construction;
+   }
+
+   public String getInterfaces()
+   {
+      return interfaces;
+   }
+
+   public void setInterfaces(String interfaces)
+   {
+      this.interfaces = interfaces;
+   }   
+}

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/PrecedenceBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/PrecedenceBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/PrecedenceBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -26,10 +26,9 @@
 
 import org.jboss.aop.microcontainer.beans.PrecedenceDef;
 import org.jboss.aop.microcontainer.beans.PrecedenceDefEntry;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractListMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.util.id.GUID;
 
 /**
@@ -54,33 +53,33 @@
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
       
       //Add the PrecedenceDef
-      AbstractBeanMetaData precedence = new AbstractBeanMetaData(PrecedenceDef.class.getName());
       String name = getName();
       if (name == null)
       {
          name = GUID.asString();
       }
-      precedence.setName(name);
-      BeanMetaDataUtil.setSimpleProperty(precedence, "name", getName());
-      util.setAspectManagerProperty(precedence, "manager");
-      result.add(precedence);
+      BeanMetaDataBuilder precedenceBuilder = BeanMetaDataBuilder.createBuilder(name, PrecedenceDef.class.getName());
+      precedenceBuilder.addPropertyMetaData("name", getName());
+      util.setAspectManagerProperty(precedenceBuilder, "manager");
+      result.add(precedenceBuilder.getBeanMetaData());
       
-      AbstractListMetaData lmd = new AbstractListMetaData();
-      lmd.setType(ArrayList.class.getName());
-      BeanMetaDataUtil.setSimpleProperty(precedence, "entries", lmd);
+      List<ValueMetaData> entryList = precedenceBuilder.createList(ArrayList.class.getName(), null);
+      precedenceBuilder.addPropertyMetaData("entries", entryList);
       int i = 0;
       for (BaseInterceptorData entry : entries)
       {
          String entryName = name + "$" + i++;
-         AbstractBeanMetaData entryBean = new AbstractBeanMetaData(PrecedenceDefEntry.class.getName());
-         entryBean.setName(entryName);
-         BeanMetaDataUtil.setSimpleProperty(entryBean, "aspectName", entry.getRefName());
+         BeanMetaDataBuilder entryBuilder = BeanMetaDataBuilder.createBuilder(entryName, PrecedenceDefEntry.class.getName());
+         
+         entryBuilder.addPropertyMetaData("aspectName", entry.getRefName());
          if (entry instanceof AdviceOrInterceptorData)
          {
-            BeanMetaDataUtil.setSimpleProperty(entryBean, "aspectMethod", ((AdviceOrInterceptorData)entry).getAdviceMethod());
+            entryBuilder.addPropertyMetaData("aspectMethod", ((AdviceOrInterceptorData)entry).getAdviceMethod());
          }
-         lmd.add(new AbstractInjectionValueMetaData(entryName));
-         result.add(entryBean);
+         
+         ValueMetaData injectEntry = precedenceBuilder.createInject(entryName);
+         entryList.add(injectEntry);
+         result.add(entryBuilder.getBeanMetaData());
       }
 
       return result;

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/StackBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/StackBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/StackBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -30,10 +30,9 @@
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.jboss.aop.microcontainer.beans.Stack;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractListMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.xb.annotations.JBossXmlSchema;
 
 /**
@@ -59,47 +58,43 @@
    {
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
 
-      //Create AspectBinding
-      AbstractBeanMetaData stack = new AbstractBeanMetaData();
-      stack.setName(name);
-      BeanMetaDataUtil.setSimpleProperty(stack, "name", name);
-      stack.setBean(Stack.class.getName());
-
-      util.setAspectManagerProperty(stack, "manager");
-      result.add(stack);
+      //Create Stack
+      BeanMetaDataBuilder stackBuilder = BeanMetaDataBuilder.createBuilder(name, Stack.class.getName());
+      stackBuilder.addPropertyMetaData("name", name);
+      util.setAspectManagerProperty(stackBuilder, "manager");
+      result.add(stackBuilder.getBeanMetaData());
       
       if (interceptors.size() > 0)
       {
-         AbstractListMetaData almd = new AbstractListMetaData();
+         List<ValueMetaData> advices = stackBuilder.createList();
          int i = 0;
          for (BaseInterceptorData interceptor : interceptors)
          {
-            AbstractBeanMetaData bmd = new AbstractBeanMetaData(interceptor.getBeanClassName());
             String intName = name + "$" + i++; 
-            bmd.setName(intName);
-            util.setAspectManagerProperty(bmd, "manager");
-            BeanMetaDataUtil.setSimpleProperty(bmd, "forStack", Boolean.TRUE);
+            BeanMetaDataBuilder interceptorBuilder = BeanMetaDataBuilder.createBuilder(intName, interceptor.getBeanClassName());
+            util.setAspectManagerProperty(interceptorBuilder, "manager");
+            interceptorBuilder.addPropertyMetaData("forStack", Boolean.TRUE);
             
             if (interceptor instanceof AdviceOrInterceptorData)
             {
-               BeanMetaDataUtil.DependencyBuilder db = new BeanMetaDataUtil.DependencyBuilder(bmd, "aspect", interceptor.getRefName());
-               BeanMetaDataUtil.setDependencyProperty(db);
+               ValueMetaData injectAspect = interceptorBuilder.createInject(interceptor.getRefName());
+               interceptorBuilder.addPropertyMetaData("aspect", injectAspect);
                if (((AdviceOrInterceptorData)interceptor).getAdviceMethod() != null)
                {
-                  BeanMetaDataUtil.setSimpleProperty(bmd, "aspectMethod", ((AdviceOrInterceptorData)interceptor).getAdviceMethod());
+                  interceptorBuilder.addPropertyMetaData("aspectMethod", ((AdviceOrInterceptorData)interceptor).getAdviceMethod());
                }
-               BeanMetaDataUtil.setSimpleProperty(bmd, "type", ((AdviceOrInterceptorData)interceptor).getType());
-               
+               interceptorBuilder.addPropertyMetaData("type", ((AdviceOrInterceptorData)interceptor).getType());
             }
             else
             {
-               BeanMetaDataUtil.DependencyBuilder db = new BeanMetaDataUtil.DependencyBuilder(bmd, "stack", interceptor.getRefName());
-               BeanMetaDataUtil.setDependencyProperty(db);
+               ValueMetaData injectStack = interceptorBuilder.createInject(interceptor.getRefName());
+               interceptorBuilder.addPropertyMetaData("stack", injectStack);
             }
-            result.add(bmd);
-            almd.add(new AbstractInjectionValueMetaData(intName));
+            result.add(interceptorBuilder.getBeanMetaData());
+            ValueMetaData injectAdvice = stackBuilder.createInject(intName);
+            advices.add(injectAdvice);
          }         
-         BeanMetaDataUtil.setSimpleProperty(stack, "advices", almd);
+         stackBuilder.addPropertyMetaData("advices", advices);
       }
       
       return result;

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/TypeDefBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/TypeDefBeanMetaDataFactory.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/beanmetadatafactory/TypeDefBeanMetaDataFactory.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -29,8 +29,8 @@
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.jboss.aop.microcontainer.beans.TypeDef;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.xb.annotations.JBossXmlSchema;
 
 /**
@@ -45,6 +45,11 @@
    private static final long serialVersionUID = 1L;
    private String expr;
 
+   public TypeDefBeanMetaDataFactory()
+   {
+      setBeanClass("IGNORED");
+   }
+   
    public String getExpr()
    {
       return expr;
@@ -61,16 +66,13 @@
    {
       ArrayList<BeanMetaData> beans = new ArrayList<BeanMetaData>();
       
-      AbstractBeanMetaData typedef = new AbstractBeanMetaData();
-
-      typedef.setName(getName());
-      typedef.setBean(TypeDef.class.getName());
-      BeanMetaDataUtil.setSimpleProperty(typedef, "name", getName());
-      BeanMetaDataUtil.setSimpleProperty(typedef, "expr", expr);
+      BeanMetaDataBuilder typedefBuilder = BeanMetaDataBuilder.createBuilder(getName(), TypeDef.class.getName());
+      typedefBuilder.addPropertyMetaData("name", getName());
+      typedefBuilder.addPropertyMetaData("expr", expr);
       
-      util.setAspectManagerProperty(typedef, "manager");
+      util.setAspectManagerProperty(typedefBuilder, "manager");
       
-      beans.add(typedef);
+      beans.add(typedefBuilder.getBeanMetaData());
       
       return beans;
    }

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/xml/AOPBeansSchemaInitializer.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/xml/AOPBeansSchemaInitializer.java	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/xml/AOPBeansSchemaInitializer.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -28,20 +28,17 @@
 import org.jboss.aop.microcontainer.beans.AnnotationIntroduction;
 import org.jboss.aop.microcontainer.beans.AnnotationOverride;
 import org.jboss.aop.microcontainer.beans.ArrayReplacement;
-import org.jboss.aop.microcontainer.beans.CFlowStackEntry;
 import org.jboss.aop.microcontainer.beans.DynamicCFlowDef;
-import org.jboss.aop.microcontainer.beans.MixinEntry;
-import org.jboss.aop.microcontainer.beans.NamedPointcut;
-import org.jboss.aop.microcontainer.beans.Prepare;
-import org.jboss.aop.microcontainer.beans.TypeDef;
+import org.jboss.aop.microcontainer.beans.NamedPointcut;import org.jboss.aop.microcontainer.beans.Prepare;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.AdviceData;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.AdviceOrInterceptorData;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.ArrayBindBeanMetaDataFactory;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.AspectBeanMetaDataFactory;
-import org.jboss.aop.microcontainer.beans.beanmetadatafactory.BeanMetaDataUtil;
+import org.jboss.aop.microcontainer.beans.beanmetadatafactory.AspectManagerUtil;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.AspectManagerAwareBeanMetaDataFactory;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.BaseInterceptorData;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.BindBeanMetaDataFactory;
+import org.jboss.aop.microcontainer.beans.beanmetadatafactory.CFlowEntry;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.CFlowStackBeanMetaDataFactory;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.ConfigureLifecycleBeanMetaDataFactory;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.CreateLifecycleBeanMetaDataFactory;
@@ -51,12 +48,16 @@
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.InstantiateLifecycleBeanMetaDataFactory;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.IntroductionBeanMetaDataFactory;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.LifecycleBeanMetaDataFactory;
+import org.jboss.aop.microcontainer.beans.beanmetadatafactory.MixinData;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.PreInstallLifecycleBeanMetaDataFactory;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.PrecedenceBeanMetaDataFactory;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.StackBeanMetaDataFactory;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.StackRefData;
 import org.jboss.aop.microcontainer.beans.beanmetadatafactory.StartLifecycleBeanMetaDataFactory;
+import org.jboss.aop.microcontainer.beans.beanmetadatafactory.TypeDefBeanMetaDataFactory;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.kernel.plugins.deployment.xml.BeanFactoryHandler;
 import org.jboss.kernel.plugins.deployment.xml.BeanSchemaBinding20;
 import org.jboss.kernel.plugins.deployment.xml.BeanSchemaBindingHelper;
@@ -271,7 +272,7 @@
       type.pushInterceptor(aspectQName, DomainAspectManagerAwareBeanMetaDataFactoryInterceptor.INTERCEPTOR);
       type.pushInterceptor(bindQName, DomainAspectManagerAwareBeanMetaDataFactoryInterceptor.INTERCEPTOR);
       type.pushInterceptor(stackQName, DomainAspectManagerAwareBeanMetaDataFactoryInterceptor.INTERCEPTOR);
-      type.pushInterceptor(typedefQName, DomainBeanMetaDataInterceptor.INTERCEPTOR);
+      type.pushInterceptor(typedefQName, DomainAspectManagerAwareBeanMetaDataFactoryInterceptor.INTERCEPTOR);
       type.pushInterceptor(cflowStackQName, DomainAspectManagerAwareBeanMetaDataFactoryInterceptor.INTERCEPTOR);
       type.pushInterceptor(dynamicCflowQName, DomainBeanMetaDataInterceptor.INTERCEPTOR);
       type.pushInterceptor(prepareQName, DomainBeanMetaDataInterceptor.INTERCEPTOR);
@@ -546,11 +547,11 @@
             }
             else if ("inheritBindings".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(bean, "inheritBindings", attrs.getValue(i));
+               bean.setInheritBindings(attrs.getValue(i));
             }
             else if ("extends".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(bean, "extends", attrs.getValue(i));
+               bean.setExtends(attrs.getValue(i));
             }
          }
 
@@ -828,7 +829,8 @@
       public void attributes(Object o, QName elementName, ElementBinding element, Attributes attrs, NamespaceContext nsCtx)
       {
          AbstractBeanMetaData arrayReplacement = (AbstractBeanMetaData)o;
-         BeanMetaDataUtil util = new BeanMetaDataUtil();
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(arrayReplacement);
+         AspectManagerUtil util = new AspectManagerUtil();
          String name = null;
          for (int i = 0; i < attrs.getLength(); ++i)
          {
@@ -837,13 +839,13 @@
             {
                name = attrs.getValue(i);
             }
-            else if ("class".equals(localName))
+            if ("class".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(arrayReplacement, "classes", attrs.getValue(i));
+               builder.addPropertyMetaData("classes", attrs.getValue(i));
             }
             else if ("expr".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(arrayReplacement, "expr", attrs.getValue(i));
+               builder.addPropertyMetaData("expr", attrs.getValue(i));
             }
             else if (MANAGER_BEAN_NAME.equals(localName))
             {
@@ -854,14 +856,14 @@
                util.setManagerProperty(attrs.getValue(i));
             }
          }
-         util.setAspectManagerProperty(arrayReplacement, "manager");
+         util.setAspectManagerProperty(builder, "manager");
          
          if (name == null)
          {
             name = GUID.asString();
          }
          arrayReplacement.setName(name);
-         BeanMetaDataUtil.setSimpleProperty(arrayReplacement, "name", name);
+         builder.addPropertyMetaData("name", name);
       }
    }
 
@@ -974,44 +976,36 @@
       }
    }
       
-   private static class TypeDefHandler  extends DefaultElementHandler
+   private static class TypeDefHandler extends AspectManagerAwareBeanFactoryHandler
    {
       public static final TypeDefHandler HANDLER = new TypeDefHandler();
 
       @Override
       public Object startElement(Object parent, QName name, ElementBinding element)
       {
-         return new AbstractBeanMetaData(TypeDef.class.getName());
+         return new TypeDefBeanMetaDataFactory();
       }
 
       @Override
       public void attributes(Object o, QName elementName, ElementBinding element, Attributes attrs, NamespaceContext nsCtx)
       {
-         BeanMetaDataUtil util = new BeanMetaDataUtil();
-         AbstractBeanMetaData typedef = (AbstractBeanMetaData)o;
+         super.attributes(o, elementName, element, attrs, nsCtx);
 
+         AspectManagerUtil util = new AspectManagerUtil();
+         TypeDefBeanMetaDataFactory factory = (TypeDefBeanMetaDataFactory)o;
+
          for (int i = 0; i < attrs.getLength(); ++i)
          {
             String localName = attrs.getLocalName(i);
             if ("name".equals(localName))
             {
-               typedef.setName(attrs.getValue(i));
-               BeanMetaDataUtil.setSimpleProperty(typedef, "name", attrs.getValue(i));
+               factory.setName(attrs.getValue(i));
             }
             else if ("expr".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(typedef, "expr", attrs.getValue(i));
+               factory.setExpr(attrs.getValue(i));
             }
-            else if (MANAGER_BEAN_NAME.equals(localName))
-            {
-               util.setManagerBean(attrs.getValue(i));
-            }
-            else if (MANAGER_PROPERTY_NAME.equals(localName))
-            {
-               util.setManagerProperty(attrs.getValue(i));
-            }
          }
-         util.setAspectManagerProperty(typedef, "manager");
       }
    }
       
@@ -1022,19 +1016,19 @@
       @Override
       public Object startElement(Object parent, QName name, ElementBinding element)
       {
-         return new AbstractBeanMetaData(CFlowStackEntry.class.getName());
+         return new CFlowEntry();
       }
 
       @Override
       public void attributes(Object o, QName elementName, ElementBinding element, Attributes attrs, NamespaceContext nsCtx)
       {
-         AbstractBeanMetaData entry = (AbstractBeanMetaData)o;
+         CFlowEntry entry = (CFlowEntry)o;
          for (int i = 0; i < attrs.getLength(); ++i)
          {
             String localName = attrs.getLocalName(i);
             if ("expr".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(entry, "expr", attrs.getValue(i));
+               entry.setExpr(attrs.getValue(i));
             }
          }
       }
@@ -1053,20 +1047,20 @@
       @Override
       public void attributes(Object o, QName elementName, ElementBinding element, Attributes attrs, NamespaceContext nsCtx)
       {
-         BeanMetaDataUtil util = new BeanMetaDataUtil();
+         AspectManagerUtil util = new AspectManagerUtil();
          AbstractBeanMetaData dynamicCFlow = (AbstractBeanMetaData)o;
-
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(dynamicCFlow);
          for (int i = 0; i < attrs.getLength(); ++i)
          {
             String localName = attrs.getLocalName(i);
             if ("name".equals(localName))
             {
                dynamicCFlow.setName(attrs.getValue(i));
-               BeanMetaDataUtil.setSimpleProperty(dynamicCFlow, "name", attrs.getValue(i));
+               builder.addPropertyMetaData("name", attrs.getValue(i));
             }
             else if ("class".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(dynamicCFlow, "className", attrs.getValue(i));
+               builder.addPropertyMetaData("className", attrs.getValue(i));
             }
             else if (MANAGER_BEAN_NAME.equals(localName))
             {
@@ -1077,7 +1071,7 @@
                util.setManagerProperty(attrs.getValue(i));
             }
          }
-         util.setAspectManagerProperty(dynamicCFlow, "manager");
+         util.setAspectManagerProperty(builder, "manager");
       }
    }
    
@@ -1094,8 +1088,9 @@
       @Override
       public void attributes(Object o, QName elementName, ElementBinding element, Attributes attrs, NamespaceContext nsCtx)
       {
-         BeanMetaDataUtil util = new BeanMetaDataUtil();
+         AspectManagerUtil util = new AspectManagerUtil();
          AbstractBeanMetaData pointcut = (AbstractBeanMetaData)o;
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(pointcut);
          String name = null;
          for (int i = 0; i < attrs.getLength(); ++i)
          {
@@ -1106,7 +1101,7 @@
             }
             else if ("expr".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(pointcut, "expr", attrs.getValue(i));
+               builder.addPropertyMetaData("expr", attrs.getValue(i));
             }
             else if (MANAGER_BEAN_NAME.equals(localName))
             {
@@ -1117,14 +1112,14 @@
                util.setManagerProperty(attrs.getValue(i));
             }
          }
-         util.setAspectManagerProperty(pointcut, "manager");
+         util.setAspectManagerProperty(builder, "manager");
          
          if (name == null)
          {
             name = GUID.asString();
          }
          pointcut.setName(name);
-         BeanMetaDataUtil.setSimpleProperty(pointcut, "name", name);
+         builder.addPropertyMetaData("name", name);
       }
    }
    
@@ -1152,19 +1147,20 @@
       @Override
       public void attributes(Object o, QName elementName, ElementBinding element, Attributes attrs, NamespaceContext nsCtx)
       {
-         BeanMetaDataUtil util = new BeanMetaDataUtil();
+         AspectManagerUtil util = new AspectManagerUtil();
          AbstractBeanMetaData annotation = (AbstractBeanMetaData)o;
-
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(annotation);
+         
          for (int i = 0; i < attrs.getLength(); ++i)
          {
             String localName = attrs.getLocalName(i);
             if ("invisible".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(annotation, "invisible", attrs.getValue(i));
+               builder.addPropertyMetaData("invisible", attrs.getValue(i));
             }
             else if ("expr".equals(localName))
             {
-               BeanMetaDataUtil.setSimpleProperty(annotation, "expr", attrs.getValue(i));
+               builder.addPropertyMetaData("expr", attrs.getValue(i));
             }
             else if (MANAGER_BEAN_NAME.equals(localName))
             {
@@ -1175,7 +1171,7 @@
                util.setManagerProperty(attrs.getValue(i));
             }
          }
-         util.setAspectManagerProperty(annotation, "manager");
+         util.setAspectManagerProperty(builder, "manager");
          annotation.setName(GUID.asString());
       }
 
@@ -1218,7 +1214,7 @@
       @Override
       public Object startElement(Object parent, QName name, ElementBinding element)
       {
-         return new AbstractBeanMetaData(MixinEntry.class.getName());
+         return new MixinData();
       }
    }
       
@@ -1280,8 +1276,8 @@
       public void addEntry(Object parent, Object child, QName name, boolean called)
       {
          CFlowStackBeanMetaDataFactory cflowStack = (CFlowStackBeanMetaDataFactory)parent;
-         AbstractBeanMetaData entry = (AbstractBeanMetaData)child;
-         BeanMetaDataUtil.setSimpleProperty(entry, "called", called);
+         CFlowEntry entry = (CFlowEntry)child;
+         entry.setCalled(called);
          cflowStack.addEntry(entry);
       }
    }
@@ -1341,7 +1337,7 @@
       public void add(Object parent, Object child, QName name)
       {
          IntroductionBeanMetaDataFactory intro = (IntroductionBeanMetaDataFactory)parent;
-         intro.addMixinEntry((AbstractBeanMetaData)child);
+         intro.addMixinEntry((MixinData)child);
       }      
    }
    
@@ -1352,8 +1348,8 @@
       @Override
       public void add(Object parent, Object child, QName name)
       {
-         AbstractBeanMetaData mixin = (AbstractBeanMetaData)parent;
-         BeanMetaDataUtil.setSimpleProperty(mixin, "mixin", ((StringBuffer)child).toString());
+         MixinData mixin = (MixinData)parent;
+         mixin.setMixin(((StringBuffer)child).toString());
       }      
    }
    
@@ -1364,8 +1360,8 @@
       @Override
       public void add(Object parent, Object child, QName name)
       {
-         AbstractBeanMetaData mixin = (AbstractBeanMetaData)parent;
-         BeanMetaDataUtil.setSimpleProperty(mixin, "transient", ((StringBuffer)child).toString());
+         MixinData mixin = (MixinData)parent;
+         mixin.setTransient(((StringBuffer)child).toString());
       }      
    }
    
@@ -1376,8 +1372,8 @@
       @Override
       public void add(Object parent, Object child, QName name)
       {
-         AbstractBeanMetaData mixin = (AbstractBeanMetaData)parent;
-         BeanMetaDataUtil.setSimpleProperty(mixin, "construction", ((StringBuffer)child).toString());
+         MixinData mixin = (MixinData)parent;
+         mixin.setConstruction(((StringBuffer)child).toString());
       }      
    }
    
@@ -1388,8 +1384,8 @@
       @Override
       public void add(Object parent, Object child, QName name)
       {
-         AbstractBeanMetaData mixin = (AbstractBeanMetaData)parent;
-         IntroductionBeanMetaDataFactory.addInterfaces(mixin, "interfaces", ((StringBuffer)child).toString());
+         MixinData mixin = (MixinData)parent;
+         mixin.setInterfaces(((StringBuffer)child).toString());
       }      
    }
 
@@ -1419,10 +1415,10 @@
          DomainBeanMetaDataFactory domain = (DomainBeanMetaDataFactory)parent;
          AbstractBeanMetaData bean = (AbstractBeanMetaData)child;
          //Overwrite the manager property
-         BeanMetaDataUtil util = new BeanMetaDataUtil();
+         AspectManagerUtil util = new AspectManagerUtil();
          util.setManagerBean(domain.getName());
          util.setManagerProperty("domain");
-         util.setAspectManagerProperty(bean, "manager");
+         util.setAspectManagerProperty(BeanMetaDataBuilder.createBuilder(bean), "manager");
          
          domain.addChildBean(bean);
       }      
@@ -1443,7 +1439,8 @@
       @Override
       public void setValue(QName qname, ElementBinding element, Object owner, Object value)
       {
-         BeanMetaDataUtil.setSimpleProperty((AbstractBeanMetaData)owner, "annotation", ((String)value).trim());
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder((BeanMetaData)owner);
+         builder.addPropertyMetaData("annotation", ((String)value).trim());
       }
    }
    

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/AspectWithDependencyJaxbDeploymentTestCaseNotAutomatic1.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/AspectWithDependencyJaxbDeploymentTestCaseNotAutomatic1.xml	2008-02-29 16:05:10 UTC (rev 70273)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/AspectWithDependencyJaxbDeploymentTestCaseNotAutomatic1.xml	2008-02-29 16:09:04 UTC (rev 70274)
@@ -7,7 +7,7 @@
    </bean>
 
 	<aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0" class="org.jboss.test.microcontainer.beans.TestAspectWithDependency">
-   	<property xmlns="urn:jboss:bean-deployer:2.0" name="dependency"><inject bean="Dependency"/></property>
+   	<property name="dependency"><inject bean="Dependency"/></property>
    </aop:aspect>
 
 	<aop:bind xmlns:aop="urn:jboss:aop-beans:1.0" pointcut="execution(* org.jboss.test.microcontainer.beans.POJO->*(..))">

Added: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbAopTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbAopTestCase.xml	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbAopTestCase.xml	2008-02-29 16:09:04 UTC (rev 70274)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<aop xmlns="urn:jboss:aop-beans:1.0">
+
+   <bean xmlns="urn:jboss:bean-deployer:2.0" name="AspectManager" class="org.jboss.aop.AspectManager">
+      <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>
+   </bean>
+
+	<aspect class="org.jboss.test.microcontainer.beans.TestAspect"/>
+	
+	<cflow-stack name="CFlow">
+		<not-called expr="void org.jboss.test.microcontainer.beans.test.CFlowTest->notCallPOJO(..)"/>
+		<called expr="void org.jboss.test.microcontainer.beans.test.CFlowTest->callPOJO(..)"/>
+	</cflow-stack>
+
+	<bind pointcut="execution(* org.jboss.test.microcontainer.beans.POJO->*(..))" cflow="CFlow">
+		<advice aspect="org.jboss.test.microcontainer.beans.TestAspect" name="advice"/>
+	</bind>
+	   
+   <bean xmlns="urn:jboss:bean-deployer:2.0" name="Bean" class="org.jboss.test.microcontainer.beans.POJO"/>
+   
+</deployment>

Added: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbDeploymentTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbDeploymentTestCase.xml	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbDeploymentTestCase.xml	2008-02-29 16:09:04 UTC (rev 70274)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <bean name="AspectManager" class="org.jboss.aop.AspectManager">
+      <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>
+   </bean>
+
+	<aspect xmlns="urn:jboss:aop-beans:1.0" class="org.jboss.test.microcontainer.beans.TestAspect"/>
+	
+	<cflow-stack xmlns="urn:jboss:aop-beans:1.0" name="CFlow">
+		<not-called expr="void org.jboss.test.microcontainer.beans.test.CFlowTest->notCallPOJO(..)"/>
+		<called expr="void org.jboss.test.microcontainer.beans.test.CFlowTest->callPOJO(..)"/>
+	</cflow-stack>
+
+	<bind xmlns="urn:jboss:aop-beans:1.0" pointcut="execution(* org.jboss.test.microcontainer.beans.POJO->*(..))" cflow="CFlow">
+		<advice aspect="org.jboss.test.microcontainer.beans.TestAspect" name="advice"/>
+	</bind>
+	   
+   <bean name="Bean" class="org.jboss.test.microcontainer.beans.POJO"/>
+   
+</deployment>

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbAopTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbAopTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbAopTestCase.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* 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.test.microcontainer.beans.test;
+
+import junit.framework.Test;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class CFlowJaxbAopTestCase extends CFlowTest
+{
+   public static Test suite()
+   {
+      setUseJaxb(true);
+      return suite(CFlowJaxbAopTestCase.class);
+   }
+   
+   public CFlowJaxbAopTestCase(String test)
+   {
+      super(test);
+   }
+}

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbDeploymentTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbDeploymentTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/CFlowJaxbDeploymentTestCase.java	2008-02-29 16:09:04 UTC (rev 70274)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* 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.test.microcontainer.beans.test;
+
+import junit.framework.Test;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class CFlowJaxbDeploymentTestCase extends CFlowTest
+{
+   public static Test suite()
+   {
+      setUseJaxb(true);
+      return suite(CFlowJaxbDeploymentTestCase.class);
+   }
+   
+   public CFlowJaxbDeploymentTestCase(String test)
+   {
+      super(test);
+   }
+}




More information about the jboss-cvs-commits mailing list