[jboss-cvs] JBossAS SVN: r66067 - in trunk/testsuite/src: main/org/jboss/test/jca/test and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Oct 11 23:02:46 EDT 2007


Author: weston.price at jboss.com
Date: 2007-10-11 23:02:46 -0400 (Thu, 11 Oct 2007)
New Revision: 66067

Added:
   trunk/testsuite/src/main/org/jboss/test/jca/support/ManagedDeploymentSupportHelper.java
   trunk/testsuite/src/main/org/jboss/test/jca/test/ManagedDeploymentUnitTestCase.java
   trunk/testsuite/src/resources/jca/deployment/
   trunk/testsuite/src/resources/jca/deployment/default-content-ds.xml
   trunk/testsuite/src/resources/jca/deployment/empty-content-ds.xml
   trunk/testsuite/src/resources/jca/deployment/invalid-content-ds.xml
   trunk/testsuite/src/resources/jca/deployment/pool-content-ds.xml
Modified:
   trunk/testsuite/src/main/org/jboss/test/jca/test/DeploymentUnitTestCase.java
Log:
[JBAS-1425, JBAS-4809] Reworked and cleaned up metadata for
marshalling for ProfileService. Added new unit tests for JAXB marshal/unmarshal and ServiceMetaData building.

Added: trunk/testsuite/src/main/org/jboss/test/jca/support/ManagedDeploymentSupportHelper.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/jca/support/ManagedDeploymentSupportHelper.java	                        (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/jca/support/ManagedDeploymentSupportHelper.java	2007-10-12 03:02:46 UTC (rev 66067)
@@ -0,0 +1,188 @@
+package org.jboss.test.jca.support;
+
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Source;
+import javax.xml.transform.sax.SAXSource;
+
+import org.jboss.resource.metadata.mcf.DataSourceDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.LocalDataSourceDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentGroup;
+import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.NonXADataSourceDeploymentMetaData;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.InputSource;
+
+/**
+ * A ManagedDeploymentSupportHelper.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston Price</a>
+ * @version $Revision: 1.1 $
+ */
+public class ManagedDeploymentSupportHelper
+{
+   
+   private static final Class[] CTX_CLASS = {ManagedConnectionFactoryDeploymentGroup.class};
+   
+   public static String marshalResourceAsString(ManagedConnectionFactoryDeploymentGroup group) throws Exception
+   {
+      Class[] classes = {ManagedConnectionFactoryDeploymentGroup.class, ManagedConnectionFactoryDeploymentMetaData.class, LocalDataSourceDeploymentMetaData.class, NonXADataSourceDeploymentMetaData.class, DataSourceDeploymentMetaData.class};      
+      JAXBContext context = JAXBContext.newInstance(classes);      
+      Marshaller m = context.createMarshaller();      
+      JAXBElement element = new JAXBElement(new QName("", "datasources"), group.getClass(), group);
+      StringWriter w = new StringWriter();
+      m.marshal(element, w);      
+      return w.toString();      
+   }
+   
+   public static ManagedConnectionFactoryDeploymentGroup unmarshalSource(String content) throws Exception
+   {
+      JAXBContext ctx = JAXBContext.newInstance(CTX_CLASS);
+      Unmarshaller um = ctx.createUnmarshaller();
+      StringReader r = new StringReader(content);
+      InputSource is = new InputSource(r);
+      Source s = new SAXSource(is);
+      JAXBElement<ManagedConnectionFactoryDeploymentGroup> elem = um.unmarshal(s, ManagedConnectionFactoryDeploymentGroup.class);
+      ManagedConnectionFactoryDeploymentGroup group = elem.getValue();
+      return group;
+   }
+   public static ManagedConnectionFactoryDeploymentGroup unmarshalResource(String resourceName) throws Exception
+   {
+      JAXBContext ctx = JAXBContext.newInstance(CTX_CLASS);
+      Unmarshaller um = ctx.createUnmarshaller();
+      Document d = getDocumentForResource(resourceName);
+      JAXBElement<ManagedConnectionFactoryDeploymentGroup> elem = um.unmarshal(d, ManagedConnectionFactoryDeploymentGroup.class);
+      ManagedConnectionFactoryDeploymentGroup group = elem.getValue();
+      //      ManagedConnectionFactoryDeploymentGroup group = elem.getValue();
+      return group;      
+   }
+   
+   public static Document getDocumentForResource(String resourceName) throws Exception
+   {
+      InputStream is = null;
+      try
+      {
+         ClassLoader cl = Thread.currentThread().getContextClassLoader();
+         is = cl.getResourceAsStream(resourceName);
+         Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
+         return doc;
+         
+      }finally
+      {
+         if(is != null)
+         {
+            is.close();
+         }
+      }
+   
+   }
+   public static boolean isValidDeployment(String resourceName, ManagedConnectionFactoryDeploymentMetaData md, String...elements) throws Exception   
+   {
+      Document doc = getDocumentForResource(resourceName);
+      
+      List<Element> candidates = new ArrayList<Element>();
+
+      for (int i = 0; i < elements.length; i++)
+      {
+         String elemName = elements[i];
+         candidates.add((Element)doc.getElementsByTagName(elemName).item(0));
+
+      }
+      
+      return isValidDeployment(md, candidates);
+      
+      
+   }
+   public static boolean isValidDeployment(ManagedConnectionFactoryDeploymentMetaData md, List<Element> elements)
+   {
+      boolean results = false;
+      
+      for (Element elem : elements)
+      {
+         String name = elem.getNodeName();
+         String value = elem.getTextContent();
+         
+         if(name.equals("jndi-name"))
+         {
+            results = value.equals(md.getJndiName());            
+         }
+      }
+      
+      return results;
+   }
+   
+   public static boolean hasAnnotation(ManagedConnectionFactoryDeploymentMetaData md, String name) throws Exception
+   {
+      Annotation[] a = md.getClass().getAnnotations();
+      boolean results = true;
+      
+      for (int i = 0; i < a.length; i++)
+      {
+         if(a[i] instanceof XmlElement)
+         {
+            XmlElement xme = (XmlElement)a[i];
+            xme.name().equals(name);
+            results = true;
+         }
+      } 
+      return results;
+   }
+   
+   private static List<Annotation> getAllAnnotationsForClass(Class c, List<Annotation> a)
+   {
+      if(a == null)
+      {
+         a = new ArrayList<Annotation>();         
+      }
+      
+      if(c.equals(Object.class))
+      {
+         return a;
+      }
+      
+      else
+      {
+         a.addAll(Arrays.asList(c.getDeclaredAnnotations()));
+      }
+     
+      
+      return getAllAnnotationsForClass(c.getSuperclass(), a);
+
+   }
+   private static List<Field> getAllFieldsForClass(Class c, List<Field> fields)
+   {
+      if(fields == null)
+      {
+         fields = new ArrayList<Field>();         
+      }
+      
+      if(c.equals(Object.class))
+      {
+         return fields;
+      }
+      
+      else
+      {
+         fields.addAll(Arrays.asList(c.getDeclaredFields()));
+      }
+     
+      
+      return getAllFieldsForClass(c.getSuperclass(), fields);
+
+   }
+}

Modified: trunk/testsuite/src/main/org/jboss/test/jca/test/DeploymentUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/jca/test/DeploymentUnitTestCase.java	2007-10-12 02:59:41 UTC (rev 66066)
+++ trunk/testsuite/src/main/org/jboss/test/jca/test/DeploymentUnitTestCase.java	2007-10-12 03:02:46 UTC (rev 66067)
@@ -84,4 +84,5 @@
                                 new String[] {String.class.getName()});
    }
 
