[jboss-cvs] JBossAS SVN: r68636 - in projects/microcontainer/trunk/kernel/src/main/org/jboss: beans/metadata/plugins/factory and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 4 19:00:54 EST 2008


Author: alesj
Date: 2008-01-04 19:00:54 -0500 (Fri, 04 Jan 2008)
New Revision: 68636

Added:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AutowireTypeValueAdapter.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/CardinalityValueAdapter.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ControllerModeValueAdapter.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ControllerStateValueAdapter.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContextValueAdapter.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InjectionOptionValueAdapter.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/MapEntry.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/package-info.java
Modified:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAliasMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAnnotationMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCallbackMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDemandMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractListMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractNamedAliasMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSetMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSupplyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InstallCallbackMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ThisValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/UninstallCallbackMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/factory/GenericBeanFactoryMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/AbstractKernelDeployment.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/ValueFactoryHandler.java
Log:
Initial JAXB support for MC IoC.
TODO to port tests.

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAliasMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAliasMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAliasMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -24,6 +24,11 @@
 import java.io.Serializable;
 import java.util.Iterator;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
 import org.jboss.beans.metadata.spi.AliasMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
@@ -39,10 +44,11 @@
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
+ at XmlType
 public class AbstractAliasMetaData extends JBossObject
       implements AliasMetaData, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
    private static TypeInfoFactory typeInfoFactory = new IntrospectionTypeInfoFactory();
 
    public String alias;
@@ -63,6 +69,7 @@
       return alias;
    }
 
+   @XmlValue
    public void setAlias(String alias)
    {
       this.alias = alias;
@@ -73,6 +80,7 @@
       return replace;
    }
 
+   @XmlAttribute
    public void setReplace(boolean replace)
    {
       this.replace = replace;
@@ -83,11 +91,13 @@
       return clazz;
    }
 
+   @XmlAttribute(name="class")
    public void setClazz(String clazz)
    {
       this.clazz = clazz;
    }
 
+   @XmlTransient
    public Object getAliasValue()
    {
       try
@@ -153,5 +163,4 @@
       // this is what we probably want? - never saw duplicate annotation on a bean/prop/...
       return alias.equals(amd.alias) && (replace == amd.replace) && (clazz != null && clazz.equals(amd.clazz));
    }
-
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAnnotationMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAnnotationMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAnnotationMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -25,6 +25,10 @@
 import java.lang.annotation.Annotation;
 import java.util.Iterator;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.XmlTransient;
+
 import org.jboss.annotation.factory.AnnotationCreator;
 import org.jboss.annotation.factory.ast.TokenMgrError;
 import org.jboss.beans.metadata.spi.AnnotationMetaData;
@@ -37,13 +41,15 @@
 /**
  * Metadata for an annotation.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType(propOrder={"annotation"})
 public class AbstractAnnotationMetaData extends JBossObject
    implements AnnotationMetaData, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    public String annotation;
 
@@ -64,6 +70,7 @@
       return annotation;
    }
 
+   @XmlValue
    public void setAnnotation(String annotation)
    {
       this.annotation = annotation;
@@ -79,6 +86,7 @@
       this.replace = replace;
    }
 
+   @XmlTransient
    public Annotation getAnnotationInstance()
    {
       return getAnnotationInstance(null);
@@ -150,5 +158,4 @@
       // this is what we probably want? - never saw duplicate annotation on a bean/prop/...
       return (replace == amd.replace) && annotation.equals(amd.annotation);
    }
-
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -25,18 +25,41 @@
 import java.util.Collection;
 import java.lang.reflect.Array;
 
+import javax.xml.bind.annotation.XmlType;
+
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.xb.annotations.JBossXmlNoElements;
+import org.jboss.xb.annotations.JBossXmlChildren;
+import org.jboss.xb.annotations.JBossXmlChild;
+import org.jboss.xb.annotations.JBossXmlChildWildcard;
 
 /**
  * Array metadata.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
+ at JBossXmlNoElements
+ at JBossXmlChildren
+({
+   @JBossXmlChild(name="array", type=AbstractArrayMetaData.class),
+   @JBossXmlChild(name="collection", type=AbstractCollectionMetaData.class),
+   @JBossXmlChild(name="inject", type=AbstractInjectionValueMetaData.class),
+   @JBossXmlChild(name="list", type=AbstractListMetaData.class),
+   @JBossXmlChild(name="map", type=AbstractMapMetaData.class),
+   @JBossXmlChild(name="null", type=AbstractValueMetaData.class),
+   @JBossXmlChild(name="set", type=AbstractSetMetaData.class),
+   @JBossXmlChild(name="this", type=ThisValueMetaData.class),
+   @JBossXmlChild(name="value", type=StringValueMetaData.class),
+   @JBossXmlChild(name="value-factory", type=AbstractValueFactoryMetaData.class)
+})
+ at JBossXmlChildWildcard(wrapper=AbstractValueMetaData.class, property="value")
 public class AbstractArrayMetaData extends AbstractListMetaData
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /**
     * Create a new array value

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -28,6 +28,11 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
 
 import org.jboss.beans.metadata.spi.AutowireType;
 import org.jboss.beans.metadata.spi.BeanMetaData;
@@ -51,21 +56,28 @@
 import org.jboss.dependency.spi.DependencyItem;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.managed.api.annotation.ManagementProperty;
 import org.jboss.reflect.spi.TypeInfo;
 import org.jboss.util.JBossObject;
 import org.jboss.util.JBossStringBuilder;
+import org.jboss.xb.annotations.JBossXmlSchema;
 
 /**
  * Metadata for a bean.
  *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
- at ManagementObject
+ at ManagementObject(properties = ManagementProperties.EXPLICIT) // TODO - explicitly add props we want to manage
+ at JBossXmlSchema(namespace="urn:jboss:bean-deployer:2.0", elementFormDefault= XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="bean")
+ at XmlType(propOrder={"aliases", "annotations", "classLoader", "constructor", "properties", "create", "start", "stop", "destroy", "depends", "demands", "supplies", "installs", "uninstalls", "installCallbacks", "uninstallCallbacks"})
 public class AbstractBeanMetaData extends AbstractFeatureMetaData
    implements BeanMetaData, BeanMetaDataFactory, MutableLifecycleHolder, Serializable
 {
-   private static final long serialVersionUID = 2L;
+   private static final long serialVersionUID = 3L;
 
    /** The bean fully qualified class name */
    protected String bean;
@@ -220,6 +232,7 @@
     *
     * @param bean The bean class name to set.
     */
