[jboss-cvs] JBossAS SVN: r78786 - in trunk: connector/src/main/org/jboss/resource/metadata/mcf and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Sep 23 10:08:49 EDT 2008


Author: alex.loubyansky at jboss.com
Date: 2008-09-23 10:08:49 -0400 (Tue, 23 Sep 2008)
New Revision: 78786

Added:
   trunk/connector/src/main/org/jboss/resource/metadata/mcf/ManagedConnectionStringAdapter.java
   trunk/testsuite/src/main/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase.java
   trunk/testsuite/src/resources/org/jboss/test/jca/
   trunk/testsuite/src/resources/org/jboss/test/jca/test/
   trunk/testsuite/src/resources/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase_testStringSystemPropertiesLocalDs.xml
   trunk/testsuite/src/resources/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase_testStringSystemPropertiesXaDs.xml
Modified:
   trunk/connector/src/main/org/jboss/resource/connectionmanager/ManagedConnectionFactoryDeployment.java
   trunk/connector/src/main/org/jboss/resource/metadata/mcf/DBMSMetaData.java
   trunk/connector/src/main/org/jboss/resource/metadata/mcf/DataSourceConnectionPropertyMetaData.java
   trunk/connector/src/main/org/jboss/resource/metadata/mcf/DataSourceDeploymentMetaData.java
   trunk/connector/src/main/org/jboss/resource/metadata/mcf/ManagedConnectionFactoryDeploymentMetaData.java
   trunk/connector/src/main/org/jboss/resource/metadata/mcf/NonXADataSourceDeploymentMetaData.java
   trunk/connector/src/main/org/jboss/resource/metadata/mcf/XADataSourceDeploymentMetaData.java
Log:
JBAS-4585

Modified: trunk/connector/src/main/org/jboss/resource/connectionmanager/ManagedConnectionFactoryDeployment.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/connectionmanager/ManagedConnectionFactoryDeployment.java	2008-09-23 12:36:59 UTC (rev 78785)
+++ trunk/connector/src/main/org/jboss/resource/connectionmanager/ManagedConnectionFactoryDeployment.java	2008-09-23 14:08:49 UTC (rev 78786)
@@ -50,7 +50,6 @@
 
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.logging.Logger;
-import org.jboss.metadata.MetaData;
 import org.jboss.resource.metadata.ConfigPropertyMetaData;
 import org.jboss.resource.metadata.ConnectionDefinitionMetaData;
 import org.jboss.resource.metadata.ConnectorMetaData;
@@ -60,10 +59,7 @@
 import org.jboss.system.ServiceDynamicMBeanSupport;
 import org.jboss.util.Classes;
 import org.jboss.util.NestedRuntimeException;
