[jboss-cvs] JBossAS SVN: r79928 - in projects/jboss-man/trunk/managed: src/main/java/org/jboss/managed/api and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Oct 22 12:31:24 EDT 2008


Author: scott.stark at jboss.org
Date: 2008-10-22 12:31:23 -0400 (Wed, 22 Oct 2008)
New Revision: 79928

Added:
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/MutableManagedObject.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ApplicationManagedSecurityMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DBMSMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DataSourceConnectionPropertyMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DataSourceDeploymentMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/LocalDataSourceDeploymentMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionEmptyContentAdapter.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryDeploymentGroup.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryDeploymentMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryPropertyMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryTransactionSupportMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NoTxConnectionFactoryDeploymentMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NoTxDataSourceDeploymentMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NonXADataSourceDeploymentMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityDomainApplicationManagedMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityDomainMetaData.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityMetaData.java
Modified:
   projects/jboss-man/trunk/managed/.classpath
   projects/jboss-man/trunk/managed/pom.xml
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedCommon.java
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedObject.java
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/factory/ManagedObjectFactory.java
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DelegateManagedCommonImpl.java
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DelegateManagedObjectImpl.java
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedObjectImpl.java
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractManagedObjectFactory.java
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractManagedObjectPopulator.java
   projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/spi/factory/ManagedObjectPopulator.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/amof/TestMOP.java
   projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/AbstractManagedObjectFactoryUnitTestCase.java
Log:
JBMAN-23 Need MutableManagedObject interface extension of ManagedObject
JBMAN-25 Drop the Serializable requirement   JBMAN-26 Add a parent notion to ManagedObject/ManagedComponent


Modified: projects/jboss-man/trunk/managed/.classpath
===================================================================
--- projects/jboss-man/trunk/managed/.classpath	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/.classpath	2008-10-22 16:31:23 UTC (rev 79928)
@@ -1,20 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/test/java" output="target/tests-classes"/>
-  <classpathentry kind="src" path="src/test/resources" output="target/tests-classes" excluding="**/*.java"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.8.GA/jboss-common-core-2.2.8.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.8.GA/jboss-common-core-2.2.8.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA-sources.jar"/>
-  <classpathentry kind="src" path="/jboss-metatype"/>
-  <classpathentry kind="var" path="M2_REPO/jboss/profiler/jvmti/jboss-profiler-jvmti/1.0.0.CR5/jboss-profiler-jvmti-1.0.0.CR5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-reflect/2.0.0.CR1/jboss-reflect-2.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/jboss-reflect/2.0.0.CR1/jboss-reflect-2.0.0.CR1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/4.4/junit-4.4.jar" sourcepath="M2_REPO/junit/junit/4.4/junit-4.4-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
-</classpath>
\ No newline at end of file
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" output="target/tests-classes" path="src/test/java"/>
+	<classpathentry excluding="**/*.java" kind="src" output="target/tests-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.8.GA/jboss-common-core-2.2.8.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.8.GA/jboss-common-core-2.2.8.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA-sources.jar"/>
+	<classpathentry kind="src" path="/jboss-metatype"/>
+	<classpathentry kind="var" path="M2_REPO/jboss/profiler/jvmti/jboss-profiler-jvmti/1.0.0.CR5/jboss-profiler-jvmti-1.0.0.CR5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/jboss-reflect/2.0.0.CR1/jboss-reflect-2.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/jboss-reflect/2.0.0.CR1/jboss-reflect-2.0.0.CR1-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/4.4/junit-4.4.jar" sourcepath="M2_REPO/junit/junit/4.4/junit-4.4-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-api/2.1.4/jaxb-api-2.1.4.jar"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Modified: projects/jboss-man/trunk/managed/pom.xml
===================================================================
--- projects/jboss-man/trunk/managed/pom.xml	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/pom.xml	2008-10-22 16:31:23 UTC (rev 79928)
@@ -35,6 +35,10 @@
     </dependency>
     <!-- Test dependencies -->
     <dependency>
+      <groupId>sun-jaxb</groupId>
+      <artifactId>jaxb-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.jboss.logging</groupId>
       <artifactId>jboss-logging-log4j</artifactId>
       <scope>test</scope>

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedCommon.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedCommon.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedCommon.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -34,6 +34,8 @@
  * object can see                                    .
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
  */
 public interface ManagedCommon extends Serializable
 {
@@ -88,4 +90,10 @@
     * @return the operations
     */
    Set<ManagedOperation> getOperations();
+
+   /**
+    * 
+    * @return
+    */
+   ManagedCommon getParent();
 }

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedObject.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedObject.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedObject.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -64,4 +64,6 @@
     * @return name of runtime component if one exists, null if no component exists.
     */
    Object getComponentName();
+
+   public ManagedObject getParent();
 }

Added: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/MutableManagedObject.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/MutableManagedObject.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/MutableManagedObject.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.managed.api;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementObjectID;
+import org.jboss.managed.api.annotation.ManagementRuntimeRef;
+
+/**
+ * An extension of ManagedObject that allows setting of key values after
+ * the ManagedObject has been created.
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public interface MutableManagedObject extends ManagedObject
+{
+   /**
+    * Set the external name by which the ManagedObject is known
+    * @see {@linkplain ManagementObject#name}}
+    * @see {@linkplain ManagementObjectID#name}}
+    * @return the name
+    */
+   public void setName(String name);
+   /**
+    * Set the runtime component name.
+    *
+    * @see {@linkplain ManagementRuntimeRef}
+    * @return name of runtime component if one exists, null if no component exists.
+    */
+   public void setComponentName(Object name);
+   /**
+    * Set the parent ManagedObject.
+    * @param parent - the parent ManagedObject, null if no parent exists.
+    */
+   public void setParent(ManagedObject parent);
+   /**
+    * Set the metadata attachment.
+    * @param attachment - the metadata attachment this ManagedObject maps to.
+    */
+   public void setAttachment(Object attachment);
+   /**
+    * Set the ManagedObject ManagedProperty mapping.
+    * @param properties - the ManagedProperty mapping.
+    */
+   public void setProperties(Map<String, ManagedProperty> properties);
+   /**
+    * Set the ManagedOperation associated with the ManagedObject.
+    * @param operations - the ManagedOperations for the ManagedObject.
+    */
+   public void setOperations(Set<ManagedOperation> operations);
+}


Property changes on: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/MutableManagedObject.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/factory/ManagedObjectFactory.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/factory/ManagedObjectFactory.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/factory/ManagedObjectFactory.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -64,7 +64,7 @@
     * @return the managed object
     * @throws IllegalArgumentException for a null object
     */
-   public abstract ManagedObject initManagedObject(Serializable object, String name, String nameType);
+   public abstract ManagedObject initManagedObject(Object object, String name, String nameType);
 
    /**
     * Create a shell managed object from the given class

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DelegateManagedCommonImpl.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DelegateManagedCommonImpl.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DelegateManagedCommonImpl.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -33,6 +33,8 @@
  * Delegate managed common.
  *
  * @author ales.justin at jboss.org
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
  */
 public class DelegateManagedCommonImpl implements ManagedCommon
 {
@@ -78,4 +80,10 @@
    {
       return delegate.getPropertyNames();
    }
+
+   public ManagedCommon getParent()
+   {
+      return delegate.getParent();
+   }
+   
 }

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DelegateManagedObjectImpl.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DelegateManagedObjectImpl.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/DelegateManagedObjectImpl.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -94,4 +94,9 @@
    {
       return delegate.getComponentName();
    }
+
+   public ManagedObject getParent()
+   {
+      return delegate.getParent();
+   }
 }

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedObjectImpl.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedObjectImpl.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedObjectImpl.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -32,15 +32,16 @@
 import org.jboss.managed.api.ManagedObject;
 import org.jboss.managed.api.ManagedOperation;
 import org.jboss.managed.api.ManagedProperty;