+   @XmlAttribute(name="class")
    public void setBean(String bean)
    {
       this.bean = bean;
@@ -267,6 +280,8 @@
     *
     * @param properties Set<PropertyMetaData>
     */
+   @ManagementProperty(managed=true) // TODO - this ok? 
+   @XmlElement(name="property", type=AbstractPropertyMetaData.class)
    public void setProperties(Set<PropertyMetaData> properties)
    {
       this.properties = properties;
@@ -278,6 +293,7 @@
       return classLoader;
    }
 
+   @XmlElement(name="classloader", type=AbstractClassLoaderMetaData.class)
    public void setClassLoader(ClassLoaderMetaData classLoader)
    {
       this.classLoader = classLoader;
@@ -288,6 +304,7 @@
     *
     * @param constructor the constructor metadata
     */
+   @XmlElement(name="constructor", type=AbstractConstructorMetaData.class)
    public void setConstructor(ConstructorMetaData constructor)
    {
       this.constructor = constructor;
@@ -298,6 +315,7 @@
     *
     * @param demands Set<DemandMetaData>
     */
+   @XmlElement(name="demand", type=AbstractDemandMetaData.class)
    public void setDemands(Set<DemandMetaData> demands)
    {
       this.demands = demands;
@@ -309,6 +327,7 @@
     *
     * @param supplies Set<SupplyMetaData>
     */
+   @XmlElement(name="supply", type=AbstractSupplyMetaData.class)
    public void setSupplies(Set<SupplyMetaData> supplies)
    {
       this.supplies = supplies;
@@ -320,6 +339,7 @@
     *
     * @param depends Set<DependencyMetaData>
     */
+   @XmlElement(name="depends", type=AbstractDependencyMetaData.class)
    public void setDepends(Set<DependencyMetaData> depends)
    {
       this.depends = depends;
@@ -336,6 +356,7 @@
     *
     * @param name The name to set.
     */
+   @XmlAttribute
    public void setName(String name)
    {
       this.name = name;
@@ -347,6 +368,7 @@
       return aliases;
    }
 
+   @XmlElement(name="alias", type=String.class)
    public void setAliases(Set<Object> aliases)
    {
       this.aliases = aliases;
@@ -362,6 +384,7 @@
     *
     * @param parent the parent name
     */
+   @XmlAttribute
    public void setParent(String parent)
    {
       this.parent = parent;
@@ -377,6 +400,7 @@
     *
     * @param anAbstract is abstract
     */
+   @XmlAttribute
    public void setAbstract(boolean anAbstract)
    {
       isAbstract = anAbstract;
@@ -392,6 +416,7 @@
     *
     * @param autowireType the type
     */
+   @XmlAttribute(name="autowire-type")
    public void setAutowireType(AutowireType autowireType)
    {
       this.autowireType = autowireType;
@@ -402,6 +427,7 @@
       return mode;
    }
 
+   @XmlAttribute
    public void setMode(ControllerMode mode)
    {
       this.mode = mode;
@@ -413,6 +439,7 @@
       return autowireCandidate;
    }
 
+   @XmlAttribute(name="autowire-candidate")
    public void setAutowireCandidate(boolean autowireCandidate)
    {
       this.autowireCandidate = autowireCandidate;
@@ -438,6 +465,7 @@
     *
     * @param lifecycle the lifecycle metadata
     */
+   @XmlElement(name="create", type=AbstractLifecycleMetaData.class)
    public void setCreate(LifecycleMetaData lifecycle)
    {
       lifecycle.setState(ControllerState.CREATE);
@@ -454,6 +482,7 @@
     *
     * @param lifecycle the lifecycle metadata
     */
+   @XmlElement(name="start", type=AbstractLifecycleMetaData.class)
    public void setStart(LifecycleMetaData lifecycle)
    {
       lifecycle.setState(ControllerState.START);
@@ -470,6 +499,7 @@
     *
     * @param lifecycle the lifecycle metadata
     */
+   @XmlElement(name="stop", type=AbstractLifecycleMetaData.class)
    public void setStop(LifecycleMetaData lifecycle)
    {
       lifecycle.setState(ControllerState.START);
@@ -486,6 +516,7 @@
     *
     * @param lifecycle the lifecycle metadata
     */
+   @XmlElement(name="destroy", type=AbstractLifecycleMetaData.class)
    public void setDestroy(LifecycleMetaData lifecycle)
    {
       lifecycle.setState(ControllerState.CREATE);
@@ -517,6 +548,7 @@
     *
     * @param installs List<InstallMetaData>
     */
+   @XmlElement(name="install", type=AbstractInstallMetaData.class)
    public void setInstalls(List<InstallMetaData> installs)
    {
       this.installs = installs;
@@ -533,6 +565,7 @@
     *
     * @param uninstalls List<InstallMetaData>
     */
+   @XmlElement(name="uninstall", type=AbstractInstallMetaData.class)
    public void setUninstalls(List<InstallMetaData> uninstalls)
    {
       this.uninstalls = uninstalls;
@@ -544,6 +577,7 @@
       return installCallbacks;
    }
 
+   @XmlElement(name="incallback", type=InstallCallbackMetaData.class)
    public void setInstallCallbacks(List<CallbackMetaData> installCallbacks)
    {
       this.installCallbacks = installCallbacks;
@@ -555,6 +589,7 @@
       return uninstallCallbacks;
    }
 
+   @XmlElement(name="uncallback", type=UninstallCallbackMetaData.class)
    public void setUninstallCallbacks(List<CallbackMetaData> uninstallCallbacks)
    {
       this.uninstallCallbacks = uninstallCallbacks;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCallbackMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCallbackMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCallbackMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -23,6 +23,8 @@
 
 import java.io.Serializable;
 
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.info.spi.PropertyInfo;
 import org.jboss.beans.metadata.spi.CallbackMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
@@ -43,7 +45,7 @@
 public abstract class AbstractCallbackMetaData extends AbstractLifecycleMetaData
    implements CallbackMetaData, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /** The cardinality */
    protected Cardinality cardinality;
@@ -81,6 +83,7 @@
     *
     * @param property property name
     */
+   @XmlAttribute
    public void setProperty(String property)
    {
       this.property = property;
@@ -97,6 +100,7 @@
     *
     * @param cardinality the cardinality
     */
+   @XmlAttribute
    public void setCardinality(Cardinality cardinality)
    {
       this.cardinality = cardinality;
@@ -113,6 +117,7 @@
     *
     * @param whenRequired when is this call back required (default Configured)
     */
+   @XmlAttribute(name="whenRequired")
    public void setWhenRequired(ControllerState whenRequired)
    {
       this.whenRequired = whenRequired;
@@ -129,6 +134,7 @@
     *
     * @param signature method / property parameter signature
     */
+   @XmlAttribute
    public void setSignature(String signature)
    {
       this.signature = signature;
@@ -140,6 +146,7 @@
     *
     * @param dependentState the required state or null if it must be in the registry
     */
+   @XmlAttribute(name="state")
    public void setDependentState(ControllerState dependentState)
    {
       this.dependentState = dependentState;
@@ -233,5 +240,4 @@
       if (methodName != null)
          buffer.append("method=").append(methodName);
    }
-
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -27,6 +27,11 @@
 import java.util.Iterator;
 import java.util.List;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAnyElement;
+
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
 import org.jboss.beans.metadata.spi.ClassLoaderMetaData;
@@ -36,17 +41,20 @@
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.util.JBossObject;
 import org.jboss.util.JBossStringBuilder;
+import org.jboss.managed.api.annotation.ManagementProperty;
 
 /**
  * A classloader.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType(propOrder="classLoader")
 public class AbstractClassLoaderMetaData extends JBossObject
    implements ClassLoaderMetaData, BeanMetaDataFactory, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /** The classloader */
    protected ValueMetaData classloader;
@@ -73,6 +81,12 @@
     * 
     * @param classloader the classloader value
     */
+   @XmlElements
+   ({
+      @XmlElement(name="bean", type=AbstractBeanMetaData.class),
+      @XmlElement(name="inject", type=AbstractDependencyValueMetaData.class),
+      @XmlElement(name="null", type=AbstractValueMetaData.class)
+   })
    public void setClassLoader(ValueMetaData classloader)
    {
       this.classloader = classloader;
@@ -84,6 +98,18 @@
       return classloader;
    }
 
+   @XmlAnyElement
+   @ManagementProperty(ignored = true)
+   public void setClassLoaderObject(Object classloader)
+   {
+      if (classloader == null)
+         setClassLoader(null);
+      else if (classloader instanceof ValueMetaData)
+         setClassLoader((ValueMetaData) classloader);
+      else
+         setClassLoader(new AbstractValueMetaData(classloader));
+   }
+
    public List<BeanMetaData> getBeans()
    {
       if (classloader instanceof BeanMetaDataFactory)

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -26,6 +26,9 @@
 import java.util.Collection;
 import java.util.Iterator;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.beans.metadata.spi.ValueMetaData;
@@ -33,17 +36,38 @@
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.util.JBossObject;
 import org.jboss.util.JBossStringBuilder;
+import org.jboss.xb.annotations.JBossXmlNoElements;
+import org.jboss.xb.annotations.JBossXmlChildren;
+import org.jboss.xb.annotations.JBossXmlChild;
+import org.jboss.xb.annotations.JBossXmlChildWildcard;
 
 /**
  * Collection metadata.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
+ at JBossXmlNoElements
+ at JBossXmlChildren
+({
+   @JBossXmlChild(name="array", type=AbstractArrayMetaData.class),
+   @JBossXmlChild(name="collection", type=AbstractCollectionMetaData.class),
+   @JBossXmlChild(name="inject", type=AbstractInjectionValueMetaData.class),
+   @JBossXmlChild(name="list", type=AbstractListMetaData.class),
+   @JBossXmlChild(name="map", type=AbstractMapMetaData.class),
+   @JBossXmlChild(name="null", type=AbstractValueMetaData.class),
+   @JBossXmlChild(name="set", type=AbstractSetMetaData.class),
+   @JBossXmlChild(name="this", type=ThisValueMetaData.class),
+   @JBossXmlChild(name="value", type=StringValueMetaData.class),
+   @JBossXmlChild(name="value-factory", type=AbstractValueFactoryMetaData.class)
+})
+ at JBossXmlChildWildcard(wrapper=AbstractValueMetaData.class, property="value")
 public class AbstractCollectionMetaData extends AbstractTypeMetaData
    implements Collection<MetaDataVisitorNode>, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /** The collection */
    protected ArrayList<MetaDataVisitorNode> collection = new ArrayList<MetaDataVisitorNode>();
@@ -73,6 +97,7 @@
     * 
     * @param elementType the element type
     */
+   @XmlAttribute(name="elementClass")
    public void setElementType(String elementType)
    {
       this.elementType = elementType;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -25,6 +25,12 @@
 import java.util.List;
 import java.util.Set;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.metadata.plugins.builder.MutableParameterizedMetaData;
 import org.jboss.beans.metadata.spi.ConstructorMetaData;
@@ -41,17 +47,20 @@
 import org.jboss.reflect.spi.TypeInfo;
 import org.jboss.util.JBossObject;
 import org.jboss.util.JBossStringBuilder;
+import org.jboss.managed.api.annotation.ManagementProperty;
 
 /**
  * Metadata for construction.
  *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType(propOrder={"annotations", "factory", "parameters", "value"})
 public class AbstractConstructorMetaData extends AbstractFeatureMetaData
    implements ConstructorMetaData, MutableParameterizedMetaData, ValueMetaDataAware, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /**
     * The paramaters List<ParameterMetaData>
@@ -90,6 +99,7 @@
     *
     * @param parameters List<ParameterMetaData>
     */
+   @XmlElement(name="parameter", type=AbstractParameterMetaData.class)
    public void setParameters(List<ParameterMetaData> parameters)
    {
       this.parameters = parameters;
@@ -101,19 +111,50 @@
     *
     * @param value the value
     */
+   @XmlElements
+   ({
+      @XmlElement(name="array", type=AbstractArrayMetaData.class),
+      @XmlElement(name="collection", type=AbstractCollectionMetaData.class),
+      @XmlElement(name="list", type=AbstractListMetaData.class),
+      @XmlElement(name="map", type=AbstractMapMetaData.class),
+      @XmlElement(name="set", type=AbstractSetMetaData.class),
+      @XmlElement(name="value", type=StringValueMetaData.class),
+      @XmlElement(name="value-factory", type=AbstractValueFactoryMetaData.class)
+   })
    public void setValue(ValueMetaData value)
    {
       this.value = value;
       flushJBossObjectCache();
    }
 
+   @XmlAnyElement
+   @ManagementProperty(ignored = true)
+   public void setValueObject(Object value)
+   {
+      if (value == null)
+         setValue(null);
+      else if (value instanceof ValueMetaData)
+         setValue((ValueMetaData) value);
+      else
+         setValue(new AbstractValueMetaData(value));
+   }
+
    /**
     * Set the factory
     *
     * @param factory the factory
     */
+   @XmlElement(name="factory", type=AbstractDependencyValueMetaData.class)
    public void setFactory(ValueMetaData factory)
    {
+      // HACK to have wildcard factories
+      if (factory != null && factory instanceof AbstractDependencyValueMetaData)
+      {
+         Object underlying = factory.getUnderlyingValue();
+         if (underlying != null && underlying instanceof ValueMetaData)
+            factory = (ValueMetaData) underlying;
+      }
+
       this.factory = factory;
       flushJBossObjectCache();
    }
@@ -123,6 +164,7 @@
     *
     * @param name the factory class name
     */
+   @XmlAttribute(name="factoryClass")
    public void setFactoryClass(String name)
    {
       this.factoryClassName = name;
@@ -134,6 +176,7 @@
     *
     * @param name the factory method
     */
+   @XmlAttribute(name="factoryMethod")
    public void setFactoryMethod(String name)
    {
       this.factoryMethod = name;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDemandMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDemandMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDemandMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -24,6 +24,10 @@
 import java.io.Serializable;
 import java.util.Iterator;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlValue;
+
 import org.jboss.beans.metadata.spi.DemandMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
@@ -42,13 +46,15 @@
 /**
  * A demand.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
 public class AbstractDemandMetaData extends JBossObject
    implements DemandMetaData, Serializable
 {
-   private static final long serialVersionUID = 2L;
+   private static final long serialVersionUID = 3L;
 
    /** The demand */
    protected Object demand;
@@ -81,6 +87,7 @@
     * 
     * @param whenRequired when the dependecy is required
     */
+   @XmlAttribute(name="state")
    public void setWhenRequired(ControllerState whenRequired)
    {
       this.whenRequired = whenRequired;
@@ -92,6 +99,7 @@
     * 
     * @param demand the demand
     */
+   @XmlValue
    public void setDemand(Object demand)
    {
       this.demand = demand;
@@ -123,6 +131,7 @@
     *
     * @param transformer the transformer class name
     */
+   @XmlAttribute
    public void setTransformer(String transformer)
    {
       this.transformer = transformer;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -24,6 +24,9 @@
 import java.io.Serializable;
 import java.util.Iterator;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
 import org.jboss.beans.metadata.spi.DependencyMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
@@ -38,9 +41,11 @@
 /**
  * A dependency.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
 public class AbstractDependencyMetaData extends JBossObject
    implements DependencyMetaData, Serializable
 {
@@ -71,6 +76,7 @@
     * 
     * @param dependency the dependency
     */
+   @XmlValue
    public void setDependency(Object dependency)
    {
       this.dependency = dependency;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -21,7 +21,12 @@
 */
 package org.jboss.beans.metadata.plugins;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
+import org.jboss.beans.metadata.spi.ValueMetaData;
 import org.jboss.dependency.plugins.AbstractDependencyItem;
 import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerContext;
@@ -31,16 +36,20 @@
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.reflect.spi.TypeInfo;
 import org.jboss.util.JBossStringBuilder;
+import org.jboss.xb.annotations.JBossXmlAttribute;
+import org.jboss.managed.api.annotation.ManagementProperty;
 
 /**
  * Dependency value.
  *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
 public class AbstractDependencyValueMetaData extends AbstractValueMetaData
 {
-   private static final long serialVersionUID = 2L;
+   private static final long serialVersionUID = 3L;
 
    /**
     * The context
@@ -106,6 +115,7 @@
     *
     * @param property the property name
     */
+   @XmlAttribute
    public void setProperty(String property)
    {
       this.property = property;
@@ -116,6 +126,7 @@
     *
     * @param whenRequiredState the when required state or null if it uses current context state
     */
+   @XmlAttribute(name="whenRequired")
    public void setWhenRequiredState(ControllerState whenRequiredState)
    {
       this.whenRequiredState = whenRequiredState;
@@ -132,6 +143,7 @@
     *
     * @param dependentState the required state or null if it must be in the registry
     */
+   @XmlAttribute(name="state")
    public void setDependentState(ControllerState dependentState)
    {
       this.dependentState = dependentState;
@@ -143,6 +155,25 @@
       return dependentState;
    }
 
+   @XmlAttribute(name="bean")
+   @JBossXmlAttribute(type=String.class)
+   public void setValue(Object value)
+   {
+      super.setValue(value);
+   }
+
+   @XmlAnyElement
+   @ManagementProperty(ignored = true)
+   public void setValueObject(Object value)
+   {
+      if (value == null)
+         setValue(null);
+      else if (value instanceof ValueMetaData)
+         setValue(value);
+      else
+         setValue(new AbstractValueMetaData(value));
+   }
+
    protected boolean isLookupValid(ControllerContext lookup)
    {
       return (lookup != null);

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -25,6 +25,8 @@
 import java.util.Iterator;
 import java.util.Set;
 
+import javax.xml.bind.annotation.XmlElement;
+
 import org.jboss.beans.metadata.spi.AnnotationMetaData;
 import org.jboss.beans.metadata.spi.FeatureMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
@@ -44,7 +46,7 @@
 public abstract class AbstractFeatureMetaData extends JBossObject
    implements FeatureMetaData, TypeProvider, Serializable
 {
-   private static final long serialVersionUID = 1;
+   private static final long serialVersionUID = 2L;
 
    /** The description */
    protected String description;
@@ -75,6 +77,7 @@
     * 
     * @param annotations Set<AnnotationMetaData>
     */
+   @XmlElement(name="annotation", type=AbstractAnnotationMetaData.class)
    public void setAnnotations(Set<AnnotationMetaData> annotations)
    {
       this.annotations = annotations;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -23,6 +23,9 @@
 
 import java.util.List;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.metadata.spi.AutowireType;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
@@ -41,9 +44,10 @@
  *
  * @author <a href="ales.justin at gmail.com">Ales Justin</a>
  */
+ at XmlType
 public class AbstractInjectionValueMetaData extends AbstractDependencyValueMetaData
 {
-   private static final long serialVersionUID = 2L;
+   private static final long serialVersionUID = 3L;
 
    protected AutowireType injectionType = AutowireType.BY_CLASS;
 
@@ -89,6 +93,7 @@
       return injectionType;
    }
 
+   @XmlAttribute(name="type")
    public void setInjectionType(AutowireType injectionType)
    {
       this.injectionType = injectionType;
@@ -99,6 +104,7 @@
       return injectionOption;
    }
 
+   @XmlAttribute(name="option")
    public void setInjectionOption(InjectionOption injectionOption)
    {
       this.injectionOption = injectionOption;
@@ -109,6 +115,7 @@
       return fromContext;
    }
 
+   @XmlAttribute
    public void setFromContext(FromContext fromContext)
    {
       this.fromContext = fromContext;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -23,6 +23,9 @@
 
 import java.io.Serializable;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.metadata.spi.InstallMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.dependency.plugins.AbstractDependencyItem;
@@ -38,13 +41,15 @@
 /**
  * Metadata for installation.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType(propOrder={"annotations", "parameters"})
 public class AbstractInstallMetaData extends AbstractLifecycleMetaData
    implements InstallMetaData, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /** The bean name */
    protected String bean;
@@ -70,6 +75,7 @@
     * 
     * @param bean the bean
     */
+   @XmlAttribute
    public void setBean(String bean)
    {
       this.bean = bean;
@@ -80,6 +86,7 @@
     * 
     * @param dependentState the required state or null if it must be in the registry
     */
+   @XmlAttribute(name="state")
    public void setDependentState(ControllerState dependentState)
    {
       this.dependentState = dependentState;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -26,6 +26,11 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
 
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.LazyMetaData;
@@ -36,15 +41,19 @@
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.xb.annotations.JBossXmlSchema;
 
 /**
  * Lazy metadata.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
+ at JBossXmlSchema(namespace="urn:jboss:bean-deployer:2.0", elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="lazy")
+ at XmlType(propOrder={"interfaces"})
 public class AbstractLazyMetaData extends AbstractBeanMetaData implements LazyMetaData
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    private String beanName;
    private boolean exposeClass;
@@ -112,6 +121,7 @@
       return beanName;
    }
 
+   @XmlAttribute(name="bean")
    public void setBeanName(String beanName)
    {
       this.beanName = beanName;
@@ -124,6 +134,7 @@
       return exposeClass;
    }
 
+   @XmlAttribute
    public void setExposeClass(boolean exposeClass)
    {
       this.exposeClass = exposeClass;
@@ -134,6 +145,7 @@
       return interfaces;
    }
 
+   @XmlElement(name="interface", type=String.class)
    public void setInterfaces(Set<String> interfaces)
    {
       this.interfaces = interfaces;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -25,6 +25,10 @@
 import java.util.List;
 import java.util.Set;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
 import org.jboss.beans.metadata.plugins.builder.MutableParameterizedMetaData;
 import org.jboss.beans.metadata.spi.LifecycleMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
@@ -42,13 +46,15 @@
 /**
  * Metadata for lifecycle.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType(propOrder={"annotations", "parameters"})
 public class AbstractLifecycleMetaData extends AbstractFeatureMetaData
    implements LifecycleMetaData, MutableParameterizedMetaData, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /** The state */
    protected ControllerState state;
@@ -97,6 +103,7 @@
     * 
     * @param name the factory method
     */
+   @XmlAttribute(name="method")
    public void setMethodName(String name)
    {
       this.methodName = name;
@@ -113,6 +120,7 @@
     *
     * @param ignored the ignored
     */
+   @XmlAttribute
    public void setIgnored(boolean ignored)
    {
       this.ignored = ignored;
@@ -128,6 +136,7 @@
     * 
     * @param parameters List<ParameterMetaData>
     */
+   @XmlElement(name="parameter", type=AbstractParameterMetaData.class)
    public void setParameters(List<ParameterMetaData> parameters)
    {
       this.parameters = parameters;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractListMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractListMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractListMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -26,18 +26,41 @@
 import java.util.List;
 import java.util.ListIterator;
 
+import javax.xml.bind.annotation.XmlType;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.xb.annotations.JBossXmlNoElements;
+import org.jboss.xb.annotations.JBossXmlChildren;
+import org.jboss.xb.annotations.JBossXmlChild;
+import org.jboss.xb.annotations.JBossXmlChildWildcard;
 
 /**
  * List metadata.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
+ at JBossXmlNoElements
+ at JBossXmlChildren
+({
+   @JBossXmlChild(name="array", type=AbstractArrayMetaData.class),
+   @JBossXmlChild(name="collection", type=AbstractCollectionMetaData.class),
+   @JBossXmlChild(name="inject", type=AbstractInjectionValueMetaData.class),
+   @JBossXmlChild(name="list", type=AbstractListMetaData.class),
+   @JBossXmlChild(name="map", type=AbstractMapMetaData.class),
+   @JBossXmlChild(name="null", type=AbstractValueMetaData.class),
+   @JBossXmlChild(name="set", type=AbstractSetMetaData.class),
+   @JBossXmlChild(name="this", type=ThisValueMetaData.class),
+   @JBossXmlChild(name="value", type=StringValueMetaData.class),
+   @JBossXmlChild(name="value-factory", type=AbstractValueFactoryMetaData.class)
+})
+ at JBossXmlChildWildcard(wrapper=AbstractValueMetaData.class, property="value")
 public class AbstractListMetaData extends AbstractCollectionMetaData
    implements List<MetaDataVisitorNode>, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /**
     * Create a new list value
@@ -95,5 +118,4 @@
    {
       return collection.subList(fromIndex, toIndex);
    }
-
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -29,22 +29,35 @@
 import java.util.Map;
 import java.util.Set;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.xb.annotations.JBossXmlNoElements;
+import org.jboss.xb.annotations.JBossXmlChildren;
+import org.jboss.xb.annotations.JBossXmlChild;
 
 /**
  * Map metadata.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
+ at JBossXmlNoElements
+ at JBossXmlChildren
+({
+   @JBossXmlChild(name="entry", type=MapEntry.class)
+})
 public class AbstractMapMetaData extends AbstractTypeMetaData
    implements Map<MetaDataVisitorNode, MetaDataVisitorNode>, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /** The map */
    private HashMap<MetaDataVisitorNode, MetaDataVisitorNode> map = new HashMap<MetaDataVisitorNode, MetaDataVisitorNode>();
@@ -77,6 +90,7 @@
     * 
     * @param keyType the key type
     */
+   @XmlAttribute(name="keyClass")
    public void setKeyType(String keyType)
    {
       this.keyType = keyType;
@@ -97,6 +111,7 @@
     * 
     * @param valueType the value type
     */
+   @XmlAttribute(name="valueClass")
    public void setValueType(String valueType)
    {
       this.valueType = valueType;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractNamedAliasMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractNamedAliasMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractNamedAliasMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -21,6 +21,9 @@
 */
 package org.jboss.beans.metadata.plugins;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.NamedAliasMetaData;
 import org.jboss.util.JBossStringBuilder;
@@ -30,10 +33,11 @@
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
+ at XmlType
 public class AbstractNamedAliasMetaData extends AbstractAliasMetaData implements NamedAliasMetaData
 {
    /** The serialVersionUID */
-   private static final long serialVersionUID = -6917262743964306852L;
+   private static final long serialVersionUID = 2L;
    
    /** The name */
    protected Object name;
@@ -51,6 +55,7 @@
       return name;
    }
 
+   @XmlAttribute(required = true)
    public void setName(Object name)
    {
       this.name = name;
@@ -81,5 +86,4 @@
       AbstractNamedAliasMetaData amd = (AbstractNamedAliasMetaData)object;
       return name.equals(amd.name);
    }
-
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -25,6 +25,13 @@
 import java.util.Set;
 import java.util.Stack;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlValue;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.beans.metadata.spi.ParameterMetaData;
@@ -35,17 +42,20 @@
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.util.JBossStringBuilder;
 import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.managed.api.annotation.ManagementProperty;
 
 /**
  * Metadata for a parameter.
  *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType(propOrder={"annotations", "value"})
 public class AbstractParameterMetaData extends AbstractFeatureMetaData
    implements ParameterMetaData, ValueMetaDataAware, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /**
     * The parameter type
@@ -131,6 +141,7 @@
       return type;
    }
 
+   @XmlAttribute(name="class")
    public void setType(String type)
    {
       this.type = type;
@@ -152,12 +163,50 @@
       this.index = index;
    }
 
+   @XmlElements
+   ({
+      @XmlElement(name="array", type=AbstractArrayMetaData.class),
+      @XmlElement(name="collection", type=AbstractCollectionMetaData.class),
+      @XmlElement(name="inject", type=AbstractInjectionValueMetaData.class),
+      @XmlElement(name="list", type=AbstractListMetaData.class),
+      @XmlElement(name="map", type=AbstractMapMetaData.class),
+      @XmlElement(name="set", type=AbstractSetMetaData.class),
+      @XmlElement(name="this", type=ThisValueMetaData.class),
+      @XmlElement(name="value", type=StringValueMetaData.class),
+      @XmlElement(name="value-factory", type=AbstractValueFactoryMetaData.class)
+   })
    public void setValue(ValueMetaData value)
    {
       this.value = value;
       flushJBossObjectCache();
    }
 
+   @XmlAnyElement
+   @ManagementProperty(ignored = true)
+   public void setValueObject(Object value)
+   {
+      if (value == null)
+         setValue(null);
+      else if (value instanceof ValueMetaData)
+         setValue((ValueMetaData) value);
+      else
+         setValue(new AbstractValueMetaData(value));
+   }
+
+   @XmlValue
+   @ManagementProperty(ignored = true)
+   public void setValueString(String value)
+   {
+      if (value == null)
+         setValue(null);
+      else
+      {
+         StringValueMetaData stringValue = new StringValueMetaData(value);
+         stringValue.setType(getType());
+         setValue(stringValue);
+      }
+   }
+
    protected void addChildren(Set<MetaDataVisitorNode> children)
    {
       super.addChildren(children);

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -24,6 +24,13 @@
 import java.io.Serializable;
 import java.util.Set;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlValue;
+
 import org.jboss.beans.info.spi.PropertyInfo;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
@@ -35,17 +42,20 @@
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.reflect.spi.TypeInfo;
 import org.jboss.util.JBossStringBuilder;
+import org.jboss.managed.api.annotation.ManagementProperty;
 
 /**
  * Metadata for a property.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType(propOrder={"annotations", "value"})
 public class AbstractPropertyMetaData extends AbstractFeatureMetaData
    implements PropertyMetaData, ValueMetaDataAware, TypeProvider, Serializable
 {
-   private static final long serialVersionUID = 2L;
+   private static final long serialVersionUID = 3L;
 
    /** The property name */
    protected String name;
@@ -124,6 +134,7 @@
     * 
     * @param name the name
     */
+   @XmlAttribute
    public void setName(String name)
    {
       this.name = name;
@@ -144,6 +155,7 @@
       return preInstantiate;
    }
 
+   @XmlAttribute
    public void setPreInstantiate(boolean preInstantiate)
    {
       this.preInstantiate = preInstantiate;
@@ -159,12 +171,101 @@
     * 
     * @param value the value
     */
+   @XmlElements
+   ({
+      @XmlElement(name="array", type=AbstractArrayMetaData.class),
+      @XmlElement(name="collection", type=AbstractCollectionMetaData.class),
+      @XmlElement(name="inject", type=AbstractInjectionValueMetaData.class),
+      @XmlElement(name="list", type=AbstractListMetaData.class),
+      @XmlElement(name="map", type=AbstractMapMetaData.class),
+      @XmlElement(name="set", type=AbstractSetMetaData.class),
+      @XmlElement(name="this", type=ThisValueMetaData.class),
+      @XmlElement(name="value", type=StringValueMetaData.class),
+      @XmlElement(name="value-factory", type=AbstractValueFactoryMetaData.class)
+   })
    public void setValue(ValueMetaData value)
    {
       this.value = value;
       flushJBossObjectCache();
    }
 
+   @XmlAnyElement
+   @ManagementProperty(ignored = true)
+   public void setValueObject(Object value)
+   {
+      if (value == null)
+         setValue(null);
+      else if (value instanceof ValueMetaData)
+         setValue((ValueMetaData) value);
+      else
+         setValue(new AbstractValueMetaData(value));
+   }
+
+   @XmlValue
+   @ManagementProperty(ignored = true)
+   public void setValueString(String value)
+   {
+      if (value == null)
+         setValue(null);
+      else
+      {
+         ValueMetaData valueMetaData = getValue();
+         if (valueMetaData instanceof StringValueMetaData)
+         {
+            ((StringValueMetaData) valueMetaData).setValue(value);
+            return;
+         }
+         StringValueMetaData stringValue = new StringValueMetaData(value);
+         stringValue.setType(getType());
+         setValue(stringValue);
+      }
+   }
+
+   @XmlAttribute(name="class")
+   @ManagementProperty(ignored = true)
+   public void setPropertyType(String type)
+   {
+      ValueMetaData valueMetaData = getValue();
+      if (valueMetaData != null && valueMetaData instanceof StringValueMetaData == false)
+         throw new IllegalArgumentException("Property is not a string");
+      if (valueMetaData == null)
+      {
+         valueMetaData = new StringValueMetaData();
+         setValue(valueMetaData);
+      }
+      ((StringValueMetaData) valueMetaData).setType(type);
+   }
+
+   @XmlAttribute(name="replace")
+   @ManagementProperty(ignored = true)
+   public void setPropertyReplace(boolean replace)
+   {
+      ValueMetaData valueMetaData = getValue();
+      if (valueMetaData != null && valueMetaData instanceof StringValueMetaData == false)
+         throw new IllegalArgumentException("Property is not a string");
+      if (valueMetaData == null)
+      {
+         valueMetaData = new StringValueMetaData();
+         setValue(valueMetaData);
+      }
+      ((StringValueMetaData) valueMetaData).setReplace(replace);
+   }
+
+   @XmlAttribute(name="trim")
+   @ManagementProperty(ignored = true)
+   public void setPropertyTrim(boolean trim)
+   {
+      ValueMetaData valueMetaData = getValue();
+      if (valueMetaData != null && valueMetaData instanceof StringValueMetaData == false)
+         throw new IllegalArgumentException("Property is not a string");
+      if (valueMetaData == null)
+      {
+         valueMetaData = new StringValueMetaData();
+         setValue(valueMetaData);
+      }
+      ((StringValueMetaData) valueMetaData).setTrim(trim);
+   }
+
    public void initialVisit(MetaDataVisitor visitor)
    {
       visitor.setContextState(ControllerState.CONFIGURED);

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSetMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSetMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSetMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -26,18 +26,41 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.xml.bind.annotation.XmlType;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.xb.annotations.JBossXmlNoElements;
+import org.jboss.xb.annotations.JBossXmlChildren;
+import org.jboss.xb.annotations.JBossXmlChild;
+import org.jboss.xb.annotations.JBossXmlChildWildcard;
 
 /**
  * Set metadata.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
+ at JBossXmlNoElements
+ at JBossXmlChildren
+({
+   @JBossXmlChild(name="array", type=AbstractArrayMetaData.class),
+   @JBossXmlChild(name="collection", type=AbstractCollectionMetaData.class),
+   @JBossXmlChild(name="inject", type=AbstractInjectionValueMetaData.class),
+   @JBossXmlChild(name="list", type=AbstractListMetaData.class),
+   @JBossXmlChild(name="map", type=AbstractMapMetaData.class),
+   @JBossXmlChild(name="null", type=AbstractValueMetaData.class),
+   @JBossXmlChild(name="set", type=AbstractSetMetaData.class),
+   @JBossXmlChild(name="this", type=ThisValueMetaData.class),
+   @JBossXmlChild(name="value", type=StringValueMetaData.class),
+   @JBossXmlChild(name="value-factory", type=AbstractValueFactoryMetaData.class)
+})
+ at JBossXmlChildWildcard(wrapper=AbstractValueMetaData.class, property="value")
 public class AbstractSetMetaData extends AbstractCollectionMetaData
    implements Set<MetaDataVisitorNode>, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /**
     * Create a new set value

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSupplyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSupplyMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSupplyMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -25,6 +25,10 @@
 import java.io.Serializable;
 import java.util.Iterator;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.beans.metadata.spi.SupplyMetaData;
@@ -37,13 +41,15 @@
 /**
  * A supply.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
 public class AbstractSupplyMetaData extends JBossObject
    implements SupplyMetaData, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    private static Logger log = Logger.getLogger(AbstractSupplyMetaData.class);
 
@@ -87,6 +93,7 @@
     * 
     * @param supply the supply
     */
+   @XmlValue
    public void setSupply(Object supply)
    {
       this.supply = supply;
@@ -108,6 +115,7 @@
     *
     * @param type the type
     */
+   @XmlAttribute(name="class")
    public void setType(String type)
    {
       this.type = type;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -24,6 +24,8 @@
 import java.io.Serializable;
 import java.util.Stack;
 
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.info.spi.PropertyInfo;
 import org.jboss.beans.metadata.spi.BeanMetaData;
@@ -52,7 +54,7 @@
 public abstract class AbstractTypeMetaData extends AbstractValueMetaData
    implements Serializable
 {
-   private static final long serialVersionUID = 2L;
+   private static final long serialVersionUID = 3L;
 
    /**
     * The type
@@ -101,6 +103,7 @@
     *
     * @param type the type
     */
+   @XmlAttribute(name="class")
    public void setType(String type)
    {
       this.type = type;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -23,7 +23,12 @@
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.ArrayList;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.jboss.beans.metadata.plugins.builder.MutableParameterizedMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
@@ -45,10 +50,12 @@
  * ValueFactory value.
  *
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
+ at XmlType
 public class AbstractValueFactoryMetaData extends AbstractValueMetaData implements MutableParameterizedMetaData
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /**
     * The context
@@ -125,6 +132,12 @@
       this.defaultValue = defaultValue;
    }
 
+   @XmlAttribute(name="bean", required = true)
+   public void setValue(Object value)
+   {
+      super.setValue(value);
+   }
+
    /**
     * Get the method
     *
@@ -140,6 +153,7 @@
     *
     * @param method the property name
     */
+   @XmlAttribute(required = true)
    public void setMethod(String method)
    {
       this.method = method;
@@ -160,6 +174,7 @@
     *
     * @param parameter the parameter
     */
+   @XmlAttribute
    public void setParameter(String parameter)
    {
       this.parameter = parameter;
@@ -170,6 +185,7 @@
     *
     * @param whenRequiredState the when required state or null if it uses current context state
     */
+   @XmlAttribute(name="whenRequired")
    public void setWhenRequiredState(ControllerState whenRequiredState)
    {
       this.whenRequiredState = whenRequiredState;
@@ -191,6 +207,7 @@
     *
     * @param dependentState the required state or null if it must be in the registry
     */
+   @XmlAttribute(name="state")
    public void setDependentState(ControllerState dependentState)
    {
       this.dependentState = dependentState;
@@ -222,6 +239,7 @@
     *
     * @param defaultValue default value
     */
+   @XmlAttribute(name="default")
    public void setDefaultValue(String defaultValue)
    {
       this.defaultValue = defaultValue;
@@ -242,6 +260,7 @@
     *
     * @param parameters the parameters
     */
+   @XmlElement(name="parameter", type=AbstractParameterMetaData.class)
    public void setParameters(List<ParameterMetaData> parameters)
    {
       this.parameters = parameters;
@@ -249,6 +268,16 @@
 
    public void initialVisit(MetaDataVisitor visitor)
    {
+      if (getParameter() != null && getParameters() != null)
+         throw new IllegalArgumentException("Both parameter and parameters cannot be set: " + this);
+      if (getParameter() != null)
+      {
+         List<ParameterMetaData> parameters = new ArrayList<ParameterMetaData>();
+         parameters.add(new AbstractParameterMetaData(String.class.getName(), getParameter()));
+         setParameters(parameters);
+         setParameter(null);
+      }
+
       context = visitor.getControllerContext();
       Object name = context.getName();
       Object iDependOn = getUnderlyingValue();

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -26,6 +26,8 @@
 import java.util.Iterator;
 import java.util.Stack;
 
+import javax.xml.bind.annotation.XmlType;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.beans.metadata.spi.ValueMetaData;
@@ -33,17 +35,21 @@
 import org.jboss.util.JBossObject;
 import org.jboss.util.JBossStringBuilder;
 import org.jboss.dependency.plugins.JMXObjectNameFix;
+import org.jboss.xb.annotations.JBossXmlNoElements;
 
 /**
  * Plain value.
  *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
+ at JBossXmlNoElements
 public class AbstractValueMetaData extends JBossObject
    implements ValueMetaData, TypeProvider, Serializable
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /**
     * The value

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AutowireTypeValueAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AutowireTypeValueAdapter.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AutowireTypeValueAdapter.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -0,0 +1,39 @@
+/*
+* 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.beans.metadata.plugins;
+
+import org.jboss.beans.metadata.spi.AutowireType;
+import org.jboss.xb.binding.sunday.unmarshalling.ValueAdapter;
+
+/**
+ * AutowireTypeValueAdapter.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @version $Revision: 1.1 $
+ */
+public class AutowireTypeValueAdapter implements ValueAdapter
+{
+   public Object cast(Object o, Class c)
+   {
+      return AutowireType.getInstance((String)o);
+   }
+}

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/CardinalityValueAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/CardinalityValueAdapter.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/CardinalityValueAdapter.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -0,0 +1,40 @@
+/*
+* 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.beans.metadata.plugins;
+
+import org.jboss.xb.binding.sunday.unmarshalling.ValueAdapter;
+import org.jboss.dependency.spi.Cardinality;
+
+/**
+ * CardinalityValueAdapter.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class CardinalityValueAdapter implements ValueAdapter
+{
+   public Object cast(Object o, Class c)
+   {
+      return Cardinality.toCardinality((String)o);
+   }
+}

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ControllerModeValueAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ControllerModeValueAdapter.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ControllerModeValueAdapter.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -0,0 +1,40 @@
+/*
+* 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.beans.metadata.plugins;
+
+import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.xb.binding.sunday.unmarshalling.ValueAdapter;
+
+/**
+ * ControllerModeValueAdapter.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ControllerModeValueAdapter implements ValueAdapter
+{
+   public Object cast(Object o, Class c)
+   {
+      return new ControllerMode((String)o);
+   }
+}

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ControllerStateValueAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ControllerStateValueAdapter.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ControllerStateValueAdapter.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -0,0 +1,40 @@
+/*
+* 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.beans.metadata.plugins;
+
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.xb.binding.sunday.unmarshalling.ValueAdapter;
+
+/**
+ * ControllerStateValueAdapter.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ControllerStateValueAdapter implements ValueAdapter
+{
+   public Object cast(Object o, Class c)
+   {
+      return new ControllerState((String)o);
+   }
+}

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContextValueAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContextValueAdapter.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/FromContextValueAdapter.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -0,0 +1,38 @@
+/*
+* 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.beans.metadata.plugins;
+
+import org.jboss.xb.binding.sunday.unmarshalling.ValueAdapter;
+
+/**
+ * FromContextValueAdapter.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @version $Revision: 1.1 $
+ */
+public class FromContextValueAdapter implements ValueAdapter
+{
+   public Object cast(Object o, Class c)
+   {
+      return FromContext.getInstance((String)o);
+   }
+}

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InjectionOptionValueAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InjectionOptionValueAdapter.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InjectionOptionValueAdapter.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -0,0 +1,38 @@
+/*
+* 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.beans.metadata.plugins;
+
+import org.jboss.xb.binding.sunday.unmarshalling.ValueAdapter;
+
+/**
+ * InjectionOptionValueAdapter.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ * @version $Revision: 1.1 $
+ */
+public class InjectionOptionValueAdapter implements ValueAdapter
+{
+   public Object cast(Object o, Class c)
+   {
+      return InjectionOption.getInstance((String)o);
+   }
+}

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InstallCallbackMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InstallCallbackMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InstallCallbackMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -21,6 +21,8 @@
 */
 package org.jboss.beans.metadata.plugins;
 
+import javax.xml.bind.annotation.XmlType;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.dependency.spi.CallbackItem;
 
@@ -29,16 +31,18 @@
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
+ at XmlType
 public class InstallCallbackMetaData extends AbstractCallbackMetaData
 {
    /** The serialVersionUID */
-   private static final long serialVersionUID = -8687489846562385403L;
+   private static final long serialVersionUID = 2L;
 
    public InstallCallbackMetaData()
    {
       super();
    }
 
+   @SuppressWarnings("unchecked")
    protected void addCallback(MetaDataVisitor visitor, CallbackItem callback)
    {
       visitor.addInstallCallback(callback);

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/MapEntry.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/MapEntry.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/MapEntry.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -0,0 +1,63 @@
+/*
+* 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.beans.metadata.plugins;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.beans.metadata.spi.ValueMetaData;
+
+
+/**
+ * MapEntry.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ */
+ at XmlType(propOrder= {"key", "value"})
+public class MapEntry
+{
+   /** The key */
+   private ValueMetaData key;
+
+   /** The value */
+   private ValueMetaData value;
+
+   public ValueMetaData getKey()
+   {
+      return key;
+   }
+
+   public void setKey(ValueMetaData key)
+   {
+      this.key = key;
+   }
+
+   public ValueMetaData getValue()
+   {
+      return value;
+   }
+
+   public void setValue(ValueMetaData value)
+   {
+      this.value = value;
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -21,20 +21,27 @@
 */
 package org.jboss.beans.metadata.plugins;
 
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.logging.Logger;
 import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.xb.annotations.JBossXmlNoElements;
 
 /**
  * String value.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
+ at JBossXmlNoElements
 public class StringValueMetaData extends AbstractTypeMetaData
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /** The log */
    private static final Logger log = Logger.getLogger(StringValueMetaData.class);
@@ -73,6 +80,7 @@
     * 
     * @param value the value
     */
+   @XmlValue
    public void setValue(String value)
    {
       super.setValue(value);

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ThisValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ThisValueMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ThisValueMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -21,6 +21,8 @@
 */
 package org.jboss.beans.metadata.plugins;
 
+import javax.xml.bind.annotation.XmlType;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.dependency.plugins.AbstractDependencyItem;
 import org.jboss.dependency.spi.Controller;
@@ -28,16 +30,20 @@
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.dependency.spi.DependencyItem;
 import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.xb.annotations.JBossXmlNoElements;
 
 /**
  * Dependency value.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at XmlType
+ at JBossXmlNoElements
 public class ThisValueMetaData extends AbstractValueMetaData
 {
-   private static final long serialVersionUID = 2L;
+   private static final long serialVersionUID = 3L;
 
    /** The context */
    protected transient ControllerContext context;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -26,6 +26,9 @@
 import org.jboss.reflect.spi.TypeInfo;
 
 /**
+ * The class is able to provide exact type info for
+ * contextual injection.
+ * 
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 public interface TypeProvider
@@ -42,5 +45,4 @@
     * @throws Throwable if could not determine class
     */
    TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable;
-
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/UninstallCallbackMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/UninstallCallbackMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/UninstallCallbackMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -21,6 +21,8 @@
 */
 package org.jboss.beans.metadata.plugins;
 
+import javax.xml.bind.annotation.XmlType;
+
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.dependency.spi.CallbackItem;
 
@@ -29,16 +31,18 @@
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
+ at XmlType
 public class UninstallCallbackMetaData extends AbstractCallbackMetaData
 {
    /** The serialVersionUID */
-   private static final long serialVersionUID = 1888688138196290492L;
+   private static final long serialVersionUID = 2L;
 
    public UninstallCallbackMetaData()
    {
       super();
    }
 
+   @SuppressWarnings("unchecked")
    protected void addCallback(MetaDataVisitor visitor, CallbackItem callback)
    {
       visitor.addUninstallCallback(callback);

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/factory/GenericBeanFactoryMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/factory/GenericBeanFactoryMetaData.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/factory/GenericBeanFactoryMetaData.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -27,6 +27,11 @@
 import java.util.Map;
 import java.util.Set;
 
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractConstructorMetaData;
 import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
@@ -34,19 +39,25 @@
 import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
 import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
 import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
+import org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData;
 import org.jboss.beans.metadata.spi.*;
 import org.jboss.kernel.plugins.bootstrap.basic.KernelConstants;
 import org.jboss.kernel.spi.config.KernelConfigurator;
+import org.jboss.xb.annotations.JBossXmlSchema;
 
 /**
  * GenericBeanFactoryMetaData.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
+ at JBossXmlSchema(namespace="urn:jboss:bean-deployer:2.0", elementFormDefault= XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="beanfactory")
+ at XmlType(propOrder={"aliases", "annotations", "classLoader", "constructor", "properties", "create", "start", "depends", "demands", "supplies", "installs", "uninstalls", "installCallbacks", "uninstallCallbacks"})
 public class GenericBeanFactoryMetaData extends AbstractBeanMetaData
 {
-   private static final long serialVersionUID = 1L;
+   private static final long serialVersionUID = 2L;
 
    /**
     * Create a new GenericBeanFactoryMetaData.
@@ -113,6 +124,7 @@
       properties.add(new AbstractPropertyMetaData("bean", new AbstractValueMetaData(beanClass)));
    }
    
+   @XmlElement(name="classloader", type=AbstractClassLoaderMetaData.class)
    public void setClassLoader(ClassLoaderMetaData classLoader)
    {
       super.setClassLoader(classLoader);

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/package-info.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/package-info.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/package-info.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -0,0 +1,39 @@
+/*
+* 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.
+*/
+ at JBossXmlAdaptedTypes
+({
+   @JBossXmlAdaptedType(type=Cardinality.class, valueAdapter=CardinalityValueAdapter.class),
+   @JBossXmlAdaptedType(type=ControllerMode.class, valueAdapter=ControllerModeValueAdapter.class),
+   @JBossXmlAdaptedType(type=ControllerState.class, valueAdapter=ControllerStateValueAdapter.class),
+   @JBossXmlAdaptedType(type=FromContext.class, valueAdapter=FromContextValueAdapter.class),
+   @JBossXmlAdaptedType(type=InjectionOption.class, valueAdapter=InjectionOptionValueAdapter.class),
+   @JBossXmlAdaptedType(type=AutowireType.class, valueAdapter=AutowireTypeValueAdapter.class)
+})
+package org.jboss.beans.metadata.plugins;
+
+import org.jboss.xb.annotations.JBossXmlAdaptedType;
+import org.jboss.xb.annotations.JBossXmlAdaptedTypes;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.dependency.spi.Cardinality;
+import org.jboss.beans.metadata.spi.AutowireType;
+

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/AbstractKernelDeployment.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/AbstractKernelDeployment.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/AbstractKernelDeployment.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -28,9 +28,22 @@
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
 
+import org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData;
+import org.jboss.beans.metadata.plugins.AbstractLazyMetaData;
+import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
+import org.jboss.beans.metadata.plugins.AbstractNamedAliasMetaData;
 import org.jboss.beans.metadata.plugins.MutableLifecycleHolder;
+import org.jboss.beans.metadata.plugins.factory.GenericBeanFactoryMetaData;
 import org.jboss.beans.metadata.spi.AnnotationMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
@@ -42,21 +55,27 @@
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperties;
 import org.jboss.managed.api.annotation.ManagementProperty;
 import org.jboss.util.JBossObject;
 import org.jboss.util.JBossStringBuilder;
+import org.jboss.xb.annotations.JBossXmlSchema;
 
 /**
  * An abstract kernel deployment.
  * 
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
- at ManagementObject
+ at ManagementObject(properties = ManagementProperties.EXPLICIT) // TODO - explicitly add props we want to manage 
+ at JBossXmlSchema(namespace="urn:jboss:bean-deployer:2.0", elementFormDefault= XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="deployment")
+ at XmlType(propOrder={"annotations", "classLoader", "beanFactories", "create", "start", "stop", "destroy", "aliases"})
 public class AbstractKernelDeployment extends JBossObject
    implements KernelDeployment, MutableLifecycleHolder, Serializable
 {
-   private static final long serialVersionUID = 2l;
+   private static final long serialVersionUID = 3l;
 
    /** The name of the deployment */
    protected String name;
@@ -123,6 +142,13 @@
     * @param beanFactories a List<BeanMetaDataFactory>.
     */
    @ManagementProperty(managed=true)
+   @XmlElements
+   ({
+      @XmlElement(name="bean", type=AbstractBeanMetaData.class),
+      @XmlElement(name="beanfactory", type=GenericBeanFactoryMetaData.class),
+      @XmlElement(name="lazy", type=AbstractLazyMetaData.class)
+   })
+   @XmlAnyElement
    public void setBeanFactories(List<BeanMetaDataFactory> beanFactories)
    {
       this.beanFactories = beanFactories;
@@ -134,6 +160,7 @@
       return name;
    }
 
+   @XmlAttribute
    public void setName(String name)
    {
       this.name = name;
@@ -229,11 +256,13 @@
       return scoped;
    }
 
+   @XmlAttribute
    public void setScoped(Boolean scoped)
    {
       this.scoped = scoped;
    }
 
+   @XmlElement(name="annotation", type= AbstractAnnotationMetaData.class)
    public Set<AnnotationMetaData> getAnnotations()
    {
       return annotations;
@@ -259,6 +288,7 @@
     * 
     * @param classLoader the classloader metadata
     */
+   @XmlElement(name="classloader", type=AbstractClassLoaderMetaData.class)
    public void setClassLoader(ClassLoaderMetaData classLoader)
    {
       this.classLoader = classLoader;
@@ -269,6 +299,7 @@
       return create;
    }
 
+   @XmlElement(name="create", type=AbstractLifecycleMetaData.class)
    public void setCreate(LifecycleMetaData create)
    {
       create.setState(ControllerState.CREATE);
@@ -280,6 +311,7 @@
       return start;
    }
 
+   @XmlElement(name="start", type=AbstractLifecycleMetaData.class)
    public void setStart(LifecycleMetaData start)
    {
       start.setState(ControllerState.START);
@@ -291,6 +323,7 @@
       return stop;
    }
 
+   @XmlElement(name="stop", type=AbstractLifecycleMetaData.class)
    public void setStop(LifecycleMetaData stop)
    {
       stop.setState(ControllerState.START);
@@ -302,6 +335,7 @@
       return destroy;
    }
 
+   @XmlElement(name="destroy", type=AbstractLifecycleMetaData.class)
    public void setDestroy(LifecycleMetaData destroy)
    {
       destroy.setState(ControllerState.CREATE);
@@ -313,6 +347,7 @@
       return aliases;
    }
 
+   @XmlElement(name="alias", type=AbstractNamedAliasMetaData.class)
    public void setAliases(Set<NamedAliasMetaData> aliases)
    {
       this.aliases = aliases;
@@ -323,6 +358,7 @@
       return mode;
    }
 
+   @XmlAttribute
    public void setMode(ControllerMode mode)
    {
       this.mode = mode;
@@ -349,5 +385,4 @@
       in.defaultReadObject();
       installedContexts = new CopyOnWriteArrayList<KernelControllerContext>();
    }
-
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/ValueFactoryHandler.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/ValueFactoryHandler.java	2008-01-04 21:41:24 UTC (rev 68635)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/ValueFactoryHandler.java	2008-01-05 00:00:54 UTC (rev 68636)
@@ -82,6 +82,7 @@
          List<ParameterMetaData> parameters = new ArrayList<ParameterMetaData>();
          parameters.add(new AbstractParameterMetaData(String.class.getName(), vf.getParameter()));
          vf.setParameters(parameters);
+         vf.setParameter(null);
       }
       return vf;
    }




More information about the jboss-cvs-commits mailing list