-import org.jboss.util.StringPropertyReplacer;
 import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 
 /**
@@ -501,8 +497,7 @@
                   + "skipping property");
             continue;
          }
-         // TODO: should happen in parsing layer?
-         value = StringPropertyReplacer.replaceProperties(value);
+
          log.debug("setting property: " + name + " to value " + value);
          try
          {
@@ -561,8 +556,7 @@
                   + "skipping property");
             continue;
          }
-         // TODO: should happen in parsing layer?
-         value = StringPropertyReplacer.replaceProperties(value);
+
          log.debug("setting property: " + name + " to value " + value);
          try
          {

Modified: trunk/connector/src/main/org/jboss/resource/metadata/mcf/DBMSMetaData.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/metadata/mcf/DBMSMetaData.java	2008-09-23 12:36:59 UTC (rev 78785)
+++ trunk/connector/src/main/org/jboss/resource/metadata/mcf/DBMSMetaData.java	2008-09-23 14:08:49 UTC (rev 78786)
@@ -26,7 +26,6 @@
 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;
 
 /**
@@ -42,7 +41,7 @@
    private static final long serialVersionUID = -5511233258559770711L;
    
    @XmlElement(name="type-mapping")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String typeMapping;
 
    public String getTypeMapping()

Modified: trunk/connector/src/main/org/jboss/resource/metadata/mcf/DataSourceConnectionPropertyMetaData.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/metadata/mcf/DataSourceConnectionPropertyMetaData.java	2008-09-23 12:36:59 UTC (rev 78785)
+++ trunk/connector/src/main/org/jboss/resource/metadata/mcf/DataSourceConnectionPropertyMetaData.java	2008-09-23 14:08:49 UTC (rev 78786)
@@ -25,6 +25,7 @@
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.jboss.managed.api.annotation.ManagementObject;
 import org.jboss.managed.api.annotation.ManagementProperty;
@@ -45,6 +46,7 @@
    protected String name;
    
    @XmlValue
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    protected String value;
 
    public String getName()

Modified: trunk/connector/src/main/org/jboss/resource/metadata/mcf/DataSourceDeploymentMetaData.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/metadata/mcf/DataSourceDeploymentMetaData.java	2008-09-23 12:36:59 UTC (rev 78785)
+++ trunk/connector/src/main/org/jboss/resource/metadata/mcf/DataSourceDeploymentMetaData.java	2008-09-23 14:08:49 UTC (rev 78786)
@@ -25,7 +25,6 @@
 import java.util.List;
 
 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.ManagementProperty;
@@ -47,39 +46,39 @@
    private static final String RAR_NAME = "jboss-local-jdbc.rar";
 
    @XmlElement(name="transaction-isolation")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String transactionIsolation;
    
    @XmlElement(name="user-name")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String userName;
    
    @XmlElement(name="password")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String passWord;
    
    @XmlElement(name="new-connection-sql")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String newConnectionSQL;
    
    @XmlElement(name="check-valid-connection-sql")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String checkValidConnectionSQL;
    
    @XmlElement(name="valid-connection-checker-class-name")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String validConnectionCheckerClassName;
    
    @XmlElement(name="exception-sorter-class-name")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String exceptionSorterClassName;
    
    @XmlElement(name="stale-connection-checker-class-name")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String staleConnectionCheckerClassName;
    
    @XmlElement(name="track-statements")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String trackStatements;
    
    @XmlElement(name="prepared-statement-cache-size")
@@ -98,11 +97,11 @@
    private long useTryLock;
    
    @XmlElement(name="url-delimiter")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String urlDelimiter;
    
    @XmlElement(name="url-selector-strategy-class-name")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String urlSelectorStrategyClassName;
    
    public DataSourceDeploymentMetaData()

Modified: trunk/connector/src/main/org/jboss/resource/metadata/mcf/ManagedConnectionFactoryDeploymentMetaData.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/metadata/mcf/ManagedConnectionFactoryDeploymentMetaData.java	2008-09-23 12:36:59 UTC (rev 78785)
+++ trunk/connector/src/main/org/jboss/resource/metadata/mcf/ManagedConnectionFactoryDeploymentMetaData.java	2008-09-23 14:08:49 UTC (rev 78786)
@@ -30,7 +30,6 @@
 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;
@@ -59,12 +58,12 @@
 
    /** The jndiName */   
    @XmlElement(name="jndi-name")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String jndiName;   
    
    /** The rarName */
    @XmlElement(name="rar-name")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String rarName;
    
    /** The useJavaContext */
@@ -73,12 +72,12 @@
    
    /** The connectionDefinition */
    @XmlElement(name="connection-definition")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    protected String connectionDefinition;
 
    /** The jmxInvokerName */
    @XmlElement(name="jmx-invoker-name")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String jmxInvokerName = "jboss:service=invoker,type=jrmp";
    
    @XmlElement(name="min-pool-size")
@@ -114,7 +113,7 @@
    private Boolean noTxSeparatePools = Boolean.FALSE;
    
    @XmlElement(name="statistics-formatter")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String statisticsFormatter = "org.jboss.resource.statistic.pool.JBossDefaultSubPoolStatisticFormatter";
    
    @XmlElement(name="isSameRM-override-value")

