[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