[jboss-cvs] JBossAS SVN: r109653 - in projects/jboss-jca/trunk/common/src: main/java/org/jboss/jca/common/api/metadata/common and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Dec 2 11:38:51 EST 2010


Author: maeste
Date: 2010-12-02 11:38:50 -0500 (Thu, 02 Dec 2010)
New Revision: 109653

Added:
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ValidatableMetadata.java
Removed:
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/ValidatableMetadata.java
Modified:
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonPool.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonSecurity.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/CommonDataSource.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/DataSources.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/JdbcAdapterExtension.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/Statement.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/TimeOut.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/Validation.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/Connector.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/ResourceAdapter.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/AbstractParser.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonIronJacamarParser.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonPoolImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonSecurityImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonXaPoolImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DataSourceAbstractImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DataSourceImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DatasourcesImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DsParser.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/StatementImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/TimeOutImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/ValidationImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/XADataSourceImpl.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ironjacamar/IronJacamarParser.java
   projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/resourceadapter/ResourceAdapterParser.java
   projects/jboss-jca/trunk/common/src/test/java/org/jboss/jca/common/metadata/ds/DsParserExampleTestCase.java
   projects/jboss-jca/trunk/common/src/test/java/org/jboss/jca/common/metadata/ds/DsParserForMinimalFileTestCase.java
Log:
JBJCA-478 implementation of metadata validation for datasources

Copied: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ValidatableMetadata.java (from rev 109652, projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/ValidatableMetadata.java)
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ValidatableMetadata.java	                        (rev 0)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ValidatableMetadata.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -0,0 +1,45 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.
+ */
+package org.jboss.jca.common.api.metadata;
+
+import org.jboss.jca.common.api.validator.ValidateException;
+
+/**
+ *
+ * A Validatable metadata
+ *
+ * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
+ *
+ */
+public interface ValidatableMetadata
+{
+
+   /**
+    *
+    * Validate this metadata according validation required by specification
+    *
+    * @throws ValidateException in case of validation fail
+    *
+    */
+   public void validate() throws ValidateException;
+
+}

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonPool.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonPool.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonPool.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.api.metadata.common;
 
 import org.jboss.jca.common.api.metadata.JCAMetadata;
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -33,7 +34,7 @@
  * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
  *
  */