Added: trunk/connector/src/main/org/jboss/resource/metadata/mcf/ManagedConnectionStringAdapter.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/metadata/mcf/ManagedConnectionStringAdapter.java	                        (rev 0)
+++ trunk/connector/src/main/org/jboss/resource/metadata/mcf/ManagedConnectionStringAdapter.java	2008-09-23 14:08:49 UTC (rev 78786)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.resource.metadata.mcf;
+
+
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+
+import org.jboss.util.StringPropertyReplacer;
+
+/**
+ * A ManagedConnectionSystemPropertyResolverAdpater.
+ * 
+ * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @version $Revision: 1.1 $
+ */
+public class ManagedConnectionStringAdapter extends CollapsedStringAdapter
+{
+   @Override
+   public String marshal(String v)
+   {
+      return super.marshal(v);
+   }
+
+   @Override
+   public String unmarshal(String v)
+   {
+      v = super.unmarshal(v);
+      return v == null ? null : StringPropertyReplacer.replaceProperties(v);
+   }
+}

Modified: trunk/connector/src/main/org/jboss/resource/metadata/mcf/NonXADataSourceDeploymentMetaData.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/metadata/mcf/NonXADataSourceDeploymentMetaData.java	2008-09-23 12:36:59 UTC (rev 78785)
+++ trunk/connector/src/main/org/jboss/resource/metadata/mcf/NonXADataSourceDeploymentMetaData.java	2008-09-23 14:08:49 UTC (rev 78786)
@@ -27,7 +27,6 @@
 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.ManagementProperty;