+
 }// DeploymentUnitTestCase

Added: trunk/testsuite/src/main/org/jboss/test/jca/test/ManagedDeploymentUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/jca/test/ManagedDeploymentUnitTestCase.java	                        (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/jca/test/ManagedDeploymentUnitTestCase.java	2007-10-12 03:02:46 UTC (rev 66067)
@@ -0,0 +1,186 @@
+package org.jboss.test.jca.test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.resource.deployers.builder.AbstractBuilder;
+import org.jboss.resource.deployers.builder.ConnectionFactoryBindingBuilder;
+import org.jboss.resource.deployers.builder.ConnectionManagerBuilder;
+import org.jboss.resource.deployers.builder.ManagedConnectionPoolBuilder;
+import org.jboss.resource.metadata.mcf.LocalDataSourceDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentGroup;
+import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryTransactionSupportMetaData;
+import org.jboss.resource.metadata.mcf.NoTxConnectionFactoryDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.NoTxDataSourceDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.TxConnectionFactoryDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.XADataSourceDeploymentMetaData;
+import org.jboss.system.metadata.ServiceMetaData;
+import org.jboss.test.JBossTestCase;
+import org.jboss.test.jca.support.ManagedDeploymentSupportHelper;
+
+/**
+ * A ManagedDeploymentUnitTestCase.
+ * 
+ * @author <a href="weston.price at jboss.org">Weston Price</a>
+ * @version $Revision: 1.1 $
+ */
+public class ManagedDeploymentUnitTestCase extends JBossTestCase
+{
+   public ManagedDeploymentUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public void testDefaultValuesUnmarshal() throws Exception
+   {
+      ManagedConnectionFactoryDeploymentGroup group = ManagedDeploymentSupportHelper.unmarshalResource("jca/deployment/default-content-ds.xml");
+      List<ManagedConnectionFactoryDeploymentMetaData> deployments = group.getDeployments();
+      
+      for (ManagedConnectionFactoryDeploymentMetaData md : deployments)
+      {
+         assertTrue(md.isUseJavaContext());
+         
+         if(md instanceof NoTxDataSourceDeploymentMetaData)
+         {
+            assertFalse(md.getLocalTransactions());
+            assertFalse(md.getTrackConnectionByTransaction());
+            assertTrue(md.getTransactionSupportMetaData().equals(ManagedConnectionFactoryTransactionSupportMetaData.NONE));
+  
+         }else if(md instanceof LocalDataSourceDeploymentMetaData)
+         {
+            assertTrue(md.getLocalTransactions());
+            assertTrue(md.getTrackConnectionByTransaction());
+            assertFalse(md.getNoTxSeparatePools());
+            assertTrue(md.getTransactionSupportMetaData().equals(ManagedConnectionFactoryTransactionSupportMetaData.LOCAL));
+            
+         }else if(md instanceof XADataSourceDeploymentMetaData)
+         {
+            assertFalse(md.getLocalTransactions());
+            assertFalse(md.getTrackConnectionByTransaction());
+            assertTrue(md.getTransactionSupportMetaData().equals(ManagedConnectionFactoryTransactionSupportMetaData.XA));
+  
+         }
+         else if(md instanceof TxConnectionFactoryDeploymentMetaData)
+         {
+            TxConnectionFactoryDeploymentMetaData txmd = (TxConnectionFactoryDeploymentMetaData)md;               
+
+            if(txmd.getJndiName().equalsIgnoreCase("Local"))
+            {
+               assertTrue(txmd.getLocalTransactions());
+               assertFalse(txmd.getXATransaction());
+               assertTrue(txmd.getTransactionSupportMetaData().equals(ManagedConnectionFactoryTransactionSupportMetaData.LOCAL));
+            }
+            else
+            {
+               assertFalse(txmd.getLocalTransactions());
+               assertTrue(txmd.getXATransaction());
+               assertTrue(txmd.getTransactionSupportMetaData().equals(ManagedConnectionFactoryTransactionSupportMetaData.XA));
+            }
+         }
+         else if(md instanceof NoTxConnectionFactoryDeploymentMetaData)
+         {
+            assertFalse(md.getLocalTransactions());
+            assertFalse(md.getTrackConnectionByTransaction());
+            assertTrue(md.getTransactionSupportMetaData().equals(ManagedConnectionFactoryTransactionSupportMetaData.NONE));
+
+         }
+      }
+      
+   }
+   
+   
+   public void testConnectionPoolUnmarshal() throws Exception
+   {
+      ManagedConnectionFactoryDeploymentGroup group = ManagedDeploymentSupportHelper.unmarshalResource("jca/deployment/pool-content-ds.xml");
+      ManagedConnectionFactoryDeploymentMetaData md = group.getDeployments().get(0);
+      assertTrue(md.isPrefill());   
+   }
+   
+   public void testBasicMarshal() throws Exception
+   {
+      ManagedConnectionFactoryDeploymentGroup group = ManagedDeploymentSupportHelper.unmarshalResource("jca/remote-jdbc/remote-ds.xml");
+      String result = ManagedDeploymentSupportHelper.marshalResourceAsString(group);
+      group = ManagedDeploymentSupportHelper.unmarshalSource(result);
+      
+   }
+   
+   public void testEmptyContentUnmarshal() throws Exception
+   {
+      ManagedConnectionFactoryDeploymentGroup group = ManagedDeploymentSupportHelper.unmarshalResource("jca/deployment/empty-content-ds.xml");
+      ManagedConnectionFactoryDeploymentMetaData md = group.getDeployments().get(0);
+      assertTrue(md.getTrackConnectionByTransaction());
+      assertTrue(md.getNoTxSeparatePools());
+      assertTrue(md.getUseStrictMin());
+   }
+   
+   public void testEmptyContentMarshal() throws Exception
+   {
+      ManagedConnectionFactoryDeploymentGroup group = ManagedDeploymentSupportHelper.unmarshalResource("jca/deployment/empty-content-ds.xml");
+      ManagedConnectionFactoryDeploymentMetaData md = group.getDeployments().get(0);
+      String result = ManagedDeploymentSupportHelper.marshalResourceAsString(group);
+      group = ManagedDeploymentSupportHelper.unmarshalSource(result);
+      assertTrue(md.getTrackConnectionByTransaction());
+      assertTrue(md.getNoTxSeparatePools());
+      assertTrue(md.getUseStrictMin());
+      
+   }
+   
+   public void testBasicUnmarshal() throws Exception
+   {
+      ManagedConnectionFactoryDeploymentGroup group = ManagedDeploymentSupportHelper.unmarshalResource("jca/remote-jdbc/remote-ds.xml");
+      ManagedConnectionFactoryDeploymentMetaData md = group.getDeployments().get(0);
+
+      assertTrue(group.getDeployments().size() == 1);
+      assertTrue(md instanceof LocalDataSourceDeploymentMetaData);
+      assertTrue(md.getLocalTransactions());
+
+      assertTrue(ManagedDeploymentSupportHelper.isValidDeployment("jca/remote-jdbc/remote-ds.xml", md, "jndi-name",
+            "connection-url"));
+
+      assertTrue(ManagedDeploymentSupportHelper.hasAnnotation(md, "jndiName"));
+
+   }
+
+   public void testServiceMetaDataBuilder() throws Exception
+   {
+      List<AbstractBuilder> builders = new ArrayList<AbstractBuilder>();
+      // builders.add(new ManagedConnectionFactoryBuilder());
+      builders.add(new ManagedConnectionPoolBuilder());
+      builders.add(new ConnectionFactoryBindingBuilder());
+      builders.add(new ConnectionManagerBuilder());
+
+      // builders.add(new MetaDataTypeMappingBuilder());
+
+      ManagedConnectionFactoryDeploymentGroup group = ManagedDeploymentSupportHelper.unmarshalResource("jca/remote-jdbc/remote-ds.xml");      
+      ManagedConnectionFactoryDeploymentMetaData mcmd = group.getDeployments().get(0);
+
+      List<ServiceMetaData> results = new ArrayList<ServiceMetaData>();
+
+      for (AbstractBuilder abstractBuilder : builders)
+      {
+         ServiceMetaData md = abstractBuilder.build(mcmd);
+         results.add(md);
+      }
+      
+      
+   }
+
+   public static Test suite() throws Exception
+   {
+      TestSuite suite = new TestSuite();
+      suite.addTest(new ManagedDeploymentUnitTestCase("testBasicUnmarshal"));
+      suite.addTest(new ManagedDeploymentUnitTestCase("testServiceMetaDataBuilder"));
+      suite.addTest(new ManagedDeploymentUnitTestCase("testBasicMarshal"));
+      suite.addTest(new ManagedDeploymentUnitTestCase("testEmptyContentUnmarshal"));
+      suite.addTest(new ManagedDeploymentUnitTestCase("testEmptyContentMarshal"));
+      suite.addTest(new ManagedDeploymentUnitTestCase("testDefaultValuesUnmarshal"));
+      suite.addTest(new ManagedDeploymentUnitTestCase("testConnectionPoolUnmarshal"));
+
+      return suite;
+   }
+
+}

Added: trunk/testsuite/src/resources/jca/deployment/default-content-ds.xml
===================================================================
--- trunk/testsuite/src/resources/jca/deployment/default-content-ds.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/jca/deployment/default-content-ds.xml	2007-10-12 03:02:46 UTC (rev 66067)
@@ -0,0 +1,34 @@
+<datasources>   
+   <no-tx-datasource>
+      <jndi-name>RemoteDS</jndi-name>
+      <connection-url>jdbc:hsqldb:mem:RemoteDSDB</connection-url>
+      <driver-class>org.hsqldb.jdbcDriver</driver-class>
+      <metadata>
+         <type-mapping>Hypersonic SQL</type-mapping>
+      </metadata>
+	  <application-managed-security/>
+   </no-tx-datasource>
+      
+   <local-tx-datasource>
+      <jndi-name>RemoteDS</jndi-name>
+      <connection-url>jdbc:hsqldb:mem:RemoteDSDB</connection-url>
+      <driver-class>org.hsqldb.jdbcDriver</driver-class>
+      <application-managed-security />
+      <metadata>
+         <type-mapping>Hypersonic SQL</type-mapping>
+      </metadata>\
+   </local-tx-datasource>
+
+	<xa-datasource>   	     
+    </xa-datasource>
+	
+	<tx-connection-factory>
+		<jndi-name>Local</jndi-name>		
+	</tx-connection-factory>	
+
+	<tx-connection-factory>
+		<jndi-name>XA</jndi-name>		
+		<xa-transaction/>
+	</tx-connection-factory>	
+
+</datasources>
\ No newline at end of file

Added: trunk/testsuite/src/resources/jca/deployment/empty-content-ds.xml
===================================================================
--- trunk/testsuite/src/resources/jca/deployment/empty-content-ds.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/jca/deployment/empty-content-ds.xml	2007-10-12 03:02:46 UTC (rev 66067)
@@ -0,0 +1,15 @@
+<datasources>
+   <local-tx-datasource>
+      <jndi-name>RemoteDS</jndi-name>
+      <use-java-context>false</use-java-context>
+      <connection-url>jdbc:hsqldb:mem:RemoteDSDB</connection-url>
+      <driver-class>org.hsqldb.jdbcDriver</driver-class>
+      <application-managed-security />
+      <metadata>
+         <type-mapping>Hypersonic SQL</type-mapping>
+      </metadata>
+   	  <track-connection-by-tx/>
+   	  <no-tx-seperate-pools/>
+   	  <use-strict-min/>   		
+   </local-tx-datasource>
+</datasources>
\ No newline at end of file

Added: trunk/testsuite/src/resources/jca/deployment/invalid-content-ds.xml
===================================================================
--- trunk/testsuite/src/resources/jca/deployment/invalid-content-ds.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/jca/deployment/invalid-content-ds.xml	2007-10-12 03:02:46 UTC (rev 66067)
@@ -0,0 +1,14 @@
+<datasources>
+   <local-tx-datasource>
+      <use-java-context>false</use-java-context>
+      <connection-url>jdbc:hsqldb:mem:RemoteDSDB</connection-url>
+      <driver-class>org.hsqldb.jdbcDriver</driver-class>
+      <application-managed-security />
+      <metadata>
+         <type-mapping>Hypersonic SQL</type-mapping>
+      </metadata>
+   	  <track-connection-by-tx/>
+   	  <no-tx-seperate-pools/>
+   	  <use-strict-min/>   		
+   </local-tx-datasource>
+</datasources>
\ No newline at end of file

Added: trunk/testsuite/src/resources/jca/deployment/pool-content-ds.xml
===================================================================
--- trunk/testsuite/src/resources/jca/deployment/pool-content-ds.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/jca/deployment/pool-content-ds.xml	2007-10-12 03:02:46 UTC (rev 66067)
@@ -0,0 +1,14 @@
+<datasources>
+   <local-tx-datasource>
+      <jndi-name>RemoteDS</jndi-name>
+      <use-java-context>false</use-java-context>
+      <connection-url>jdbc:hsqldb:mem:RemoteDSDB</connection-url>
+      <driver-class>org.hsqldb.jdbcDriver</driver-class>
+      <application-managed-security />
+      <metadata>
+         <type-mapping>Hypersonic SQL</type-mapping>
+      </metadata>
+	  <prefill>true</prefill>	
+   </local-tx-datasource>
+
+</datasources>
\ No newline at end of file




More information about the jboss-cvs-commits mailing list