-public interface CommonPool extends JCAMetadata
+public interface CommonPool extends JCAMetadata, ValidatableMetadata
 {
 
    /**

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonSecurity.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonSecurity.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonSecurity.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.api.metadata.common;
 
 import org.jboss.jca.common.api.metadata.JCAMetadata;
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -33,7 +34,7 @@
  * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
  *
  */
-public interface CommonSecurity extends JCAMetadata
+public interface CommonSecurity extends JCAMetadata, ValidatableMetadata
 {
    /**
     * Get the userName.

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/CommonDataSource.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/CommonDataSource.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/CommonDataSource.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.api.metadata.ds;
 
 import org.jboss.jca.common.api.metadata.JCAMetadata;
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
 import org.jboss.jca.common.api.metadata.common.CommonSecurity;
 
 /**
@@ -31,7 +32,7 @@
  * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
  *
  */
-public interface CommonDataSource extends JCAMetadata
+public interface CommonDataSource extends JCAMetadata, ValidatableMetadata
 {
 
    /**

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/DataSources.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/DataSources.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/DataSources.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -23,6 +23,7 @@
 
 
 import org.jboss.jca.common.api.metadata.JCAMetadata;
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
 
 import java.util.HashMap;
 import java.util.List;
@@ -37,7 +38,7 @@
  * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
  *
  */
-public interface DataSources extends JCAMetadata
+public interface DataSources extends JCAMetadata, ValidatableMetadata
 {
 
    /**

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/JdbcAdapterExtension.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/JdbcAdapterExtension.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/JdbcAdapterExtension.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,8 @@
 package org.jboss.jca.common.api.metadata.ds;
 
 import org.jboss.jca.common.api.metadata.JCAMetadata;
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -34,7 +36,7 @@
  * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
  *
  */
-public final class JdbcAdapterExtension implements JCAMetadata
+public final class JdbcAdapterExtension implements JCAMetadata, ValidatableMetadata
 {
 
    /** The serialVersionUID */
@@ -49,8 +51,9 @@
     *
     * @param className the className
     * @param configPropertiesMap configPropertiesMap
+    * @throws ValidateException ValidateException
     */
-   public JdbcAdapterExtension(String className, Map<String, String> configPropertiesMap)
+   public JdbcAdapterExtension(String className, Map<String, String> configPropertiesMap) throws ValidateException
    {
       super();
       this.className = className;
@@ -63,6 +66,7 @@
       {
          this.configPropertiesMap = Collections.emptyMap();
       }
+      this.validate();
    }
 
    /**
@@ -242,5 +246,12 @@
 
    }
 
+   @Override
+   public void validate() throws ValidateException
+   {
+      if (this.className == null || className.trim().length() == 0)
+         throw new ValidateException("connectionUrl is required in " + this.getClass().getCanonicalName());
+   }
+
 }
 

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/Statement.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/Statement.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/Statement.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.api.metadata.ds;
 
 import org.jboss.jca.common.api.metadata.JCAMetadata;
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -33,7 +34,7 @@
  * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
  *
  */
-public interface Statement extends JCAMetadata
+public interface Statement extends JCAMetadata, ValidatableMetadata
 {
 
    /**

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/TimeOut.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/TimeOut.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/TimeOut.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -21,6 +21,8 @@
  */
 package org.jboss.jca.common.api.metadata.ds;
 
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -31,7 +33,7 @@
  * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
  *
  */
-public interface TimeOut extends org.jboss.jca.common.api.metadata.common.CommonTimeOut
+public interface TimeOut extends org.jboss.jca.common.api.metadata.common.CommonTimeOut, ValidatableMetadata
 {
 
 

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/Validation.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/Validation.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ds/Validation.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,8 @@
 package org.jboss.jca.common.api.metadata.ds;
 
 
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -32,7 +34,7 @@
  * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
  *
  */
-public interface Validation extends org.jboss.jca.common.api.metadata.common.CommonValidation
+public interface Validation extends org.jboss.jca.common.api.metadata.common.CommonValidation, ValidatableMetadata
 {
 
    /**

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/Connector.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/Connector.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/Connector.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.api.metadata.ra;
 
 import org.jboss.jca.common.api.metadata.CopyableMetaData;
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
 
 import java.util.List;
 

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/ResourceAdapter.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/ResourceAdapter.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/ResourceAdapter.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.api.metadata.ra;
 
 import org.jboss.jca.common.api.metadata.CopyableMetaData;
+import org.jboss.jca.common.api.metadata.ValidatableMetadata;
 
 import java.util.List;
 

Deleted: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/ValidatableMetadata.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/ValidatableMetadata.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/ra/ValidatableMetadata.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -1,45 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, 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.
- */
-package org.jboss.jca.common.api.metadata.ra;
-
-import org.jboss.jca.common.api.validator.ValidateException;
-
-/**
- *
- * A Validatable metadata
- *
- * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
- *
- */
-public interface ValidatableMetadata
-{
-
-   /**
-    *
-    * Validate this metadata according validation required by specification
-    *
-    * @throws ValidateException in case of validation fail
-    *
-    */
-   public void validate() throws ValidateException;
-
-}

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/AbstractParser.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/AbstractParser.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/AbstractParser.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -26,6 +26,7 @@
 import org.jboss.jca.common.api.metadata.common.CommonXaPool;
 import org.jboss.jca.common.api.metadata.ds.DataSource;
 import org.jboss.jca.common.api.metadata.ds.XaDataSource;
+import org.jboss.jca.common.api.validator.ValidateException;
 import org.jboss.jca.common.metadata.common.CommonPoolImpl;
 import org.jboss.jca.common.metadata.common.CommonSecurityImpl;
 import org.jboss.jca.common.metadata.common.CommonXaPoolImpl;
@@ -159,8 +160,10 @@
     * @return the parsed {@link CommonPool} object
     * @throws XMLStreamException XMLStreamException
     * @throws ParserException ParserException
+    * @throws ValidateException ValidateException
     */
-   protected CommonPool parsePool(XMLStreamReader reader) throws XMLStreamException, ParserException
+   protected CommonPool parsePool(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
       Integer minPoolSize = null;
       Integer maxPoolSize = null;
@@ -225,8 +228,10 @@
     * @return a {@link CommonSecurity} object
     * @throws XMLStreamException XMLStreamException
     * @throws ParserException ParserException
+    * @throws ValidateException ValidateException
     */
-   protected CommonSecurity parseSecuritySettings(XMLStreamReader reader) throws XMLStreamException, ParserException
+   protected CommonSecurity parseSecuritySettings(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
 
       String userName = null;
@@ -280,8 +285,10 @@
    * @return the parsed {@link CommonXaPool} object
    * @throws XMLStreamException XMLStreamException
    * @throws ParserException ParserException
+    * @throws ValidateException ValidateException
    */
-   protected CommonXaPool parseXaPool(XMLStreamReader reader) throws XMLStreamException, ParserException
+   protected CommonXaPool parseXaPool(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
       Integer minPoolSize = null;
       Integer maxPoolSize = null;

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonIronJacamarParser.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonIronJacamarParser.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonIronJacamarParser.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -28,6 +28,7 @@
 import org.jboss.jca.common.api.metadata.common.CommonTimeOut;
 import org.jboss.jca.common.api.metadata.common.CommonValidation;
 import org.jboss.jca.common.api.metadata.resourceadapter.ResourceAdapter;
+import org.jboss.jca.common.api.validator.ValidateException;
 import org.jboss.jca.common.metadata.AbstractParser;
 import org.jboss.jca.common.metadata.ParserException;
 
@@ -57,9 +58,10 @@
     * @return the parse {@link CommonConnDef} object
     * @throws XMLStreamException XMLStreamException
     * @throws ParserException ParserException
+    * @throws ValidateException ValidateException
     */
    protected CommonConnDef parseConnectionDefinitions(XMLStreamReader reader) throws XMLStreamException,
-      ParserException
+      ParserException, ValidateException
    {
       HashMap<String, String> configProperties = new HashMap<String, String>();
       CommonSecurity security = null;

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonPoolImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonPoolImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonPoolImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.metadata.common;
 
 import org.jboss.jca.common.api.metadata.common.CommonPool;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 /**
  *
@@ -63,14 +64,17 @@
     * @param maxPoolSize maxPoolSize
     * @param prefill prefill
     * @param useStrictMin useStrictMin
+    * @throws ValidateException ValidateException
     */
    public CommonPoolImpl(Integer minPoolSize, Integer maxPoolSize, Boolean prefill, Boolean useStrictMin)
+      throws ValidateException
    {
       super();
       this.minPoolSize = minPoolSize;
       this.maxPoolSize = maxPoolSize;
       this.prefill = prefill;
       this.useStrictMin = useStrictMin;
+      this.validate();
    }
 
    /**
@@ -117,4 +121,14 @@
       return useStrictMin;
    }
 
+   @Override
+   public void validate() throws ValidateException
+   {
+      if (this.maxPoolSize != null && this.maxPoolSize < 0)
+         throw new ValidateException("maxPoolSize cannot be < 0");
+      if (this.minPoolSize != null && this.minPoolSize < 0)
+         throw new ValidateException("minPoolSize cannot be < 0");
+
+   }
+
 }

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonSecurityImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonSecurityImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonSecurityImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.metadata.common;
 
 import org.jboss.jca.common.api.metadata.common.CommonSecurity;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 
 /**
@@ -46,12 +47,14 @@
     *
     * @param userName userName
     * @param password password
+    * @throws ValidateException ValidateException
     */
-   public CommonSecurityImpl(String userName, String password)
+   public CommonSecurityImpl(String userName, String password) throws ValidateException
    {
       super();
       this.userName = userName;
       this.password = password;
+      this.validate();
    }
 
    /**
@@ -119,5 +122,10 @@
       return "SecurityImpl [userName=" + userName + ", password=" + password + "]";
    }
 
+   @Override
+   public void validate() throws ValidateException
+   {
+      //always validate, nothing is mandatory
+   }
 
 }

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonXaPoolImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonXaPoolImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonXaPoolImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.metadata.common;
 
 import org.jboss.jca.common.api.metadata.common.CommonXaPool;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 /**
  *
@@ -45,8 +46,6 @@
 
    private final Boolean noTxSeparatePool;
 
-
-
    /**
     * Create a new XaPoolImpl.
     *
@@ -59,10 +58,11 @@
     * @param padXid padXid
     * @param wrapXaDataSource wrapXaDataSource
     * @param noTxSeparatePool noTxSeparatePool
+    * @throws ValidateException ValidateException
     */
    public CommonXaPoolImpl(Integer minPoolSize, Integer maxPoolSize, Boolean prefill, Boolean useStrictMin,
       Boolean isSameRmOverride, Boolean interleaving, Boolean padXid, Boolean wrapXaDataSource,
-      Boolean noTxSeparatePool)
+      Boolean noTxSeparatePool) throws ValidateException
    {
       super(minPoolSize, maxPoolSize, prefill, useStrictMin);
       this.isSameRmOverride = isSameRmOverride;

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DataSourceAbstractImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DataSourceAbstractImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DataSourceAbstractImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -27,6 +27,7 @@
 import org.jboss.jca.common.api.metadata.ds.TimeOut;
 import org.jboss.jca.common.api.metadata.ds.TransactionIsolation;
 import org.jboss.jca.common.api.metadata.ds.Validation;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 /**
  *
@@ -110,11 +111,12 @@
     * @param poolName poolName
     * @param enabled enabled
     * @param jndiName jndiName
+    * @throws ValidateException ValidateException
     */
    protected DataSourceAbstractImpl(TransactionIsolation transactionIsolation, TimeOut timeOut,
       CommonSecurity security, Statement statement, Validation validation, String urlDelimiter,
-      String urlSelectorStrategyClassName, Boolean useJavaContext, String poolName, Boolean enabled,
-      String jndiName)
+      String urlSelectorStrategyClassName, Boolean useJavaContext, String poolName, Boolean enabled, String jndiName)
+      throws ValidateException
    {
       super();
       this.transactionIsolation = transactionIsolation;
@@ -128,6 +130,7 @@
       this.poolName = poolName;
       this.enabled = enabled;
       this.jndiName = jndiName;
+      partialCommonValidation();
    }
 
    /**
@@ -226,4 +229,27 @@
       return jndiName;
    }
 
+   /**
+    *
+    * Partial validation for common fields defined in this abstract class
+    *
+    * @throws ValidateException ValidateException
+    */
+   protected void partialCommonValidation() throws ValidateException
+   {
+      if (this.jndiName == null)
+         throw new ValidateException("jndiName is require in " + this.getClass().getCanonicalName());
+      if (this.poolName == null)
+         throw new ValidateException("poolName is require in " + this.getClass().getCanonicalName());
+
+      if (this.timeOut != null)
+         this.timeOut.validate();
+      if (this.security != null)
+         this.security.validate();
+      if (this.statement != null)
+         this.statement.validate();
+      if (this.validation != null)
+         this.validation.validate();
+   }
+
 }

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DataSourceImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DataSourceImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DataSourceImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -28,6 +28,7 @@
 import org.jboss.jca.common.api.metadata.ds.TimeOut;
 import org.jboss.jca.common.api.metadata.ds.TransactionIsolation;
 import org.jboss.jca.common.api.metadata.ds.Validation;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -77,13 +78,13 @@
     * @param enabled enabled
     * @param jndiName jndiName
     * @param pool pool
+    * @throws ValidateException ValidateException
     */
    public DataSourceImpl(String connectionUrl, String driverClass, String module,
-                         TransactionIsolation transactionIsolation,
-                         Map<String, String> connectionProperties, TimeOut timeOut, CommonSecurity security, 
-                         Statement statement, Validation validation, String urlDelimiter, 
-                         String urlSelectorStrategyClassName, String newConnectionSql,
-                         boolean useJavaContext, String poolName, boolean enabled, String jndiName, CommonPool pool)
+      TransactionIsolation transactionIsolation, Map<String, String> connectionProperties, TimeOut timeOut,
+      CommonSecurity security, Statement statement, Validation validation, String urlDelimiter,
+      String urlSelectorStrategyClassName, String newConnectionSql, boolean useJavaContext, String poolName,
+      boolean enabled, String jndiName, CommonPool pool) throws ValidateException
    {
       super(transactionIsolation, timeOut, security, statement, validation, urlDelimiter,
             urlSelectorStrategyClassName, useJavaContext, poolName, enabled, jndiName);
@@ -101,7 +102,7 @@
       }
       this.newConnectionSql = newConnectionSql;
       this.pool = pool;
-
+      this.validate();
    }
 
    /**
@@ -275,13 +276,22 @@
    @Override
    public String toString()
    {
-      return "DataSourceImpl [connectionUrl=" + connectionUrl + ", driverClass=" + driverClass +
-         ", module=" + module +
-         ", connectionProperties=" + connectionProperties + ", newConnectionSql=" + newConnectionSql +
-         ", pool=" + pool + ", transactionIsolation=" + transactionIsolation + ", timeOut=" + timeOut +
-         ", security=" + security + ", statement=" + statement + ", validation=" + validation +
-         ", urlDelimiter=" + urlDelimiter + ", urlSelectorStrategyClassName=" + urlSelectorStrategyClassName +
-         ", useJavaContext=" + useJavaContext + ", poolName=" + poolName + ", enabled=" + enabled +
-         ", jndiName=" + jndiName + "]";
+      return "DataSourceImpl [connectionUrl=" + connectionUrl + ", driverClass=" + driverClass + ", module=" +
+             module + ", connectionProperties=" + connectionProperties + ", newConnectionSql=" + newConnectionSql +
+             ", pool=" + pool + ", transactionIsolation=" + transactionIsolation + ", timeOut=" + timeOut +
+             ", security=" + security + ", statement=" + statement + ", validation=" + validation +
+             ", urlDelimiter=" + urlDelimiter + ", urlSelectorStrategyClassName=" + urlSelectorStrategyClassName +
+             ", useJavaContext=" + useJavaContext + ", poolName=" + poolName + ", enabled=" + enabled +
+             ", jndiName=" + jndiName + "]";
    }
+
+   @Override
+   public void validate() throws ValidateException
+   {
+      if (this.connectionUrl == null || this.connectionUrl.trim().length() == 0)
+         throw new ValidateException("connectionUrl is require in " + this.getClass().getCanonicalName());
+      if (this.driverClass == null || this.driverClass.trim().length() == 0)
+         throw new ValidateException("driverClass is require in " + this.getClass().getCanonicalName());
+
+   }
 }

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DatasourcesImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DatasourcesImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DatasourcesImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -24,6 +24,7 @@
 import org.jboss.jca.common.api.metadata.ds.DataSource;
 import org.jboss.jca.common.api.metadata.ds.DataSources;
 import org.jboss.jca.common.api.metadata.ds.XaDataSource;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -51,8 +52,9 @@
     *
     * @param datasource datasource
     * @param xaDataSource xaDataSource
+    * @throws ValidateException ValidateException
     */
-   public DatasourcesImpl(List<DataSource> datasource, List<XaDataSource> xaDataSource)
+   public DatasourcesImpl(List<DataSource> datasource, List<XaDataSource> xaDataSource) throws ValidateException
    {
       super();
       if (datasource != null)
@@ -73,6 +75,7 @@
       {
          this.xaDataSource = new ArrayList<XaDataSource>(0);
       }
+      this.validate();
    }
 
    /**
@@ -140,4 +143,18 @@
       return "DatasourcesImpl [datasource=" + datasource + ", xaDataSource=" + xaDataSource + "]";
    }
 
+   @Override
+   public void validate() throws ValidateException
+   {
+      //always validate if all contetents are validating
+      for (DataSource ds : this.datasource)
+      {
+         ds.validate();
+      }
+      for (XaDataSource xads : this.xaDataSource)
+      {
+         xads.validate();
+      }
+   }
+
 }

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DsParser.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DsParser.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/DsParser.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -34,6 +34,7 @@
 import org.jboss.jca.common.api.metadata.ds.Validation;
 import org.jboss.jca.common.api.metadata.ds.XaDataSource;
 import org.jboss.jca.common.api.metadata.ds.XaDataSource.Attribute;
+import org.jboss.jca.common.api.validator.ValidateException;
 import org.jboss.jca.common.metadata.AbstractParser;
 import org.jboss.jca.common.metadata.MetadataParser;
 import org.jboss.jca.common.metadata.ParserException;
@@ -125,7 +126,8 @@
 
    }
 
-   private DataSources parseDataSources(XMLStreamReader reader) throws XMLStreamException, ParserException
+   private DataSources parseDataSources(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
       ArrayList<XaDataSource> xaDataSource = new ArrayList<XaDataSource>();
       ArrayList<DataSource> datasource = new ArrayList<DataSource>();
@@ -169,7 +171,8 @@
       throw new ParserException("Reached end of xml document unexpectedly");
    }
 
-   private XaDataSource parseXADataSource(XMLStreamReader reader) throws XMLStreamException, ParserException
+   private XaDataSource parseXADataSource(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
       TransactionIsolation transactionIsolation = null;
       Map<String, String> xaDataSourceProperty = new HashMap<String, String>();
@@ -302,7 +305,8 @@
       throw new ParserException("Reached end of xml document unexpectedly");
    }
 
-   private DataSource parseDataSource(XMLStreamReader reader) throws XMLStreamException, ParserException
+   private DataSource parseDataSource(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
       Integer minPoolSize = null;
       Integer maxPoolSize = null;
@@ -441,7 +445,8 @@
       throw new ParserException("Reached end of xml document unexpectedly");
    }
 
-   private Validation parseValidationSetting(XMLStreamReader reader) throws XMLStreamException, ParserException
+   private Validation parseValidationSetting(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
       boolean validateOnMatch = false;
       boolean useFastFail = false;
@@ -521,7 +526,7 @@
    }
 
    private JdbcAdapterExtension parseJdbcAdapterExtension(XMLStreamReader reader, Validation.Tag enclosingTag)
-      throws XMLStreamException, ParserException
+      throws XMLStreamException, ParserException, ValidateException
    {
 
       String className = null;
@@ -582,7 +587,8 @@
 
 
 
-   private TimeOut parseTimeOutSettings(XMLStreamReader reader) throws XMLStreamException, ParserException
+   private TimeOut parseTimeOutSettings(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
 
       Long blockingTimeoutMillis = null;
@@ -660,7 +666,8 @@
       throw new ParserException("Reached end of xml document unexpectedly");
    }
 
-   private Statement parseStatementSettings(XMLStreamReader reader) throws XMLStreamException, ParserException
+   private Statement parseStatementSettings(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
 
       Long preparedStatementsCacheSize = null;

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/StatementImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/StatementImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/StatementImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.metadata.ds;
 
 import org.jboss.jca.common.api.metadata.ds.Statement;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 /**
  *
@@ -48,14 +49,16 @@
     * @param sharePreparedStatements sharePreparedStatements
     * @param preparedStatementsCacheSize preparedStatementsCacheSize
     * @param trackStatements trackStatements
+    * @throws ValidateException ValidateException
     */
    public StatementImpl(Boolean sharePreparedStatements, Long preparedStatementsCacheSize,
-         TrackStatementsEnum trackStatements)
+      TrackStatementsEnum trackStatements) throws ValidateException
    {
       super();
       this.sharePreparedStatements = sharePreparedStatements;
       this.preparedStatementsCacheSize = preparedStatementsCacheSize;
       this.trackStatements = trackStatements;
+      this.validate();
    }
 
    /**
@@ -138,5 +141,12 @@
             ", preparedStatementsCacheSize=" + preparedStatementsCacheSize +
             ", trackStatements=" + trackStatements + "]";
    }
+
+   @Override
+   public void validate() throws ValidateException
+   {
+      if (this.preparedStatementsCacheSize != null && this.preparedStatementsCacheSize < 0)
+         throw new ValidateException("preparedStatementsCacheSize cannot be < 0");
+   }
 }
 

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/TimeOutImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/TimeOutImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/TimeOutImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.metadata.ds;
 
 import org.jboss.jca.common.api.metadata.ds.TimeOut;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 /**
  *
@@ -52,16 +53,18 @@
     * @param setTxQuertTimeout setTxQuertTimeout
     * @param queryTimeout queryTimeout
     * @param useTryLock useTryLock
+    * @throws ValidateException ValidateException
     */
    public TimeOutImpl(Long blockingTimeoutMillis, Long idleTimeoutMinutes, Integer allocationRetry,
       Long allocationRetryWaitMillis, Integer xaResourceTimeout, Boolean setTxQuertTimeout, Long queryTimeout,
-      Long useTryLock)
+      Long useTryLock) throws ValidateException
    {
       super(blockingTimeoutMillis, idleTimeoutMinutes, allocationRetry, allocationRetryWaitMillis,
             xaResourceTimeout);
       this.setTxQuertTimeout = setTxQuertTimeout;
       this.queryTimeout = queryTimeout;
       this.useTryLock = useTryLock;
+      this.validate();
    }
 
    /**
@@ -149,4 +152,20 @@
              ", useTryLock=" + useTryLock + "]";
    }
 
+   @Override
+   public void validate() throws ValidateException
+   {
+      if (this.allocationRetry != null && this.allocationRetry < 0)
+         throw new ValidateException("allocationRetry cannot be < 0");
+      if (this.blockingTimeoutMillis != null && this.blockingTimeoutMillis < 0)
+         throw new ValidateException("blockingTimeoutMillis cannot be < 0");
+      if (this.allocationRetryWaitMillis != null && this.allocationRetryWaitMillis < 0)
+         throw new ValidateException("allocationRetryWaitMillis cannot be < 0");
+      if (this.idleTimeoutMinutes != null && this.idleTimeoutMinutes < 0)
+         throw new ValidateException("idleTimeoutMinutes cannot be < 0");
+      if (this.xaResourceTimeout != null && this.xaResourceTimeout < 0)
+         throw new ValidateException("xaResourceTimeout cannot be < 0");
+
+   }
+
 }

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/ValidationImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/ValidationImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/ValidationImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -23,6 +23,7 @@
 
 import org.jboss.jca.common.api.metadata.ds.JdbcAdapterExtension;
 import org.jboss.jca.common.api.metadata.ds.Validation;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 
 /**
@@ -34,75 +35,7 @@
  */
 public class ValidationImpl extends org.jboss.jca.common.metadata.common.CommonValidationImpl implements Validation
 {
-   @Override
-   public String toString()
-   {
-      return "ValidationImpl [validConnectionChecker=" + validConnectionChecker + ", checkValidConnectionSql=" +
-             checkValidConnectionSql + ", validateOnMatch=" + validateOnMatch + ", staleConnectionChecker=" +
-             staleConnectionChecker + ", exceptionSorter=" + exceptionSorter + "]";
-   }
 
-   @Override
-   public int hashCode()
-   {
-      final int prime = 31;
-      int result = super.hashCode();
-      result = prime * result + ((checkValidConnectionSql == null) ? 0 : checkValidConnectionSql.hashCode());
-      result = prime * result + ((exceptionSorter == null) ? 0 : exceptionSorter.hashCode());
-      result = prime * result + ((staleConnectionChecker == null) ? 0 : staleConnectionChecker.hashCode());
-      result = prime * result + ((validConnectionChecker == null) ? 0 : validConnectionChecker.hashCode());
-      result = prime * result + ((validateOnMatch == null) ? 0 : validateOnMatch.hashCode());
-      return result;
-   }
-
-   @Override
-   public boolean equals(Object obj)
-   {
-      if (this == obj)
-         return true;
-      if (!super.equals(obj))
-         return false;
-      if (!(obj instanceof ValidationImpl))
-         return false;
-      ValidationImpl other = (ValidationImpl) obj;
-      if (checkValidConnectionSql == null)
-      {
-         if (other.checkValidConnectionSql != null)
-            return false;
-      }
-      else if (!checkValidConnectionSql.equals(other.checkValidConnectionSql))
-         return false;
-      if (exceptionSorter == null)
-      {
-         if (other.exceptionSorter != null)
-            return false;
-      }
-      else if (!exceptionSorter.equals(other.exceptionSorter))
-         return false;
-      if (staleConnectionChecker == null)
-      {
-         if (other.staleConnectionChecker != null)
-            return false;
-      }
-      else if (!staleConnectionChecker.equals(other.staleConnectionChecker))
-         return false;
-      if (validConnectionChecker == null)
-      {
-         if (other.validConnectionChecker != null)
-            return false;
-      }
-      else if (!validConnectionChecker.equals(other.validConnectionChecker))
-         return false;
-      if (validateOnMatch == null)
-      {
-         if (other.validateOnMatch != null)
-            return false;
-      }
-      else if (!validateOnMatch.equals(other.validateOnMatch))
-         return false;
-      return true;
-   }
-
    /** The serialVersionUID */
    private static final long serialVersionUID = 7816717816552118419L;
 
@@ -127,10 +60,11 @@
     * @param validateOnMatch validateOnMatch
     * @param staleConnectionChecker staleConnectionChecker
     * @param exceptionSorter exceptionSorter
+    * @throws ValidateException ValidateException
     */
    public ValidationImpl(Boolean backgroundValidation, Long backgroundValidationMinutes, Boolean useFastFail,
       JdbcAdapterExtension validConnectionChecker, String checkValidConnectionSql, Boolean validateOnMatch,
-      JdbcAdapterExtension staleConnectionChecker, JdbcAdapterExtension exceptionSorter)
+      JdbcAdapterExtension staleConnectionChecker, JdbcAdapterExtension exceptionSorter) throws ValidateException
    {
       super(backgroundValidation, backgroundValidationMinutes, useFastFail);
       this.validConnectionChecker = validConnectionChecker;
@@ -138,6 +72,7 @@
       this.validateOnMatch = validateOnMatch;
       this.staleConnectionChecker = staleConnectionChecker;
       this.exceptionSorter = exceptionSorter;
+      this.validate();
    }
 
 
@@ -206,5 +141,87 @@
       return exceptionSorter;
    }
 
+   @Override
+   public void validate() throws ValidateException
+   {
+      if (this.backgroundValidationMinutes != null && this.backgroundValidationMinutes < 0)
+         throw new ValidateException("backgroundValidationMinutes cannot be < 0");
+      if (this.validConnectionChecker != null)
+         this.validConnectionChecker.validate();
+      if (this.exceptionSorter != null)
+         this.exceptionSorter.validate();
+      if (this.staleConnectionChecker != null)
+         this.staleConnectionChecker.validate();
+   }
+
+   @Override
+   public String toString()
+   {
+      return "ValidationImpl [validConnectionChecker=" + validConnectionChecker + ", checkValidConnectionSql=" +
+             checkValidConnectionSql + ", validateOnMatch=" + validateOnMatch + ", staleConnectionChecker=" +
+             staleConnectionChecker + ", exceptionSorter=" + exceptionSorter + "]";
+   }
+
+   @Override
+   public int hashCode()
+   {
+      final int prime = 31;
+      int result = super.hashCode();
+      result = prime * result + ((checkValidConnectionSql == null) ? 0 : checkValidConnectionSql.hashCode());
+      result = prime * result + ((exceptionSorter == null) ? 0 : exceptionSorter.hashCode());
+      result = prime * result + ((staleConnectionChecker == null) ? 0 : staleConnectionChecker.hashCode());
+      result = prime * result + ((validConnectionChecker == null) ? 0 : validConnectionChecker.hashCode());
+      result = prime * result + ((validateOnMatch == null) ? 0 : validateOnMatch.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj)
+   {
+      if (this == obj)
+         return true;
+      if (!super.equals(obj))
+         return false;
+      if (!(obj instanceof ValidationImpl))
+         return false;
+      ValidationImpl other = (ValidationImpl) obj;
+      if (checkValidConnectionSql == null)
+      {
+         if (other.checkValidConnectionSql != null)
+            return false;
+      }
+      else if (!checkValidConnectionSql.equals(other.checkValidConnectionSql))
+         return false;
+      if (exceptionSorter == null)
+      {
+         if (other.exceptionSorter != null)
+            return false;
+      }
+      else if (!exceptionSorter.equals(other.exceptionSorter))
+         return false;
+      if (staleConnectionChecker == null)
+      {
+         if (other.staleConnectionChecker != null)
+            return false;
+      }
+      else if (!staleConnectionChecker.equals(other.staleConnectionChecker))
+         return false;
+      if (validConnectionChecker == null)
+      {
+         if (other.validConnectionChecker != null)
+            return false;
+      }
+      else if (!validConnectionChecker.equals(other.validConnectionChecker))
+         return false;
+      if (validateOnMatch == null)
+      {
+         if (other.validateOnMatch != null)
+            return false;
+      }
+      else if (!validateOnMatch.equals(other.validateOnMatch))
+         return false;
+      return true;
+   }
+
 }
 

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/XADataSourceImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/XADataSourceImpl.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ds/XADataSourceImpl.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -28,6 +28,7 @@
 import org.jboss.jca.common.api.metadata.ds.TransactionIsolation;
 import org.jboss.jca.common.api.metadata.ds.Validation;
 import org.jboss.jca.common.api.metadata.ds.XaDataSource;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -74,12 +75,13 @@
     * @param module module
     * @param newConnectionSql newConnectionSql
     * @param xaPool xaPool
+    * @throws ValidateException ValidateException
     */
    public XADataSourceImpl(TransactionIsolation transactionIsolation, TimeOut timeOut, CommonSecurity security,
       Statement statement, Validation validation, String urlDelimiter, String urlSelectorStrategyClassName,
       boolean useJavaContext, String poolName, boolean enabled, String jndiName,
       Map<String, String> xaDataSourceProperty, String xaDataSourceClass, String module, String newConnectionSql,
-      CommonXaPool xaPool)
+      CommonXaPool xaPool) throws ValidateException
    {
       super(transactionIsolation, timeOut, security, statement, validation, urlDelimiter,
             urlSelectorStrategyClassName, useJavaContext, poolName, enabled, jndiName);
@@ -96,6 +98,7 @@
       this.module = module;
       this.newConnectionSql = newConnectionSql;
       this.xaPool = xaPool;
+      this.validate();
    }
 
    /**
@@ -229,12 +232,11 @@
    public String toString()
    {
       return "XADataSourceImpl [xaDataSourceProperty=" + xaDataSourceProperty + ", xaDataSourceClass=" +
-             xaDataSourceClass + ", module=" +
-             module + ", newConnectionSql=" + newConnectionSql + ", xaPool=" + xaPool +
-             ", transactionIsolation=" + transactionIsolation + ", timeOut=" + timeOut + ", security=" + security +
-             ", statement=" + statement + ", validation=" + validation + ", urlDelimiter=" + urlDelimiter +
-             ", urlSelectorStrategyClassName=" + urlSelectorStrategyClassName + ", useJavaContext=" +
-             useJavaContext + ", poolName=" + poolName + ", enabled=" + enabled + ", jndiName=" + jndiName + "]";
+             xaDataSourceClass + ", module=" + module + ", newConnectionSql=" + newConnectionSql + ", xaPool=" +
+             xaPool + ", transactionIsolation=" + transactionIsolation + ", timeOut=" + timeOut + ", security=" +
+             security + ", statement=" + statement + ", validation=" + validation + ", urlDelimiter=" + urlDelimiter +
+             ", urlSelectorStrategyClassName=" + urlSelectorStrategyClassName + ", useJavaContext=" + useJavaContext +
+             ", poolName=" + poolName + ", enabled=" + enabled + ", jndiName=" + jndiName + "]";
    }
 
    /**
@@ -248,7 +250,6 @@
       return Collections.unmodifiableMap(xaDataSourceProperty);
    }
 
-
    /**
     * Get the xaPool.
     *
@@ -259,4 +260,15 @@
    {
       return xaPool;
    }
+
+   @Override
+   public void validate() throws ValidateException
+   {
+      if (this.xaDataSourceClass == null || this.xaDataSourceClass.trim().length() == 0)
+         throw new ValidateException("xaDataSourceClass is required in " + this.getClass().getCanonicalName());
+      if (this.xaDataSourceProperty.isEmpty())
+         throw new ValidateException("at least one xaDataSourceProperty is required in " +
+                                     this.getClass().getCanonicalName());
+
+   }
 }

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ironjacamar/IronJacamarParser.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ironjacamar/IronJacamarParser.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/ironjacamar/IronJacamarParser.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -25,6 +25,7 @@
 import org.jboss.jca.common.api.metadata.common.CommonConnDef;
 import org.jboss.jca.common.api.metadata.common.TransactionSupportEnum;
 import org.jboss.jca.common.api.metadata.ironjacamar.IronJacamar;
+import org.jboss.jca.common.api.validator.ValidateException;
 import org.jboss.jca.common.metadata.MetadataParser;
 import org.jboss.jca.common.metadata.ParserException;
 import org.jboss.jca.common.metadata.common.CommonIronJacamarParser;
@@ -113,7 +114,8 @@
 
    }
 
-   private IronJacamar parseIronJacamar(XMLStreamReader reader) throws XMLStreamException, ParserException
+   private IronJacamar parseIronJacamar(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
       ArrayList<CommonConnDef> connectionDefinitions = null;
       ArrayList<CommonAdminObject> adminObjects = null;

Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/resourceadapter/ResourceAdapterParser.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/resourceadapter/ResourceAdapterParser.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/resourceadapter/ResourceAdapterParser.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -26,6 +26,7 @@
 import org.jboss.jca.common.api.metadata.common.TransactionSupportEnum;
 import org.jboss.jca.common.api.metadata.resourceadapter.ResourceAdapter;
 import org.jboss.jca.common.api.metadata.resourceadapter.ResourceAdapters;
+import org.jboss.jca.common.api.validator.ValidateException;
 import org.jboss.jca.common.metadata.MetadataParser;
 import org.jboss.jca.common.metadata.ParserException;
 import org.jboss.jca.common.metadata.common.CommonIronJacamarParser;
@@ -116,7 +117,8 @@
 
    }
 
-   private ResourceAdapters parseResourceAdapters(XMLStreamReader reader) throws XMLStreamException, ParserException
+   private ResourceAdapters parseResourceAdapters(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
       ArrayList<ResourceAdapter> resourceAdapters = new ArrayList<ResourceAdapter>();
       while (reader.hasNext())
@@ -155,7 +157,8 @@
       throw new ParserException("Reached end of xml document unexpectedly");
    }
 
-   private ResourceAdapter parseResourceAdapter(XMLStreamReader reader) throws XMLStreamException, ParserException
+   private ResourceAdapter parseResourceAdapter(XMLStreamReader reader) throws XMLStreamException, ParserException,
+      ValidateException
    {
       ArrayList<CommonConnDef> connectionDefinitions = null;
       ArrayList<CommonAdminObject> adminObjects = null;

Modified: projects/jboss-jca/trunk/common/src/test/java/org/jboss/jca/common/metadata/ds/DsParserExampleTestCase.java
===================================================================
--- projects/jboss-jca/trunk/common/src/test/java/org/jboss/jca/common/metadata/ds/DsParserExampleTestCase.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/test/java/org/jboss/jca/common/metadata/ds/DsParserExampleTestCase.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -49,11 +49,18 @@
 public class DsParserExampleTestCase
 {
 
-   public static DsParser parser;
+   private static DsParser parser;
 
+   /** Datapoints for junit Theory **/
    @DataPoints
    public static File[] xmlFiles;
 
+   /**
+    *
+    * beforeClass method
+    *
+    * @throws Exception in casae of file not found
+    */
    @BeforeClass
    public static void beforeClass() throws Exception
    {
@@ -86,6 +93,7 @@
       }
       catch (Exception e)
       {
+         e.printStackTrace();
          fail("got an exception for file" + xmlFile.toString() + " with message: " + e.getMessage());
       }
       finally

Modified: projects/jboss-jca/trunk/common/src/test/java/org/jboss/jca/common/metadata/ds/DsParserForMinimalFileTestCase.java
===================================================================
--- projects/jboss-jca/trunk/common/src/test/java/org/jboss/jca/common/metadata/ds/DsParserForMinimalFileTestCase.java	2010-12-02 16:37:10 UTC (rev 109652)
+++ projects/jboss-jca/trunk/common/src/test/java/org/jboss/jca/common/metadata/ds/DsParserForMinimalFileTestCase.java	2010-12-02 16:38:50 UTC (rev 109653)
@@ -22,6 +22,7 @@
 package org.jboss.jca.common.metadata.ds;
 
 import org.jboss.jca.common.api.metadata.ds.DataSources;
+import org.jboss.jca.common.api.validator.ValidateException;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -32,18 +33,38 @@
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
 
+/**
+ *
+ * A DsParserForMinimalFileTestCase.
+ *
+ * @author <a href="stefano.maestri at jboss.com">Stefano Maestri</a>
+ *
+ */
 public class DsParserForMinimalFileTestCase
 {
 
-   public static DsParser parser;
+   private static DsParser parser;
 
+   /**
+   *
+   * beforeClass method
+   *
+   * @throws Exception in casae of file not found
+   */
    @BeforeClass
    public static void beforeClass() throws Exception
    {
       parser = new DsParser();
    }
 
-   @Test
+   /**
+    *
+    * shouldFailIfNoDriverHasBeenSpecified
+    *
+    * @throws Exception test passes if a {@link ValidateException} has been
+    * thrown
+    */
+   @Test(expected = ValidateException.class)
    public void shouldFailIfNoDriverHasBeenSpecified() throws Exception
    {
 



More information about the jboss-cvs-commits mailing list