@@ -47,11 +46,11 @@
 public abstract class NonXADataSourceDeploymentMetaData extends DataSourceDeploymentMetaData
 {
    @XmlElement(name="driver-class", required=true)
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String driverClass;
    
    @XmlElement(name="connection-url", required=true)
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String connectionUrl;
    
    @XmlElement(name="connection-property")

Modified: trunk/connector/src/main/org/jboss/resource/metadata/mcf/XADataSourceDeploymentMetaData.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/metadata/mcf/XADataSourceDeploymentMetaData.java	2008-09-23 12:36:59 UTC (rev 78785)
+++ trunk/connector/src/main/org/jboss/resource/metadata/mcf/XADataSourceDeploymentMetaData.java	2008-09-23 14:08:49 UTC (rev 78786)
@@ -28,7 +28,6 @@
 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.ManagementComponent;
@@ -56,14 +55,14 @@
    private static final String RAR_NAME = "jboss-xa-jdbc.rar";
    
    @XmlElement(name="xa-datasource-class")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String xaDataSourceClass;
    
    @XmlElement(name="xa-datasource-property")
    private List<XAConnectionPropertyMetaData> xaDataSourceProperties = new ArrayList<XAConnectionPropertyMetaData>();
    
    @XmlElement(name="url-property")
-   @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+   @XmlJavaTypeAdapter(ManagedConnectionStringAdapter.class)
    private String urlProperty;
 
    @XmlElement(name="xa-resource-timeout")

Added: trunk/testsuite/src/main/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase.java	                        (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase.java	2008-09-23 14:08:49 UTC (rev 78786)
@@ -0,0 +1,222 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.jca.test;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.stream.StreamSource;
+
+import org.jboss.resource.metadata.mcf.DBMSMetaData;
+import org.jboss.resource.metadata.mcf.DataSourceConnectionPropertyMetaData;
+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.jboss.resource.metadata.mcf.XAConnectionPropertyMetaData;
+import org.jboss.resource.metadata.mcf.XADataSourceDeploymentMetaData;
+import org.jboss.test.AbstractTestCaseWithSetup;
+import org.jboss.test.AbstractTestDelegate;
+
+
+/**
+ * A DsXmlJAXBUnmarshallingUnitTestCase.
+ * 
+ * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @version $Revision: 1.1 $
+ */
+public class DsXmlJAXBUnmarshallingUnitTestCase extends AbstractTestCaseWithSetup
+{
+   private static final String PROP_PREFIX = "org.jboss.test.jca.test.";
+   private static final Object[] ARGS = new Object[0];
+
+   public DsXmlJAXBUnmarshallingUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public void testStringSystemPropertiesLocalDs() throws Exception
+   {
+      String xml = findXML(getRootName() + "_" + getName() + ".xml");
+
+      Map<String, Method> supportedElements = new HashMap<String, Method>();
+      addElement(supportedElements, "check-valid-connection-sql", "getCheckValidConnectionSQL");
+      addElement(supportedElements, "exception-sorter-class-name", "getExceptionSorterClassName");
+      addElement(supportedElements, "new-connection-sql", "getNewConnectionSQL");
+      addElement(supportedElements, "password", "getPassWord");
+      addElement(supportedElements, "stale-connection-checker-class-name", "getStaleConnectionCheckerClassName");
+      addElement(supportedElements, "transaction-isolation", "getTransactionIsolation");
+      addElement(supportedElements, "url-delimiter", "getURLDelimiter");
+      addElement(supportedElements, "url-selector-strategy-class-name", "getURLSelectorStrategyClassName");
+      addElement(supportedElements, "user-name", "getUserName");
+      addElement(supportedElements, "valid-connection-checker-class-name", "getValidConnectionCheckerClassName");
+      // ManagedConnectionFactoryDeploymentMetaData
+      addElement(supportedElements, "connection-definition", "getConnectionDefinition");
+      addElement(supportedElements, "jmx-invoker-name", "getJmxInvokerName");
+      addElement(supportedElements, "jndi-name", "getJndiName");
+      addElement(supportedElements, "rar-name", "getRarName");
+      addElement(supportedElements, "statistics-formatter", "getStatisticsFormatter");
+      // NonXADataSourceDeploymentMetaData
+      addElement(supportedElements, "connection-url", "getConnectionUrl");
+      addElement(supportedElements, "driver-class", "getDriverClass");
+
+      setSystemProperties(supportedElements);
+      System.setProperty(PROP_PREFIX + "type-mapping", "type-mapping");
+      System.setProperty(PROP_PREFIX + "connection-property", "connection-property");
+      
+      JAXBContext context = JAXBContext.newInstance(ManagedConnectionFactoryDeploymentGroup.class);
+      Unmarshaller um = context.createUnmarshaller();      
+      JAXBElement<ManagedConnectionFactoryDeploymentGroup> elem = um.unmarshal(new StreamSource(xml), ManagedConnectionFactoryDeploymentGroup.class);
+      ManagedConnectionFactoryDeploymentGroup deployment = elem.getValue();
+      List<ManagedConnectionFactoryDeploymentMetaData> deployments = deployment.getDeployments();
+      assertNotNull(deployments);
+      assertEquals(1, deployments.size());
+      ManagedConnectionFactoryDeploymentMetaData ds = deployments.get(0);
+      assertNotNull(ds);
+      
+      assertValues(supportedElements, ds);
+      
+      DBMSMetaData metaData = ds.getDBMSMetaData();
+      assertNotNull(metaData);
+      assertEquals("type-mapping", metaData.getTypeMapping());
+      
+      List<DataSourceConnectionPropertyMetaData> props = ((NonXADataSourceDeploymentMetaData)ds).getDataSourceConnectionProperties();
+      assertNotNull(props);
+      assertEquals(1, props.size());
+      DataSourceConnectionPropertyMetaData prop = props.get(0);
+      assertNotNull(prop);
+      assertEquals("connection-property", prop.getName());
+      assertEquals("connection-property", prop.getValue());
+   }
+
+   public void testStringSystemPropertiesXaDs() throws Exception
+   {
+      String xml = findXML(getRootName() + "_" + getName() + ".xml");
+
+      Map<String, Method> supportedElements = new HashMap<String, Method>();
+      addElement(supportedElements, "xa-datasource-class", "getXaDataSourceClass", XADataSourceDeploymentMetaData.class);
+      addElement(supportedElements, "url-property", "getURLProperty", XADataSourceDeploymentMetaData.class);
+
+      setSystemProperties(supportedElements);
+      System.setProperty(PROP_PREFIX + "xa-datasource-property", "xa-datasource-property");
+      
+      JAXBContext context = JAXBContext.newInstance(ManagedConnectionFactoryDeploymentGroup.class);
+      Unmarshaller um = context.createUnmarshaller();      
+      JAXBElement<ManagedConnectionFactoryDeploymentGroup> elem = um.unmarshal(new StreamSource(xml), ManagedConnectionFactoryDeploymentGroup.class);
+      ManagedConnectionFactoryDeploymentGroup deployment = elem.getValue();
+      List<ManagedConnectionFactoryDeploymentMetaData> deployments = deployment.getDeployments();
+      assertNotNull(deployments);
+      assertEquals(1, deployments.size());
+      XADataSourceDeploymentMetaData ds = (XADataSourceDeploymentMetaData) deployments.get(0);
+      assertNotNull(ds);
+      
+      assertValues(supportedElements, ds);
+      
+      List<XAConnectionPropertyMetaData> props = ds.getXADataSourceProperties();
+      assertNotNull(props);
+      assertEquals(1, props.size());
+      XAConnectionPropertyMetaData prop = props.get(0);
+      assertNotNull(prop);
+      assertEquals("xa-datasource-property", prop.getName());
+      assertEquals("xa-datasource-property", prop.getValue());
+   }
+
+   private void assertValues(Map<String, Method> supportedElements,
+         ManagedConnectionFactoryDeploymentMetaData ds) throws IllegalAccessException,
+         InvocationTargetException
+   {
+      for(Map.Entry<String, Method> entry : supportedElements.entrySet())
+      {
+         String expected = entry.getKey(); //System.getProperty(propPrefix + entry.getKey());
+         System.clearProperty(PROP_PREFIX + entry.getKey());
+         assertNotNull(expected);
+         Object actual = entry.getValue().invoke(ds, ARGS);
+         assertEquals(expected, actual);
+      }
+   }
+
+   private void setSystemProperties(Map<String, Method> supportedElements)
+   {
+      for(String element : supportedElements.keySet())
+         System.setProperty(PROP_PREFIX + element, element);
+   }
+
+   private void addElement(Map<String, Method> supportedElements, String elementName, String getterName)
+         throws NoSuchMethodException
+   {
+      addElement(supportedElements, elementName, getterName, LocalDataSourceDeploymentMetaData.class);
+   }
+
+   private void addElement(Map<String, Method> supportedElements, String elementName, String getterName, Class<?> cls)
+         throws NoSuchMethodException
+   {
+      Class<?>[] types = new Class[0];
+      supportedElements.put(elementName, getterName == null ? null : cls.getMethod(getterName, types));
+   }
+   
+   /**
+    * Setup the test delegate
+    * 
+    * @param clazz the class
+    * @return the delegate
+    * @throws Exception for any error
+    */
+   public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
+   {
+      return new AbstractTestDelegate(clazz);
+   }
+
+   /**
+    * Find the xml
+    * 
+    * @param name the name
+    * @return the url of the xml
+    */
+   protected String findXML(String name)
+   {
+      URL url = getResource(name);
+      if (url == null)
+         fail(name + " not found");
+      return url.toString();
+   }
+
+   /**
+    * Get the package root name
+    * 
+    * @return the root name
+    */
+   protected String getRootName()
+   {
+      String longName = getClass().getName();
+      int dot = longName.lastIndexOf('.');
+      if (dot != -1)
+         return longName.substring(dot + 1);
+      return longName;
+   }
+}

Added: trunk/testsuite/src/resources/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase_testStringSystemPropertiesLocalDs.xml
===================================================================
--- trunk/testsuite/src/resources/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase_testStringSystemPropertiesLocalDs.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase_testStringSystemPropertiesLocalDs.xml	2008-09-23 14:08:49 UTC (rev 78786)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<datasources>
+   <local-tx-datasource>
+
+      <jndi-name>${org.jboss.test.jca.test.jndi-name}</jndi-name>
+      <connection-url>${org.jboss.test.jca.test.connection-url}</connection-url>
+      <driver-class>${org.jboss.test.jca.test.driver-class}</driver-class>
+      <user-name>${org.jboss.test.jca.test.user-name}</user-name>
+      <password>${org.jboss.test.jca.test.password}</password>
+      <exception-sorter-class-name>${org.jboss.test.jca.test.exception-sorter-class-name}</exception-sorter-class-name>
+      <check-valid-connection-sql>${org.jboss.test.jca.test.check-valid-connection-sql}</check-valid-connection-sql>
+      <new-connection-sql>${org.jboss.test.jca.test.new-connection-sql}</new-connection-sql>
+      <valid-connection-checker-class-name>${org.jboss.test.jca.test.valid-connection-checker-class-name}</valid-connection-checker-class-name>
+      <stale-connection-checker-class-name>${org.jboss.test.jca.test.stale-connection-checker-class-name}</stale-connection-checker-class-name>
+      <transaction-isolation>${org.jboss.test.jca.test.transaction-isolation}</transaction-isolation>
+      <url-delimiter>${org.jboss.test.jca.test.url-delimiter}</url-delimiter>
+      <url-selector-strategy-class-name>${org.jboss.test.jca.test.url-selector-strategy-class-name}</url-selector-strategy-class-name>
+
+      <connection-definition>${org.jboss.test.jca.test.connection-definition}</connection-definition>
+      <jmx-invoker-name>${org.jboss.test.jca.test.jmx-invoker-name}</jmx-invoker-name>
+      <rar-name>${org.jboss.test.jca.test.rar-name}</rar-name>
+      <statistics-formatter>${org.jboss.test.jca.test.statistics-formatter}</statistics-formatter>
+
+      <!-- Use the security domain defined in conf/login-config.xml -->
+      <security-domain>HsqlDbRealm</security-domain>
+
+      <!-- Use the security domain defined in conf/login-config.xml or the
+           getConnection(user, pw) for logins. The security domain takes precedence.
+        <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
+      -->
+
+      <metadata>
+         <type-mapping>${org.jboss.test.jca.test.type-mapping}</type-mapping>
+      </metadata>
+
+      <connection-property name="connection-property" type="java.lang.String">${org.jboss.test.jca.test.connection-property}</connection-property> 
+
+   </local-tx-datasource>
+   
+</datasources>

Added: trunk/testsuite/src/resources/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase_testStringSystemPropertiesXaDs.xml
===================================================================
--- trunk/testsuite/src/resources/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase_testStringSystemPropertiesXaDs.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/org/jboss/test/jca/test/DsXmlJAXBUnmarshallingUnitTestCase_testStringSystemPropertiesXaDs.xml	2008-09-23 14:08:49 UTC (rev 78786)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<datasources>
+
+   <xa-datasource>          
+      <xa-datasource-class>${org.jboss.test.jca.test.xa-datasource-class}</xa-datasource-class>
+      <xa-datasource-property name="xa-datasource-property">${org.jboss.test.jca.test.xa-datasource-property}</xa-datasource-property>
+      <url-property>${org.jboss.test.jca.test.url-property}</url-property>
+   </xa-datasource>
+   
+</datasources>




More information about the jboss-cvs-commits mailing list