+import org.jboss.managed.api.MutableManagedObject;
 
 /**
  * ManagedObjectImpl.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author Scott.Stark at jboss.org
- * @version $Revision: 1.1 $
+ * @version $Revision$
  */
-public class ManagedObjectImpl implements ManagedObject
+public class ManagedObjectImpl implements MutableManagedObject
 {
    /** The serialVersionUID */
    private static final long serialVersionUID = 2L;
@@ -60,10 +61,12 @@
    private Map<String, ManagedProperty> properties;
    /** The operations */
    private Set<ManagedOperation> operations;
-
+   /** The option parent of this ManagedObject */
+   private ManagedObject parent;
    /** The runtime component name */
    private transient Object componentName;
 
+
    /**
     * Create a new ManagedObjectImpl
     * 
@@ -253,6 +256,17 @@
       this.operations = operations;
    }
 
+   
+   public ManagedObject getParent()
+   {
+      return parent;
+   }
+
+   public void setParent(ManagedObject parent)
+   {
+      this.parent = parent;
+   }
+
    public Object getComponentName()
    {
       return componentName;


Property changes on: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedObjectImpl.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -21,7 +21,6 @@
  */
 package org.jboss.managed.plugins.factory;
 
-import java.io.Serializable;
 import java.lang.reflect.UndeclaredThrowableException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -36,6 +35,7 @@
 import org.jboss.config.spi.Configuration;
 import org.jboss.managed.api.ManagedObject;
 import org.jboss.managed.api.ManagedProperty;
+import org.jboss.managed.api.MutableManagedObject;
 import org.jboss.managed.api.annotation.ManagementObjectRef;
 import org.jboss.managed.api.annotation.ManagementRuntimeRef;
 import org.jboss.managed.api.factory.ManagedObjectFactory;
@@ -240,7 +240,8 @@
             List<GenericValue> tmp = getManagedObjectArray(beanInfo, property, value);
             GenericValue[] mos = new GenericValue[tmp.size()];
             CollectionMetaType moType = new CollectionMetaType(propertyType.getClassName(), AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE);
-            return new CollectionValueSupport(moType, tmp.toArray(mos));
+            tmp.toArray(mos);
+            return new CollectionValueSupport(moType, mos);
          }
       }
 
@@ -284,8 +285,6 @@
 
    protected GenericValue getManagedObjectValue(BeanInfo beanInfo, ManagedProperty property, Object value)
    {
-      if (value instanceof Serializable == false)
-         throw new IllegalStateException("Object is not serializable: " + value.getClass().getName());
       // Look for a ManagementObjectRef
       ManagementObjectRef ref = (ManagementObjectRef) property.getAnnotations().get(ManagementObjectRef.class.getName());
       String moName = (ref != null ? ref.name() : value.getClass().getName());
@@ -294,7 +293,13 @@
       if(value instanceof ManagedObject)
          mo = ManagedObject.class.cast(value);
       else
-         mo = mof.initManagedObject((Serializable) value, moName, moNameType);
+         mo = mof.initManagedObject(value, moName, moNameType);
+      ManagedObject parentMO = property.getManagedObject();
+      if(parentMO != null && mo instanceof MutableManagedObject)
+      {
+         MutableManagedObject mmo = (MutableManagedObject) mo;
+         mmo.setParent(parentMO);
+      }
       return new GenericValueSupport(AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE, mo);
    }
    protected List<GenericValue> getManagedObjectArray(BeanInfo beanInfo, ManagedProperty property, Object value)
@@ -303,8 +308,8 @@
       List<GenericValue> tmp = new ArrayList<GenericValue>();
       for(Object element : cvalue)
       {
-         ManagedObject mo = mof.initManagedObject((Serializable) element, null, null);
-         tmp.add(new GenericValueSupport(AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE, mo));
+         GenericValue gv = getManagedObjectValue(beanInfo, property, element);
+         tmp.add(gv);
       }
       return tmp;
    }

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractManagedObjectFactory.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractManagedObjectFactory.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractManagedObjectFactory.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -42,6 +42,7 @@
 import org.jboss.managed.api.ManagedOperation;
 import org.jboss.managed.api.ManagedParameter;
 import org.jboss.managed.api.ManagedProperty;
+import org.jboss.managed.api.MutableManagedObject;
 import org.jboss.managed.api.ManagedOperation.Impact;
 import org.jboss.managed.api.annotation.AnnotationDefaults;
 import org.jboss.managed.api.annotation.ManagementComponent;
@@ -284,14 +285,14 @@
 
    @Override
    @SuppressWarnings("unchecked")
-   public ManagedObject initManagedObject(Serializable object, String name, String nameType)
+   public ManagedObject initManagedObject(Object object, String name, String nameType)
    {
       if (object == null)
          throw new IllegalArgumentException("Null object");
 
-      Class<? extends Serializable> clazz = object.getClass();
+      Class<?> clazz = object.getClass();
       InstanceClassFactory icf = getInstanceClassFactory(clazz);
-      Class<Serializable> moClass;
+      Class<Object> moClass;
       try
       {
          moClass = icf.getManagedObjectClass(object);
@@ -306,8 +307,12 @@
          log.debug("Null ManagedObject created for: "+moClass);
          return null;
       }
-      ManagedObjectPopulator<Serializable> populator = getPopulator(moClass);
-      populator.populateManagedObject(result, object);
+      if(result instanceof MutableManagedObject)
+      {
+         MutableManagedObject mmo = (MutableManagedObject) result;
+         ManagedObjectPopulator<Object> populator = getPopulator(moClass);
+         populator.populateManagedObject(mmo, object);
+      }
 
       return result;
    }

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractManagedObjectPopulator.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractManagedObjectPopulator.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractManagedObjectPopulator.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -31,6 +31,7 @@
 import org.jboss.managed.api.Fields;
 import org.jboss.managed.api.ManagedObject;
 import org.jboss.managed.api.ManagedProperty;
+import org.jboss.managed.api.MutableManagedObject;
 import org.jboss.managed.api.annotation.ManagementObjectID;
 import org.jboss.managed.api.annotation.ManagementRuntimeRef;
 import org.jboss.managed.plugins.ManagedObjectImpl;
@@ -107,22 +108,18 @@
       if (managedObject == null)
          throw new IllegalArgumentException("Null managed object");
       
-      if (managedObject instanceof ManagedObjectImpl == false)
+      if (managedObject instanceof MutableManagedObject == false)
          throw new IllegalStateException("Unable to create object " + managedObject.getClass().getName());
       
-      ManagedObjectImpl managedObjectImpl = (ManagedObjectImpl) managedObject;
+      MutableManagedObject managedObjectImpl = (MutableManagedObject) managedObject;
       T object = createUnderlyingObject(managedObjectImpl, clazz);
-      populateManagedObject(managedObject, object);
+      populateManagedObject(managedObjectImpl, object);
    }
 
-   public void populateManagedObject(ManagedObject managedObject, T object)
+   public void populateManagedObject(MutableManagedObject managedObject, T object)
    {
-      if (managedObject instanceof ManagedObjectImpl == false)
-         throw new IllegalStateException("Unable to populate managed object " + managedObject.getClass().getName());
-      
-      ManagedObjectImpl managedObjectImpl = (ManagedObjectImpl) managedObject;
-      managedObjectImpl.setAttachment(object);
-      populateValues(managedObjectImpl, object);
+      managedObject.setAttachment(object);
+      populateValues(managedObject, object);
    }
 
    /**
@@ -152,7 +149,7 @@
     * @param clazz the class
     * @return the object
     */
-   protected T createUnderlyingObject(ManagedObjectImpl managedObject, Class<T> clazz)
+   protected T createUnderlyingObject(MutableManagedObject managedObject, Class<T> clazz)
    {
       BeanInfo beanInfo = configuration.getBeanInfo(clazz);
       try
@@ -173,7 +170,7 @@
     * @param object the object
     */
    @SuppressWarnings("unchecked")
-   protected void populateValues(ManagedObjectImpl managedObject, T object)
+   protected void populateValues(MutableManagedObject managedObject, T object)
    {
       InstanceClassFactory icf = getInstanceClassFactory(object.getClass());
       Class moClass;

Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/spi/factory/ManagedObjectPopulator.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/spi/factory/ManagedObjectPopulator.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/spi/factory/ManagedObjectPopulator.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -21,16 +21,16 @@
 */
 package org.jboss.managed.spi.factory;
 
-import java.io.Serializable;
-
 import org.jboss.managed.api.ManagedObject;
+import org.jboss.managed.api.MutableManagedObject;
 
 /**
  * ManagedObjectPopulator.
  * 
  * @param <T> the underlying object
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
  */
 public interface ManagedObjectPopulator<T>
 {
@@ -45,8 +45,8 @@
    /**
     * Populate the managed object
     * 
-    * @param managedObject the managed object
+    * @param managedObject the managed object to populate with values
     * @param object the object used to populate the managed object
     */
-   void populateManagedObject(ManagedObject managedObject, T object);
+   void populateManagedObject(MutableManagedObject managedObject, T object);
 }


Property changes on: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/spi/factory/ManagedObjectPopulator.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision

Modified: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/amof/TestMOP.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/amof/TestMOP.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/amof/TestMOP.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -26,6 +26,7 @@
 
 import org.jboss.config.spi.Configuration;
 import org.jboss.managed.api.ManagedObject;
+import org.jboss.managed.api.MutableManagedObject;
 import org.jboss.managed.plugins.factory.AbstractManagedObjectPopulator;
 import org.jboss.managed.spi.factory.InstanceClassFactory;
 import org.jboss.managed.spi.factory.ManagedObjectPopulator;
@@ -58,7 +59,7 @@
       super.createObject(managedObject, clazz);
    }
 
-   public void populateManagedObject(ManagedObject managedObject,
+   public void populateManagedObject(MutableManagedObject managedObject,
          Serializable object)
    {
       populateManagedObjectCalled = true;

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ApplicationManagedSecurityMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ApplicationManagedSecurityMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ApplicationManagedSecurityMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.managed.factory.support.mcf;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.test.managed.factory.support.deployment.SecurityDeploymentType;
+
+/**
+ * A ApplicationManagedSecurityMetaData.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston Price</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="application-managed-security")
+public class ApplicationManagedSecurityMetaData extends SecurityMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 7685268791262205126L;
+   
+   public ApplicationManagedSecurityMetaData()
+   {
+      type = SecurityDeploymentType.APPLICATION;
+      
+   }
+}
+

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DBMSMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DBMSMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DBMSMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,40 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+import java.io.Serializable;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+
+/**
+ * A DBMSMetaData.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston M. Price</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name="metadata")
+ at ManagementObject()
+public class DBMSMetaData implements Serializable
+{
+   private static final long serialVersionUID = -5511233258559770711L;
+   
+   @XmlElement(name="type-mapping")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String typeMapping;
+
+   public String getTypeMapping()
+   {
+      return typeMapping;
+   }
+
+   public void setTypeMapping(String typeMapping)
+   {
+      this.typeMapping = typeMapping;
+   }
+
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DataSourceConnectionPropertyMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DataSourceConnectionPropertyMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DataSourceConnectionPropertyMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,40 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlValue;
+
+ at XmlAccessorType(XmlAccessType.FIELD)
+public class DataSourceConnectionPropertyMetaData
+   implements java.io.Serializable
+{
+   @XmlAttribute(name="name")
+   protected String name;
+   
+   @XmlValue
+   protected String value;
+
+   public String getName()
+   {
+      return name;
+   }
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   public String getValue()
+   {
+      return value;
+   }
+   public void setValue(String value)
+   {
+      this.value = value;
+   }
+   
+   public String toString()
+   {
+      return "[" + name + "=" + value + "]";
+   }
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DataSourceDeploymentMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DataSourceDeploymentMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/DataSourceDeploymentMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,390 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+public class DataSourceDeploymentMetaData extends ManagedConnectionFactoryDeploymentMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1440129014410015366L;
+   
+   private static final String CONNECTION_DEFINITION = "javax.sql.DataSource";
+   
+   private static final String RAR_NAME = "jboss-local-jdbc.rar";
+
+   @XmlElement(name="transaction-isolation")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String transactionIsolation;
+   
+   @XmlElement(name="user-name")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String userName;
+   
+   @XmlElement(name="password")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String passWord;
+   
+   @XmlElement(name="new-connection-sql")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String newConnectionSQL;
+   
+   @XmlElement(name="check-valid-connection-sql")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String checkValidConnectionSQL;
+   
+   @XmlElement(name="valid-connection-checker-class-name")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String validConnectionCheckerClassName;
+   
+   @XmlElement(name="exception-sorter-class-name")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String exceptionSorterClassName;
+   
+   @XmlElement(name="stale-connection-checker-class-name")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String staleConnectionCheckerClassName;
+   
+   @XmlElement(name="track-statements")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String trackStatements;
+   
+   @XmlElement(name="prepared-statement-cache-size")
+   private int preparedStatementCacheSize = 0;
+   
+   @XmlElement(name="share-prepared-statements")
+   private boolean sharePreparedStatements;
+   
+   @XmlElement(name="set-tx-query-timeout")
+   private boolean useQueryTimeout;
+   
+   @XmlElement(name="query-timeout")
+   private int queryTimeout;
+   
+   @XmlElement(name="use-try-lock")
+   private long useTryLock;
+   
+   @XmlElement(name="url-delimiter")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String urlDelimiter;
+   
+   @XmlElement(name="url-selector-strategy-class-name")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String urlSelectorStrategyClassName;
+   
+   public DataSourceDeploymentMetaData()
+   {
+      setConnectionDefinition(CONNECTION_DEFINITION);
+      setRarName(RAR_NAME);
+      
+   }
+
+   public String getTransactionIsolation()
+   {
+      return transactionIsolation;
+   }
+
+   public void setTransactionIsolation(String transactionIsolation)
+   {
+      this.transactionIsolation = transactionIsolation;
+   }
+
+   public String getPassWord()
+   {
+      return passWord;
+   }
+
+   public void setPassWord(String passWord)
+   {
+      this.passWord = passWord;
+   }
+
+   public String getUserName()
+   {
+      return userName;
+   }
+
+   public void setUserName(String userName)
+   {
+      this.userName = userName;
+   }
+   
+      
+   public String getCheckValidConnectionSQL()
+   {
+      return checkValidConnectionSQL;
+   }
+
+   public void setCheckValidConnectionSQL(String checkValidConnectionSQL)
+   {
+      this.checkValidConnectionSQL = checkValidConnectionSQL;
+   }
+
+   public String getExceptionSorterClassName()
+   {
+      return exceptionSorterClassName;
+   }
+
+   public void setExceptionSorterClassName(String exceptionSorterClassName)
+   {
+      this.exceptionSorterClassName = exceptionSorterClassName;
+   }
+
+   public String getNewConnectionSQL()
+   {
+      return newConnectionSQL;
+   }
+
+   public void setNewConnectionSQL(String newConnectionSQL)
+   {
+      this.newConnectionSQL = newConnectionSQL;
+   }
+
+   public String getValidConnectionCheckerClassName()
+   {
+      return validConnectionCheckerClassName;
+   }
+
+   public void setValidConnectionCheckerClassName(String validConnectionCheckerClassName)
+   {
+      this.validConnectionCheckerClassName = validConnectionCheckerClassName;
+   }
+
+   public String getStaleConnectionCheckerClassName()
+   {
+      return staleConnectionCheckerClassName;
+   }
+
+   public void setStaleConnectionCheckerClassName(String staleConnectionCheckerClassName)
+   {
+      this.staleConnectionCheckerClassName = staleConnectionCheckerClassName;
+   }
+
+   public String getURLDelimiter()
+   {
+      return urlDelimiter;
+   }
+
+   public void setURLDelimiter(String urlDelimiter)
+   {
+      this.urlDelimiter = urlDelimiter;
+   }
+
+
+   public String getURLSelectorStrategyClassName()
+   {
+      return urlSelectorStrategyClassName;
+   }
+
+   public void setURLSelectorStrategyClassName(String urlSelectorStrategyClassName)
+   {
+      this.urlSelectorStrategyClassName = urlSelectorStrategyClassName;
+   }
+      
+
+   public int getPreparedStatementCacheSize()
+   {
+      return preparedStatementCacheSize;
+   }
+
+   public void setPreparedStatementCacheSize(int preparedStatementCacheSize)
+   {
+      this.preparedStatementCacheSize = preparedStatementCacheSize;
+   }
+
+
+   public int getQueryTimeout()
+   {
+      return queryTimeout;
+   }
+
+   public void setQueryTimeout(int queryTimeout)
+   {
+      this.queryTimeout = queryTimeout;
+   }
+
+   public long getUseTryLock()
+   {
+      return useTryLock;
+   }
+
+   public void setUseTryLock(long useTryLock)
+   {
+      this.useTryLock = useTryLock;
+   }
+
+
+   public boolean isSharePreparedStatements()
+   {
+      return sharePreparedStatements;
+   }
+
+   public void setSharePreparedStatements(boolean sharePreparedStatements)
+   {
+      this.sharePreparedStatements = sharePreparedStatements;
+   }
+
+
+   public String getTrackStatements()
+   {
+      return trackStatements;
+   }
+
+   public void setTrackStatements(String trackStatements)
+   {
+      this.trackStatements = trackStatements;
+   }
+
+
+   public boolean isUseQueryTimeout()
+   {
+      return useQueryTimeout;
+   }
+
+   public void setUseQueryTimeout(boolean useQueryTimeout)
+   {
+      this.useQueryTimeout = useQueryTimeout;
+   }
+
+   @Override
+   public List<ManagedConnectionFactoryPropertyMetaData> getManagedConnectionFactoryProperties()
+   {
+      List<ManagedConnectionFactoryPropertyMetaData> properties = new ArrayList<ManagedConnectionFactoryPropertyMetaData>();
+      ManagedConnectionFactoryPropertyMetaData property = null;
+            
+      if(getUserName() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("UserName");
+         property.setValue(getUserName());
+         properties.add(property);
+      }
+      
+      if(getPassWord() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("Password");
+         property.setValue(getPassWord());
+         properties.add(property);
+         
+      }
+      
+      if(getTransactionIsolation() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("TransactionIsolation");
+         property.setValue(getTransactionIsolation());
+         properties.add(property);
+         
+      }
+      
+      if(getNewConnectionSQL() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("NewConnectionSQL");
+         property.setValue(getNewConnectionSQL());         
+         properties.add(property);
+
+      }
+      
+      if(getCheckValidConnectionSQL() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("CheckValidConnectionSQL");
+         property.setValue(getCheckValidConnectionSQL());                  
+         properties.add(property);
+
+      }
+      
+      if(getValidConnectionCheckerClassName() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("ValidConnectionCheckerClassName");
+         property.setValue(getValidConnectionCheckerClassName());                           
+         properties.add(property);
+
+      }
+      
+      if(getExceptionSorterClassName() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("ExceptionSorterClassName");
+         property.setValue(getExceptionSorterClassName());                           
+         properties.add(property);         
+      }
+      
+      if(getStaleConnectionCheckerClassName() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("StaleConnectionCheckerClassName");
+         property.setValue(getStaleConnectionCheckerClassName());                           
+         properties.add(property);         
+      }
+      
+      if(getURLSelectorStrategyClassName() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("URLSelectorStrategyClassName");
+         property.setValue(getURLSelectorStrategyClassName());                           
+         properties.add(property);         
+      }
+      
+      if(getURLDelimiter() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("URLDelimiter");
+         property.setValue(getURLDelimiter());                           
+         properties.add(property);         
+      }
+      
+      property = new ManagedConnectionFactoryPropertyMetaData();
+      property.setName("PreparedStatementCacheSize");
+      property.setType("int");
+      property.setValue(String.valueOf(getPreparedStatementCacheSize()));
+      properties.add(property);
+      
+      property = new ManagedConnectionFactoryPropertyMetaData();
+      property.setName("SharePreparedStatements");
+      property.setType("boolean");
+      property.setValue(String.valueOf(isSharePreparedStatements()));
+      properties.add(property);
+      
+      property = new ManagedConnectionFactoryPropertyMetaData();
+      property.setName("QueryTimeout");
+      property.setType("int");
+      property.setValue(String.valueOf(getQueryTimeout()));
+      properties.add(property);
+      
+      property = new ManagedConnectionFactoryPropertyMetaData();
+      property.setName("UseTryLock");
+      property.setType("long");
+      property.setValue(String.valueOf(getUseTryLock()));
+      properties.add(property);
+      
+      property = new ManagedConnectionFactoryPropertyMetaData();
+      property.setName("TransactionQueryTimeout");
+      property.setType("boolean");
+      property.setValue(String.valueOf(isUseQueryTimeout()));
+      properties.add(property);
+      
+      property = new ManagedConnectionFactoryPropertyMetaData();
+      property.setName("ValidateOnMatch");
+      property.setType("boolean");
+      property.setValue(String.valueOf(isValidateOnMatch()));
+      properties.add(property);
+      
+      if (getTrackStatements() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("TrackStatements");
+         property.setType("java.lang.String");
+         property.setValue(String.valueOf(getTrackStatements()));
+         properties.add(property);
+      }
+      
+      return properties;
+   }
+}
\ No newline at end of file

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/LocalDataSourceDeploymentMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/LocalDataSourceDeploymentMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/LocalDataSourceDeploymentMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,36 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+
+/**
+ * A LocalDataSourceDeploymentMetaData.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston Price</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="local-tx-datasource")
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at ManagementObject(componentType=@ManagementComponent(type="DataSource",subtype="LocalTx"))
+public class LocalDataSourceDeploymentMetaData extends NonXADataSourceDeploymentMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -1513179292986405426L;
+
+   public LocalDataSourceDeploymentMetaData()
+   {
+      setLocalTransactions(true);
+      setTransactionSupportMetaData(ManagedConnectionFactoryTransactionSupportMetaData.LOCAL);
+   }
+
+   @Override
+   public Boolean getLocalTransactions()
+   {
+      return Boolean.TRUE;
+   }
+
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionEmptyContentAdapter.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionEmptyContentAdapter.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionEmptyContentAdapter.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,41 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+
+/**
+ * A ManagedConnectionEmptyContentAdapter.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston Price</a>
+ * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @version $Revision: 1.1 $
+ */
+public class ManagedConnectionEmptyContentAdapter extends XmlAdapter<ManagedConnectionEmptyContentAdapter.EmptyElement, Boolean>
+{
+   @XmlType(factoryMethod="instance")
+   public static class EmptyElement
+   {
+      public static EmptyElement INSTANCE = new EmptyElement();
+      
+      public static EmptyElement instance()
+      {
+         return INSTANCE;
+      }
+
+      private EmptyElement(){}      
+   }
+
+   @Override
+   public EmptyElement marshal(Boolean v) throws Exception
+   {
+      return Boolean.TRUE.equals(v) ? EmptyElement.INSTANCE : null;
+   }
+
+   @Override
+   public Boolean unmarshal(EmptyElement v) throws Exception
+   {
+      return v == null ? Boolean.FALSE : Boolean.TRUE;
+   }
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryDeploymentGroup.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryDeploymentGroup.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryDeploymentGroup.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,111 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import java.io.Serializable;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.jboss.managed.api.annotation.ManagementDeployment;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperty;
+
+
+/**
+ * A ManagedConnectionFactoryDeploymentGroup.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston Price</a>
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: 1.1 $
+ */
+ at XmlAccessorType(XmlAccessType.NONE)
+ at ManagementObject()
+ at ManagementDeployment()
+public class ManagedConnectionFactoryDeploymentGroup implements Serializable
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -7650097438654698297L;
+
+   /** The fileUrl */
+   private URL fileUrl;
+      
+   /** The deployments   */
+
+   @XmlElements({@XmlElement(name="local-tx-datasource", type=LocalDataSourceDeploymentMetaData.class),
+                 @XmlElement(name="no-tx-datasource", type=NoTxDataSourceDeploymentMetaData.class),
+                 @XmlElement(name="no-tx-connection-factory", type=NoTxConnectionFactoryDeploymentMetaData.class)
+   })
+   private List<ManagedConnectionFactoryDeploymentMetaData> deployments = new ArrayList<ManagedConnectionFactoryDeploymentMetaData>();
+   
+   public void addManagedConnectionFactoryDeployment(ManagedConnectionFactoryDeploymentMetaData deployment)
+   {
+      this.deployments.add(deployment);
+   }
+   
+   @ManagementProperty(description="The connection factories", managed=true)
+   public List<ManagedConnectionFactoryDeploymentMetaData> getDeployments()
+   {
+      return Collections.unmodifiableList(deployments);
+   }
+
+   /**
+    * Get the fileUrl.
+    * 
+    * @return the fileUrl.
+    */
+   @ManagementProperty(description="The ds.xml url", ignored=true)
+   public URL getUrl()
+   {
+      return fileUrl;
+   }
+
+   /**
+    * Set the fileUrl.
+    * 
+    * @param fileUrl The fileUrl to set.
+    */
+   public void setUrl(URL fileUrl)
+   {
+      this.fileUrl = fileUrl;
+   }
+
+   /**
+    * Set the deployments.
+    * 
+    * @param deployments The deployments to set.
+    */
+   public void setDeployments(List<ManagedConnectionFactoryDeploymentMetaData> deployments)
+   {
+      this.deployments = deployments;
+   }
+
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryDeploymentMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryDeploymentMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryDeploymentMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,538 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperty;
+
+
+
+/**
+ * A ManagedConnectionFactoryDeployment.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston Price</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at ManagementObject
+public class ManagedConnectionFactoryDeploymentMetaData
+   implements Serializable
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -4591557831734316580L;
+
+   /** The jndiName */   
+   @XmlElement(name="jndi-name")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String jndiName;   
+   
+   /** The rarName */
+   @XmlElement(name="rar-name")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String rarName;
+   
+   /** The useJavaContext */
+   @XmlElement(name="use-java-context")
+   private boolean useJavaContext = true;   
+   
+   /** The connectionDefinition */
+   @XmlElement(name="connection-definition")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   protected String connectionDefinition;
+
+   /** The jmxInvokerName */
+   @XmlElement(name="jmx-invoker-name")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String jmxInvokerName = "jboss:service=invoker,type=jrmp";
+   
+   @XmlElement(name="min-pool-size")
+   private int minSize = 0;
+   
+   @XmlElement(name="max-pool-size")
+   private int maxPoolSize = 10;
+   
+   @XmlElement(name="blocking-timeout-millis")
+   private long blockingTimeout = 30000;
+   
+   @XmlElement(name="idle-timeout-minutes")
+   private int idleTimeout = 30;
+   
+   @XmlElement(name="prefill")
+   private Boolean prefill = Boolean.FALSE;
+   
+   @XmlElement(name="background-validation")
+   private boolean backgroundValidation;
+   
+   @XmlElement(name="background-validation-millis")
+   private long backgroundValidationMillis;
+
+   @XmlElement(name="validate-on-match")
+   private boolean validateOnMatch = true;
+   
+   @XmlJavaTypeAdapter(ManagedConnectionEmptyContentAdapter.class)
+   @XmlElement(name="use-strict-min")
+   private Boolean useStrictMin = Boolean.FALSE;
+
+   @XmlJavaTypeAdapter(ManagedConnectionEmptyContentAdapter.class)
+   @XmlElement(name="no-tx-separate-pools")
+   private Boolean noTxSeparatePools = Boolean.FALSE;
+   
+   @XmlElement(name="statistics-formatter")
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String statisticsFormatter = "org.jboss.resource.statistic.pool.JBossDefaultSubPoolStatisticFormatter";
+   
+   @XmlElement(name="isSameRM-override-value")
+   private Boolean isSameRMOverrideValue = Boolean.FALSE;
+
+   // is always true now and left here for the xml binding
+   @Deprecated
+   @XmlJavaTypeAdapter(ManagedConnectionEmptyContentAdapter.class)
+   @XmlElement(name="track-connection-by-tx")
+   private Boolean trackConnectionByTransaction;
+
+   @XmlJavaTypeAdapter(ManagedConnectionEmptyContentAdapter.class)
+   @XmlElement(name="interleaving")
+   private Boolean interleaving;
+
+   /** The transactionSupportMetaData */
+   @XmlTransient
+   private ManagedConnectionFactoryTransactionSupportMetaData transactionSupportMetaData = ManagedConnectionFactoryTransactionSupportMetaData.NONE;
+
+   /** The managedConnectionFactoryProperties */
+   @XmlElement(name="config-property")
+   private List<ManagedConnectionFactoryPropertyMetaData> managedConnectionFactoryProperties = new ArrayList<ManagedConnectionFactoryPropertyMetaData>();
+   
+   @XmlElement(name="depends")
+   private List<String> dependsNames = new ArrayList<String>();
+   
+   // todo: this should be wrapped into <metadata> element
+   @XmlElement(name="type-mapping")
+   String typeMapping;
+   @XmlElement(name="metadata")
+   private DBMSMetaData dbmsMetaData;
+   
+   /** The localTransactions */
+   @XmlJavaTypeAdapter(ManagedConnectionEmptyContentAdapter.class)
+   @XmlElement(name="local-transaction")
+   private Boolean localTransactions = Boolean.FALSE;
+
+   /** The securityMetaData */
+   @XmlElements({@XmlElement(name="security-domain", type=SecurityDomainMetaData.class), @XmlElement(name="security-domain-and-application",type=SecurityDomainApplicationManagedMetaData.class), @XmlElement(name="application-managed-security",type=ApplicationManagedSecurityMetaData.class)})
+   private SecurityMetaData securityMetaData;
+
+   public ManagedConnectionFactoryDeploymentMetaData()
+   {
+      this.interleaving = Boolean.FALSE;
+   }
+
+   /**
+    * Get the securityMetaData.
+    * 
+    * @return the securityMetaData.
+    */
+   @ManagementProperty(name="security-domain", managed=true, includeInTemplate=true)
+   public SecurityMetaData getSecurityMetaData()
+   {
+      return securityMetaData;
+   }
+
+   /**
+    * Set the securityMetaData.
+    * 
+    * @param securityMetaData The securityMetaData to set.
+    */
+   public void setSecurityMetaData(SecurityMetaData securityMetaData)
+   {
+      this.securityMetaData = securityMetaData;
+   }
+
+   /**
+    * Get the connectionDefinition.
+    * 
+    * @return the connectionDefinition.
+    */
+   public String getConnectionDefinition()
+   {
+      return connectionDefinition;
+   }
+
+   /**
+    * Set the connectionDefinition.
+    * 
+    * @param connectionDefinition The connectionDefinition to set.
+    */
+   public void setConnectionDefinition(String connectionDefinition)
+   {
+      this.connectionDefinition = connectionDefinition;
+   }
+
+   /**
+    * Get the jndiName. This is the id for the DataSource ManagedObject.
+    * 
+    * @return the jndiName.
+    */
+   public String getJndiName()
+   {
+      return jndiName;
+   }
+
+   /**
+    * Set the jndiName.
+    * 
+    * @param jndiName The jndiName to set.
+    */
+   public void setJndiName(String jndiName)
+   {
+      this.jndiName = jndiName;
+   }
+
+   /**
+    * Get the transactionSupportMetaData.
+    * 
+    * @return the transactionSupportMetaData.
+    */
+   public ManagedConnectionFactoryTransactionSupportMetaData getTransactionSupportMetaData()
+   {
+      return transactionSupportMetaData;
+   }
+
+   /**
+    * Set the transactionSupportMetaData.
+    * 
+    * @param transactionSupportMetaData The transactionSupportMetaData to set.
+    */
+   public void setTransactionSupportMetaData(ManagedConnectionFactoryTransactionSupportMetaData transactionSupportMetaData)
+   {
+      this.transactionSupportMetaData = transactionSupportMetaData;
+   }
+
+   /**
+    * Get the useJavaContext.
+    * 
+    * @return the useJavaContext.
+    */
+   public boolean isUseJavaContext()
+   {
+      return useJavaContext;
+   }
+
+   /**
+    * Set the useJavaContext.
+    * 
+    * @param useJavaContext The useJavaContext to set.
+    */
+   public void setUseJavaContext(boolean useJavaContext)
+   {
+      this.useJavaContext = useJavaContext;
+   }
+
+   /**
+    * Get the managedConnectionFactoryProperties.
+    * 
+    * @return the managedConnectionFactoryProperties.
+    */
+   public List<ManagedConnectionFactoryPropertyMetaData> getManagedConnectionFactoryProperties()
+   {
+      return managedConnectionFactoryProperties;
+   }
+
+   /**
+    * Set the managedConnectionFactoryProperties.
+    * 
+    * @param managedConnectionFactoryProperties The managedConnectionFactoryProperties to set.
+    */
+   public void setManagedConnectionFactoryProperties(
+         List<ManagedConnectionFactoryPropertyMetaData> managedConnectionFactoryProperties)
+   {
+      this.managedConnectionFactoryProperties = managedConnectionFactoryProperties;
+   }
+
+   /**
+    * Get the rarName.
+    * 
+    * @return the rarName.
+    */
+   public String getRarName()
+   {
+      return rarName;
+   }
+
+   /**
+    * Set the rarName.
+    * 
+    * @param rarName The rarName to set.
+    */
+   public void setRarName(String rarName)
+   {
+      this.rarName = rarName;
+   }
+   
+   /**
+    * Get the typeMapping.
+    * 
+    * @return the typeMapping.
+    */
+   public String getTypeMapping()
+   {
+      return typeMapping;
+   }
+
+   /**
+    * Set the typeMapping.
+    * 
+    * @param typeMapping The typeMapping to set.
+    */
+   public void setTypeMapping(String typeMapping)
+   {
+      this.typeMapping = typeMapping;
+   }
+
+   /**
+    * Get the jmxInvokerName.
+    * 
+    * @return the jmxInvokerName.
+    */
+   public String getJmxInvokerName()
+   {
+      return jmxInvokerName;
+   }
+
+   /**
+    * Set the jmxInvokerName.
+    * 
+    * @param jmxInvokerName The jmxInvokerName to set.
+    */
+   public void setJmxInvokerName(String jmxInvokerName)
+   {
+      this.jmxInvokerName = jmxInvokerName;
+   }
+
+   /**
+    * Get the dependsNames.
+    * 
+    * @return the dependsNames.
+    */
+   public List<String> getDependsNames()
+   {
+      return dependsNames;
+   }
+
+   /**
+    * Set the dependsNames.
+    * 
+    * @param dependsNames The dependsNames to set.
+    */
+   public void setDependsNames(List<String> dependsNames)
+   {
+      this.dependsNames = dependsNames;
+   }
+
+   public void setMinSize(int minSize)
+   {
+      this.minSize = minSize;
+   } 
+   
+   public int getMinSize()
+   {
+      return this.minSize;
+      
+   }
+   
+   public void setMaxSize(int maxSize)
+   {
+      this.maxPoolSize = maxSize;
+   }
+   
+   public int getMaxSize()
+   {
+      if (this.maxPoolSize >= this.minSize)
+      {
+         return this.maxPoolSize;
+      } else {
+         return this.minSize;
+      }
+      
+   }
+   
+   public void setBlockingTimeoutMilliSeconds(long blockTimeout)
+   {
+     this.blockingTimeout = blockTimeout;
+      
+   }
+   
+   public long getBlockingTimeoutMilliSeconds()
+   {
+      return this.blockingTimeout;
+      
+   }
+   
+   public void setIdleTimeoutMinutes(int idleTimeout)
+   {
+      this.idleTimeout = idleTimeout;
+   }
+   
+   public int getIdleTimeoutMinutes()
+   {
+      return this.idleTimeout;
+      
+   }
+
+   public void setPrefill(Boolean prefill)
+   {
+      this.prefill = prefill;
+   }
+
+   public Boolean getPrefill()
+   {
+      return this.prefill;      
+   }
+
+   public boolean isBackgroundValidation()
+   {
+      return backgroundValidation;
+   }
+
+   public void setBackgroundValidation(boolean backgroundValidation)
+   {
+      this.backgroundValidation = backgroundValidation;
+   }
+
+   public void setBackgroundValidationMillis(long interval)
+   {
+      this.backgroundValidationMillis = interval;
+   }
+
+   public long getBackgroundValidationMillis()
+   {
+      return this.backgroundValidationMillis;
+   }
+
+   public void setValidateOnMatch(boolean validateOnMatch)
+   {
+      this.validateOnMatch = validateOnMatch;
+   }
+
+   public boolean isValidateOnMatch()
+   {
+      return this.validateOnMatch;
+      
+   }
+
+   public Boolean getIsSameRMOverrideValue()
+   {
+      return isSameRMOverrideValue;
+   }
+
+   public void setIsSameRMOverrideValue(Boolean isSameRMOverrideValue)
+   {
+      this.isSameRMOverrideValue = isSameRMOverrideValue;
+   }
+
+   @Deprecated
+   public Boolean getTrackConnectionByTransaction()
+   {
+      return !isInterleaving();
+   }
+
+   @Deprecated
+   public void setTrackConnectionByTransaction(Boolean trackConnectionByTransaction)
+   {
+      if(Boolean.TRUE == getLocalTransactions() && !Boolean.TRUE.equals(trackConnectionByTransaction))
+         throw new IllegalStateException("In case of local transactions track-connection-by-tx must always be true");      
+      setInterleaving(!Boolean.TRUE.equals(trackConnectionByTransaction));
+   }
+
+   public Boolean isInterleaving()
+   {
+      return interleaving == Boolean.TRUE && !Boolean.TRUE.equals(getLocalTransactions());
+   }
+
+   public void setInterleaving(Boolean interleaving)
+   {
+      this.interleaving = interleaving;
+   }
+
+   public Boolean getLocalTransactions()
+   {
+      return localTransactions;
+   }
+
+   public void setLocalTransactions(Boolean localTransactions)
+   {
+      this.localTransactions = localTransactions;
+   }
+
+   public Boolean getUseStrictMin()
+   {
+      return useStrictMin;
+   }
+
+   public void setUseStrictMin(Boolean useStrictMin)
+   {
+      this.useStrictMin = useStrictMin;
+   }
+
+   public String getStatisticsFormatter()
+   {
+      return statisticsFormatter;
+   }
+
+   public void setStatisticsFormatter(String statisticsFormatter)
+   {
+      this.statisticsFormatter = statisticsFormatter;
+   }
+   
+   public Boolean getNoTxSeparatePools()
+   {
+      return this.noTxSeparatePools;
+   }
+
+   public void setNoTxSeparatePools(Boolean notxpool)
+   {
+      this.noTxSeparatePools = notxpool;
+   }
+
+   public DBMSMetaData getDBMSMetaData()
+   {
+      return dbmsMetaData;
+   }
+
+   public void setDBMSMetaData(DBMSMetaData dbmsMetaData)
+   {
+      this.dbmsMetaData = dbmsMetaData;
+   }
+
+}
+

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryPropertyMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryPropertyMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryPropertyMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,117 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlValue;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at ManagementObject
+public class ManagedConnectionFactoryPropertyMetaData implements Serializable
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 4978655092571661074L;
+   
+   /** The name */
+   @XmlAttribute(name="name")
+   private String name;
+   
+   /** The type */
+   @XmlAttribute(name="type")   
+   private String type = "java.lang.String";
+   
+   @XmlValue
+   private String value;
+   
+   /**
+    * Get the name.
+    * 
+    * @return the name.
+    */
+   public String getName()
+   {
+      return name;
+   }
+   /**
+    * Set the name.
+    * 
+    * @param name The name to set.
+    */
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   /**
+    * Get the type.
+    * 
+    * @return the type.
+    */
+   public String getType()
+   {
+      return type;
+   }
+   /**
+    * Set the type.
+    * 
+    * @param type The type to set.
+    */
+   public void setType(String type)
+   {
+      this.type = type;
+   }
+   /**
+    * Get the value.
+    * 
+    * @return the value.
+    */
+   public String getValue()
+   {
+      return value;
+   }
+   /**
+    * Set the value.
+    * 
+    * @param value The value to set.
+    */
+   public void setValue(String value)
+   {
+      this.value = value;
+   }
+   
+   @Override
+   public boolean equals(Object obj)
+   {
+      if(this == obj)
+         return true;
+      
+      if(!(obj instanceof ManagedConnectionFactoryPropertyMetaData))
+      {
+         return false;         
+      }
+      
+      ManagedConnectionFactoryPropertyMetaData other = (ManagedConnectionFactoryPropertyMetaData)obj;
+      
+      if(getName() == null)
+         return false;
+      
+      else
+      {
+         return getName().equals(other.getName());
+      }
+   }
+   
+   @Override
+   public int hashCode()
+   {
+      if (getName() == null)
+      {
+         return 42;
+      }
+
+      return getName().hashCode();
+   }
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryTransactionSupportMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryTransactionSupportMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/ManagedConnectionFactoryTransactionSupportMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,6 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+public enum ManagedConnectionFactoryTransactionSupportMetaData 
+{
+   NONE, LOCAL, XA;
+}
\ No newline at end of file

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NoTxConnectionFactoryDeploymentMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NoTxConnectionFactoryDeploymentMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NoTxConnectionFactoryDeploymentMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,27 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+
+/**
+ * A NoTxConnectionFactoryDeploymentMetaData.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston Price</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="no-tx-connection-factory")
+ at ManagementObject
+public class NoTxConnectionFactoryDeploymentMetaData extends ManagedConnectionFactoryDeploymentMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -8637168894246737692L;
+   
+   @Override
+   public ManagedConnectionFactoryTransactionSupportMetaData getTransactionSupportMetaData()
+   {
+      return ManagedConnectionFactoryTransactionSupportMetaData.NONE;
+      
+   }
+      
+}
\ No newline at end of file

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NoTxDataSourceDeploymentMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NoTxDataSourceDeploymentMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NoTxDataSourceDeploymentMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,19 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+
+ at ManagementObject
+public class NoTxDataSourceDeploymentMetaData extends NonXADataSourceDeploymentMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -5354506847562754007L;
+   
+   @Override
+   public ManagedConnectionFactoryTransactionSupportMetaData getTransactionSupportMetaData()
+   {
+      return ManagedConnectionFactoryTransactionSupportMetaData.NONE;
+      
+   }
+   
+
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NonXADataSourceDeploymentMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NonXADataSourceDeploymentMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/NonXADataSourceDeploymentMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,102 @@
+package org.jboss.test.managed.factory.support.mcf;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at ManagementObject
+public abstract class NonXADataSourceDeploymentMetaData extends DataSourceDeploymentMetaData
+{
+   @XmlElement(name="driver-class", required=true)
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String driverClass;
+   
+   @XmlElement(name="connection-url", required=true)
+   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   private String connectionUrl;
+   
+   @XmlElement(name="connection-property")
+   private List<DataSourceConnectionPropertyMetaData> connectionProperties = new ArrayList<DataSourceConnectionPropertyMetaData>();
+
+   public String getConnectionUrl()
+   {
+      return connectionUrl;
+   }
+
+   public void setConnectionUrl(String connectionUrl)
+   {
+      this.connectionUrl = connectionUrl;
+   }
+
+   public String getDriverClass()
+   {
+      return driverClass;
+   }
+
+   public void setDriverClass(String driverClass)
+   {
+      this.driverClass = driverClass;
+   }
+
+   public List<DataSourceConnectionPropertyMetaData> getDataSourceConnectionProperties()
+   {
+      return this.connectionProperties;      
+   }
+
+   public void setDataSourceConnectionProperties(List<DataSourceConnectionPropertyMetaData> connectionProperties)
+   {
+      this.connectionProperties = connectionProperties;
+   }
+   
+   @Override
+   public List<ManagedConnectionFactoryPropertyMetaData> getManagedConnectionFactoryProperties()
+   {
+      
+      List<ManagedConnectionFactoryPropertyMetaData> properties = super.getManagedConnectionFactoryProperties();
+      ManagedConnectionFactoryPropertyMetaData property = null;
+      
+      if(getConnectionUrl() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("ConnectionURL");
+         property.setValue(getConnectionUrl());
+         properties.add(property);
+         
+      }
+      
+      if(getDriverClass() != null)
+      {
+         property = new ManagedConnectionFactoryPropertyMetaData();
+         property.setName("DriverClass");
+         property.setValue(getDriverClass());
+         properties.add(property);         
+      }
+      
+      StringBuffer propBuff = new StringBuffer();
+      List<DataSourceConnectionPropertyMetaData> dsProps = getDataSourceConnectionProperties();
+
+      if (dsProps != null)
+      {
+         for (DataSourceConnectionPropertyMetaData prop : dsProps)
+         {
+            propBuff.append(prop.getName() + "=" + prop.getValue() + "\n");      
+         }
+      }
+      
+      property = new ManagedConnectionFactoryPropertyMetaData();
+      property.setName("ConnectionProperties");
+      property.setValue(propBuff.toString());
+      properties.add(property);
+
+      return properties;
+      
+   }
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityDomainApplicationManagedMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityDomainApplicationManagedMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityDomainApplicationManagedMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.managed.factory.support.mcf;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.test.managed.factory.support.deployment.SecurityDeploymentType;
+
+ at XmlType(name="security-domain-and-application")
+public class SecurityDomainApplicationManagedMetaData extends SecurityMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -6069372122256391426L;
+   
+   public SecurityDomainApplicationManagedMetaData()
+   {
+      type = SecurityDeploymentType.DOMAIN_AND_APPLICATION;
+      
+   }
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityDomainMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityDomainMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityDomainMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.managed.factory.support.mcf;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.test.managed.factory.support.deployment.SecurityDeploymentType;
+
+
+/**
+ * A SecurityDomainMetaData.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston Price</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name="security-domain")
+public class SecurityDomainMetaData extends SecurityMetaData
+{   
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 7651471441356573122L;
+   
+   public SecurityDomainMetaData()
+   {
+      type = SecurityDeploymentType.DOMAIN;
+      
+   }
+}

Added: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityMetaData.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityMetaData.java	                        (rev 0)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/mcf/SecurityMetaData.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -0,0 +1,75 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.managed.factory.support.mcf;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlValue;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperty;
+import org.jboss.test.managed.factory.support.deployment.SecurityDeploymentType;
+
+ at XmlAccessorType(XmlAccessType.NONE)
+ at ManagementObject(description="The security domain, type information")
+public class SecurityMetaData implements Serializable
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 8939054836116025885L;
+   
+   @XmlValue
+   private String domain;
+   
+   protected SecurityDeploymentType type;
+   
+   
+   public SecurityMetaData()
+   {
+      type = SecurityDeploymentType.NONE;
+      
+   }
+   
+   public boolean requiresDomain()
+   {
+      return (getSecurityDeploymentType().equals(SecurityDeploymentType.DOMAIN) 
+            || getSecurityDeploymentType().equals(SecurityDeploymentType.DOMAIN_AND_APPLICATION));
+   }   
+
+   @ManagementProperty
+   public String getDomain()
+   {
+      return domain;
+   }
+   public void setDomain(String domain)
+   {
+      this.domain = domain;
+   }
+
+   @ManagementProperty
+   public SecurityDeploymentType getSecurityDeploymentType()
+   {
+      return type;
+   }
+}
+

Modified: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/AbstractManagedObjectFactoryUnitTestCase.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/AbstractManagedObjectFactoryUnitTestCase.java	2008-10-22 15:46:13 UTC (rev 79927)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/AbstractManagedObjectFactoryUnitTestCase.java	2008-10-22 16:31:23 UTC (rev 79928)
@@ -22,7 +22,9 @@
 package org.jboss.test.managed.factory.test;
 
 import java.math.BigDecimal;
+import java.net.URL;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import junit.framework.Test;
@@ -51,6 +53,12 @@
 import org.jboss.test.managed.factory.support.deployment.JmsDestinations;
 import org.jboss.test.managed.factory.support.deployment.QueueDestination;
 import org.jboss.test.managed.factory.support.deployment.SecurityDomain;
+import org.jboss.test.managed.factory.support.mcf.DBMSMetaData;
+import org.jboss.test.managed.factory.support.mcf.DataSourceConnectionPropertyMetaData;
+import org.jboss.test.managed.factory.support.mcf.LocalDataSourceDeploymentMetaData;
+import org.jboss.test.managed.factory.support.mcf.ManagedConnectionFactoryDeploymentGroup;
+import org.jboss.test.managed.factory.support.mcf.ManagedConnectionFactoryDeploymentMetaData;
+import org.jboss.test.managed.factory.support.mcf.SecurityMetaData;
 
 /**
  * Test of behavior of the AbstractManagedObjectFactory
@@ -188,6 +196,40 @@
       assertEquals("jboss:test=testTransformer", managedObject.getComponentName());
    }
 
+   public void testMCFHierarchy()
+      throws Exception
+   {
+      ManagedConnectionFactoryDeploymentGroup mcf = initMCFDG();
+      ManagedObjectFactory mof = getMOF();
+      ManagedObject mcfMO = mof.initManagedObject(mcf, "ManagedConnectionFactoryDeploymentGroup", null);
+      ManagedProperty deployments = mcfMO.getProperty("deployments");
+      Object dvalue = deployments.getValue();
+      assertTrue(dvalue.getClass()+"", dvalue instanceof CollectionValue);
+      CollectionValue cv = (CollectionValue) dvalue;
+      assertEquals(1, cv.getSize());
+      Object cv0 = cv.iterator().next();
+      assertTrue(cv0 instanceof GenericValue);
+      GenericValue gv0 = (GenericValue) cv0;
+      assertTrue(gv0.getValue() instanceof ManagedObject);
+      ManagedObject mo = (ManagedObject) gv0.getValue();
+      assertEquals(LocalDataSourceDeploymentMetaData.class.getName(), mo.getAttachmentName());
+      assertEquals(mcfMO, mo.getParent());
+
+      // Validate the security-domain
+      ManagedProperty secDomain = mo.getProperty("security-domain");
+      assertNotNull("security-domain", secDomain);
+      GenericValue sdGV = (GenericValue) secDomain.getValue();
+      assertNotNull("security-domain.GV", sdGV);
+      ManagedObject secDomainMO = (ManagedObject) sdGV.getValue();
+
+      assertNotNull("security-domain.MO", secDomainMO);
+      assertEquals(mo, secDomainMO.getParent());
+      ManagedProperty domainName = secDomainMO.getProperty("domain");
+      assertNotNull("security-domain.MO.domain", domainName);
+      assertEquals(SimpleValueSupport.wrap("java:/jaas/SomeDomain"), domainName.getValue());
+
+   }
+
    /**
     * Override to allow test specific ManagedObjectFactory
     */
@@ -200,4 +242,53 @@
       return mof;
    }
 
+   protected ManagedConnectionFactoryDeploymentGroup initMCFDG()
+      throws Exception
+   {
+      ManagedConnectionFactoryDeploymentGroup mcfs = new ManagedConnectionFactoryDeploymentGroup();
+      LocalDataSourceDeploymentMetaData lds = new LocalDataSourceDeploymentMetaData();
+      lds.setBackgroundValidation(true);
+      lds.setBackgroundValidationMillis(5000);
+      lds.setBlockingTimeoutMilliSeconds(5000);
+      lds.setCheckValidConnectionSQL("select something from somewhere");
+      lds.setConnectionDefinition("conn def");
+      lds.setConnectionUrl("jdbc:xyz:a=b");
+      DataSourceConnectionPropertyMetaData cp1 = new DataSourceConnectionPropertyMetaData();
+      cp1.setName("cp1-name");
+      cp1.setValue("cp1-value");
+      DataSourceConnectionPropertyMetaData cp2 = new DataSourceConnectionPropertyMetaData();
+      cp2.setName("cp2-name");
+      cp2.setValue("cp2-value");
+      DataSourceConnectionPropertyMetaData[] cps = {
+        cp1, cp2    
+      };
+      lds.setDataSourceConnectionProperties(Arrays.asList(cps));
+      lds.setDriverClass("org.jboss.jdbc.SomeDriver");
+      lds.setExceptionSorterClassName("org.jboss.jdbc.SomeExceptionSorter");
+      String[] depends = {"jboss:service=Naming", "jboss:service=Hypersonic,database=localDB"};
+      lds.setDependsNames(Arrays.asList(depends));
+      lds.setIdleTimeoutMinutes(15);
+      lds.setInterleaving(false);
+      lds.setMaxSize(100);
+      lds.setMinSize(1);
+      DBMSMetaData md = new DBMSMetaData();
+      md.setTypeMapping("Hypersonic SQL");
+      lds.setDBMSMetaData(md);
+      lds.setNewConnectionSQL("run this on a new conn");
+      lds.setPassWord("password");
+      lds.setPrefill(true);
+      lds.setPreparedStatementCacheSize(50);
+      lds.setQueryTimeout(30000);
+      lds.setUserName("user");
+      // Set a SecurityMetaData to validate its MO
+      SecurityMetaData smd = new SecurityMetaData();
+      smd.setDomain("java:/jaas/SomeDomain");
+      lds.setSecurityMetaData(smd);
+
+      ManagedConnectionFactoryDeploymentMetaData[] mds = {lds};
+      mcfs.setDeployments(Arrays.asList(mds));
+      mcfs.setUrl(new URL("file:/deploy/some-ds.xml"));
+      return mcfs;
+   }
+
 }




More information about the jboss-cvs-commits mailing list