[jboss-cvs] JBossAS SVN: r110723 - in projects/jboss-jca/trunk/validator/src: main/java/org/jboss/jca/validator/rules/ao and 10 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 21 01:40:46 EST 2011


Author: jeff.zhang
Date: 2011-02-21 01:40:46 -0500 (Mon, 21 Feb 2011)
New Revision: 110723

Added:
   projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ConfigPropertiesHelper.java
   projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/TestActivationSpecFailProperties.java
   projects/jboss-jca/trunk/validator/src/test/resources/validator/as_property_fail.rar/
   projects/jboss-jca/trunk/validator/src/test/resources/validator/as_property_fail.rar/META-INF/
   projects/jboss-jca/trunk/validator/src/test/resources/validator/as_property_fail.rar/META-INF/ra.xml
Modified:
   projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ao/AOConfigProperties.java
   projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/as/ASConfigProperties.java
   projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/mcf/MCFConfigProperties.java
   projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ra/RAConfigProperties.java
   projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ao/AOTestCase.java
   projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ao/TestAdminObjectPropertyWrong.java
   projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/ASTestCase.java
   projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/TestActivationSpecWrongProperties.java
   projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/mcf/MCFTestCase.java
   projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/mcf/TestManagedConnectionFactoryPropertyWrong.java
   projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ra/RATestCase.java
   projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ra/TestResourceAdapterPropertyWrong.java
Log:
[JBJCA-499] Only primitive types are warnings, other config properties should failed validation

Added: projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ConfigPropertiesHelper.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ConfigPropertiesHelper.java	                        (rev 0)
+++ projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ConfigPropertiesHelper.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -0,0 +1,157 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, 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.validator.rules;
+
+import org.jboss.jca.common.api.metadata.ra.ConfigProperty;
+import org.jboss.jca.validator.Failure;
+import org.jboss.jca.validator.Severity;
+import org.jboss.jca.validator.ValidateClass;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+/**
+ * A ConfigPropertiesHelper.
+ * 
+ * @author Jeff Zhang
+ * @version $Revision: $
+ */
+public class ConfigPropertiesHelper
+{
+   /** Valid types */
+   public static final Set<Class> VALID_TYPES;
+   
+   /** Valid types */
+   public static final Set<Class> WARNING_TYPES;
+
+   static
+   {
+      VALID_TYPES = new HashSet<Class>(9);
+      VALID_TYPES.add(Boolean.class);
+      VALID_TYPES.add(Byte.class);
+      VALID_TYPES.add(Character.class);
+      VALID_TYPES.add(Double.class);
+      VALID_TYPES.add(Float.class);
+      VALID_TYPES.add(Integer.class);
+      VALID_TYPES.add(Long.class);
+      VALID_TYPES.add(Short.class);
+      VALID_TYPES.add(String.class);
+      
+      WARNING_TYPES = new HashSet<Class>(8);
+      WARNING_TYPES.add(boolean.class);
+      WARNING_TYPES.add(byte.class);
+      WARNING_TYPES.add(char.class);
+      WARNING_TYPES.add(double.class);
+      WARNING_TYPES.add(float.class);
+      WARNING_TYPES.add(int.class);
+      WARNING_TYPES.add(short.class);
+   }
+   
+   /**
+    * validate ConfigProperties type
+    * 
+    * @param vo ValidateClass
+    * @param section section in the spec document
+    * @param failMsg fail or warn message
+    * @return list of failures
+    */
+   public static List<Failure> validateConfigPropertiesType(ValidateClass vo, String section, String failMsg)
+   {
+
+      List<Failure> failures = new ArrayList<Failure>(1);
+
+      for (ConfigProperty cpmd : vo.getConfigProperties())
+      {
+         try
+         {
+            containGetOrIsMethod(vo, "get", cpmd, section, failMsg, failures);
+         }
+         catch (Throwable t)
+         {
+            try
+            {
+               containGetOrIsMethod(vo, "is", cpmd, section, failMsg, failures);
+            }
+            catch (Throwable it)
+            {
+               // Ignore
+            }
+         }
+      }
+
+      if (failures.size() == 0)
+         return null;
+      return failures;
+   }
+
+   /**
+    * validated object contain 'get or 'is' Method
+    * 
+    * @param vo ValidateClass
+    * @param getOrIs 'get or 'is' String
+    * @param cpmd ConfigProperty metadata
+    * @param section section in the spec document
+    * @param failMsg fail or warn message
+    * @param failures list of failures
+    * @throws NoSuchMethodException 
+    */
+   private static void containGetOrIsMethod(ValidateClass vo, String getOrIs, 
+      ConfigProperty cpmd, String section, String failMsg, List<Failure> failures)
+      throws NoSuchMethodException
+   {
+      String methodName = getOrIs + cpmd.getConfigPropertyName().getValue().substring(0, 1).toUpperCase(Locale.US);
+      if (cpmd.getConfigPropertyName().getValue().length() > 1)
+      {
+         methodName += cpmd.getConfigPropertyName().getValue().substring(1);
+      }
+
+      Method method = vo.getClazz().getMethod(methodName, (Class[])null);
+
+      if (!VALID_TYPES.contains(method.getReturnType()))
+      {
+         StringBuilder sb = new StringBuilder("Class: " + vo.getClazz().getName());
+         sb = sb.append(" Property: " + cpmd.getConfigPropertyName().getValue());
+         sb = sb.append(" Type: " + method.getReturnType().getName());
+
+         Failure failure;
+         if (WARNING_TYPES.contains(method.getReturnType()))
+         {
+            failure = new Failure(Severity.WARNING,
+                                  section,
+                                  failMsg,
+                                  sb.toString());
+         }
+         else
+         {
+            failure = new Failure(Severity.ERROR,
+                  section,
+                  failMsg,
+                  sb.toString());
+         }
+         failures.add(failure);
+      }
+   }
+}

Modified: projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ao/AOConfigProperties.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ao/AOConfigProperties.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ao/AOConfigProperties.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -22,21 +22,16 @@
 
 package org.jboss.jca.validator.rules.ao;
 
-import org.jboss.jca.common.api.metadata.ra.ConfigProperty;
 import org.jboss.jca.validator.Failure;
 import org.jboss.jca.validator.Key;
 import org.jboss.jca.validator.Rule;
-import org.jboss.jca.validator.Severity;
 import org.jboss.jca.validator.Validate;
 import org.jboss.jca.validator.ValidateClass;
 
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashSet;
+import org.jboss.jca.validator.rules.ConfigPropertiesHelper;
+
 import java.util.List;
-import java.util.Locale;
 import java.util.ResourceBundle;
-import java.util.Set;
 
 /**
  * An AdminObject must use the valid set of config-property-type
@@ -46,24 +41,6 @@
    /** Section */
    private static final String SECTION = "20.7";
 
-   /** Valid types */
-   private static final Set<Class> VALID_TYPES;
-
-   static
-   {
-      VALID_TYPES = new HashSet<Class>(9);
-
-      VALID_TYPES.add(Boolean.class);
-      VALID_TYPES.add(Byte.class);
-      VALID_TYPES.add(Character.class);
-      VALID_TYPES.add(Double.class);
-      VALID_TYPES.add(Float.class);
-      VALID_TYPES.add(Integer.class);
-      VALID_TYPES.add(Long.class);
-      VALID_TYPES.add(Short.class);
-      VALID_TYPES.add(String.class);
-   }
-
    /**
     * Constructor
     */
@@ -87,75 +64,13 @@
          ValidateClass vo = (ValidateClass)v;
          if (vo.getConfigProperties() != null && vo.getConfigProperties().size() > 0)
          {
-            Class clz = vo.getClazz();
-            List<Failure> failures = new ArrayList<Failure>(1);
-
-            for (ConfigProperty cpmd : vo.getConfigProperties())
-            {
-               try
-               {
-                  String methodName = "get"
-                        + cpmd.getConfigPropertyName().getValue().substring(0, 1).toUpperCase(Locale.US);
-                  if (cpmd.getConfigPropertyName().getValue().length() > 1)
-                  {
-                     methodName += cpmd.getConfigPropertyName().getValue().substring(1);
-                  }
-
-                  Method method = clz.getMethod(methodName, (Class[])null);
-
-                  if (!VALID_TYPES.contains(method.getReturnType()))
-                  {
-                     StringBuilder sb = new StringBuilder("Class: " + vo.getClazz().getName());
-                     sb = sb.append(" Property: " + cpmd.getConfigPropertyName().getValue());
-                     sb = sb.append(" Type: " + method.getReturnType().getName());
-
-                     Failure failure = new Failure(Severity.WARNING,
-                                                   SECTION,
-                                                   rb.getString("ao.AOConfigProperties"),
-                                                   sb.toString());
-                     failures.add(failure);
-                  }
-               }
-               catch (Throwable t)
-               {
-                  try
-                  {
-                     String methodName = "is"
-                           + cpmd.getConfigPropertyName().getValue().substring(0, 1).toUpperCase(Locale.US);
-                     if (cpmd.getConfigPropertyName().getValue().length() > 1)
-                     {
-                        methodName += cpmd.getConfigPropertyName().getValue().substring(1);
-                     }
-
-                     Method method = clz.getMethod(methodName, (Class[])null);
-
-                     if (!VALID_TYPES.contains(method.getReturnType()))
-                     {
-                        StringBuilder sb = new StringBuilder("Class: " + vo.getClazz().getName());
-                        sb = sb.append(" Property: " + cpmd.getConfigPropertyName().getValue());
-                        sb = sb.append(" Type: " + method.getReturnType().getName());
-
-                        Failure failure = new Failure(Severity.WARNING,
-                                                      SECTION,
-                                                      rb.getString("ao.AOConfigProperties"),
-                                                      sb.toString());
-                        failures.add(failure);
-                     }
-                  }
-                  catch (Throwable it)
-                  {
-                     // Ignore
-                  }
-               }
-            }
-
-            if (failures.size() == 0)
-               return null;
-
-            return failures;
+            return ConfigPropertiesHelper.validateConfigPropertiesType(vo, SECTION, 
+               rb.getString("ao.AOConfigProperties"));
          }
       }
 
       return null;
    }
+
+
 }

Modified: projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/as/ASConfigProperties.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/as/ASConfigProperties.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/as/ASConfigProperties.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -22,21 +22,15 @@
 
 package org.jboss.jca.validator.rules.as;
 
-import org.jboss.jca.common.api.metadata.ra.ConfigProperty;
 import org.jboss.jca.validator.Failure;
 import org.jboss.jca.validator.Key;
 import org.jboss.jca.validator.Rule;
-import org.jboss.jca.validator.Severity;
 import org.jboss.jca.validator.Validate;
 import org.jboss.jca.validator.ValidateClass;
+import org.jboss.jca.validator.rules.ConfigPropertiesHelper;
 
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.ResourceBundle;
-import java.util.Set;
 
 import javax.resource.spi.ActivationSpec;
 
@@ -48,24 +42,7 @@
    /** Section */
    private static final String SECTION = "20.7";
 
-   /** Valid types */
-   private static final Set<Class> VALID_TYPES;
 
-   static
-   {
-      VALID_TYPES = new HashSet<Class>(9);
-
-      VALID_TYPES.add(Boolean.class);
-      VALID_TYPES.add(Byte.class);
-      VALID_TYPES.add(Character.class);
-      VALID_TYPES.add(Double.class);
-      VALID_TYPES.add(Float.class);
-      VALID_TYPES.add(Integer.class);
-      VALID_TYPES.add(Long.class);
-      VALID_TYPES.add(Short.class);
-      VALID_TYPES.add(String.class);
-   }
-
    /**
     * Constructor
     */
@@ -90,72 +67,8 @@
          ValidateClass vo = (ValidateClass)v;
          if (vo.getConfigProperties() != null && vo.getConfigProperties().size() > 0)
          {
-            Class clz = vo.getClazz();
-            List<Failure> failures = new ArrayList<Failure>(1);
-
-            for (ConfigProperty cpmd : vo.getConfigProperties())
-            {
-               try
-               {
-                  String methodName = "get"
-                        + cpmd.getConfigPropertyName().getValue().substring(0, 1).toUpperCase(Locale.US);
-                  if (cpmd.getConfigPropertyName().getValue().length() > 1)
-                  {
-                     methodName += cpmd.getConfigPropertyName().getValue().substring(1);
-                  }
-
-                  Method method = clz.getMethod(methodName, (Class[])null);
-
-                  if (!VALID_TYPES.contains(method.getReturnType()))
-                  {
-                     StringBuilder sb = new StringBuilder("Class: " + vo.getClazz().getName());
-                     sb = sb.append(" Property: " + cpmd.getConfigPropertyName().getValue());
-                     sb = sb.append(" Type: " + method.getReturnType().getName());
-
-                     Failure failure = new Failure(Severity.WARNING,
-                                                   SECTION,
-                                                   rb.getString("as.ASConfigProperties"),
-                                                   sb.toString());
-                     failures.add(failure);
-                  }
-               }
-               catch (Throwable t)
-               {
-                  try
-                  {
-                     String methodName = "is"
-                           + cpmd.getConfigPropertyName().getValue().substring(0, 1).toUpperCase(Locale.US);
-                     if (cpmd.getConfigPropertyName().getValue().length() > 1)
-                     {
-                        methodName += cpmd.getConfigPropertyName().getValue().substring(1);
-                     }
-
-                     Method method = clz.getMethod(methodName, (Class[])null);
-
-                     if (!VALID_TYPES.contains(method.getReturnType()))
-                     {
-                        StringBuilder sb = new StringBuilder("Class: " + vo.getClazz().getName());
-                        sb = sb.append(" Property: " + cpmd.getConfigPropertyName().getValue());
-                        sb = sb.append(" Type: " + method.getReturnType().getName());
-
-                        Failure failure = new Failure(Severity.WARNING,
-                                                      SECTION,
-                                                      rb.getString("as.ASConfigProperties"),
-                                                      sb.toString());
-                        failures.add(failure);
-                     }
-                  }
-                  catch (Throwable it)
-                  {
-                     // Ignore
-                  }
-               }
-            }
-
-            if (failures.size() == 0)
-               return null;
-
-            return failures;
+            return ConfigPropertiesHelper.validateConfigPropertiesType(vo, SECTION, 
+               rb.getString("as.ASConfigProperties"));
          }
       }
 

Modified: projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/mcf/MCFConfigProperties.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/mcf/MCFConfigProperties.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/mcf/MCFConfigProperties.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -22,21 +22,15 @@
 
 package org.jboss.jca.validator.rules.mcf;
 
-import org.jboss.jca.common.api.metadata.ra.ConfigProperty;
 import org.jboss.jca.validator.Failure;
 import org.jboss.jca.validator.Key;
 import org.jboss.jca.validator.Rule;
-import org.jboss.jca.validator.Severity;
 import org.jboss.jca.validator.Validate;
 import org.jboss.jca.validator.ValidateClass;
+import org.jboss.jca.validator.rules.ConfigPropertiesHelper;
 
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.ResourceBundle;
-import java.util.Set;
 
 import javax.resource.spi.ManagedConnectionFactory;
 
@@ -48,32 +42,7 @@
    /** Section */
    private static final String SECTION = "20.7";
 
-   /** Valid types */
-   private static final Set<Class> VALID_TYPES;
-
-   static
-   {
-      VALID_TYPES = new HashSet<Class>(9);
-
-      VALID_TYPES.add(Boolean.class);
-      VALID_TYPES.add(Byte.class);
-      VALID_TYPES.add(Character.class);
-      VALID_TYPES.add(Double.class);
-      VALID_TYPES.add(Float.class);
-      VALID_TYPES.add(Integer.class);
-      VALID_TYPES.add(Long.class);
-      VALID_TYPES.add(Short.class);
-      VALID_TYPES.add(String.class);
-   }
-
    /**
-    * Constructor
-    */
-   public MCFConfigProperties()
-   {
-   }
-
-   /**
     * Validate
     * @param v The validate object
     * @param rb The resource bundle
@@ -90,72 +59,8 @@
          ValidateClass vo = (ValidateClass)v;
          if (vo.getConfigProperties() != null && vo.getConfigProperties().size() > 0)
          {
-            Class clz = vo.getClazz();
-            List<Failure> failures = new ArrayList<Failure>(1);
-
-            for (ConfigProperty cpmd : vo.getConfigProperties())
-            {
-               try
-               {
-                  String methodName = "get"
-                        + cpmd.getConfigPropertyName().getValue().substring(0, 1).toUpperCase(Locale.US);
-                  if (cpmd.getConfigPropertyName().getValue().length() > 1)
-                  {
-                     methodName += cpmd.getConfigPropertyName().getValue().substring(1);
-                  }
-
-                  Method method = clz.getMethod(methodName, (Class[])null);
-
-                  if (!VALID_TYPES.contains(method.getReturnType()))
-                  {
-                     StringBuilder sb = new StringBuilder("Class: " + vo.getClazz().getName());
-                     sb = sb.append(" Property: " + cpmd.getConfigPropertyName().getValue());
-                     sb = sb.append(" Type: " + method.getReturnType().getName());
-
-                     Failure failure = new Failure(Severity.WARNING,
-                                                   SECTION,
-                                                   rb.getString("mcf.MCFConfigProperties"),
-                                                   sb.toString());
-                     failures.add(failure);
-                  }
-               }
-               catch (Throwable t)
-               {
-                  try
-                  {
-                     String methodName = "is"
-                           + cpmd.getConfigPropertyName().getValue().substring(0, 1).toUpperCase(Locale.US);
-                     if (cpmd.getConfigPropertyName().getValue().length() > 1)
-                     {
-                        methodName += cpmd.getConfigPropertyName().getValue().substring(1);
-                     }
-
-                     Method method = clz.getMethod(methodName, (Class[])null);
-
-                     if (!VALID_TYPES.contains(method.getReturnType()))
-                     {
-                        StringBuilder sb = new StringBuilder("Class: " + vo.getClazz().getName());
-                        sb = sb.append(" Property: " + cpmd.getConfigPropertyName().getValue());
-                        sb = sb.append(" Type: " + method.getReturnType().getName());
-
-                        Failure failure = new Failure(Severity.WARNING,
-                                                      SECTION,
-                                                      rb.getString("mcf.MCFConfigProperties"),
-                                                      sb.toString());
-                        failures.add(failure);
-                     }
-                  }
-                  catch (Throwable it)
-                  {
-                     // Ignore
-                  }
-               }
-            }
-
-            if (failures.size() == 0)
-               return null;
-
-            return failures;
+            return ConfigPropertiesHelper.validateConfigPropertiesType(vo, SECTION, 
+               rb.getString("mcf.MCFConfigProperties"));
          }
       }
 

Modified: projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ra/RAConfigProperties.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ra/RAConfigProperties.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/rules/ra/RAConfigProperties.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -22,21 +22,15 @@
 
 package org.jboss.jca.validator.rules.ra;
 
-import org.jboss.jca.common.api.metadata.ra.ConfigProperty;
 import org.jboss.jca.validator.Failure;
 import org.jboss.jca.validator.Key;
 import org.jboss.jca.validator.Rule;
-import org.jboss.jca.validator.Severity;
 import org.jboss.jca.validator.Validate;
 import org.jboss.jca.validator.ValidateClass;
+import org.jboss.jca.validator.rules.ConfigPropertiesHelper;
 
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.ResourceBundle;
-import java.util.Set;
 
 import javax.resource.spi.ResourceAdapter;
 
@@ -48,24 +42,6 @@
    /** Section */
    private static final String SECTION = "20.7";
 
-   /** Valid types */
-   private static final Set<Class> VALID_TYPES;
-
-   static
-   {
-      VALID_TYPES = new HashSet<Class>(9);
-
-      VALID_TYPES.add(Boolean.class);
-      VALID_TYPES.add(Byte.class);
-      VALID_TYPES.add(Character.class);
-      VALID_TYPES.add(Double.class);
-      VALID_TYPES.add(Float.class);
-      VALID_TYPES.add(Integer.class);
-      VALID_TYPES.add(Long.class);
-      VALID_TYPES.add(Short.class);
-      VALID_TYPES.add(String.class);
-   }
-
    /**
     * Constructor
     */
@@ -90,72 +66,8 @@
          ValidateClass vo = (ValidateClass)v;
          if (vo.getConfigProperties() != null && vo.getConfigProperties().size() > 0)
          {
-            Class clz = vo.getClazz();
-            List<Failure> failures = new ArrayList<Failure>(1);
-
-            for (ConfigProperty cpmd : vo.getConfigProperties())
-            {
-               try
-               {
-                  String methodName = "get"
-                        + cpmd.getConfigPropertyName().getValue().substring(0, 1).toUpperCase(Locale.US);
-                  if (cpmd.getConfigPropertyName().getValue().length() > 1)
-                  {
-                     methodName += cpmd.getConfigPropertyName().getValue().substring(1);
-                  }
-
-                  Method method = clz.getMethod(methodName, (Class[])null);
-
-                  if (!VALID_TYPES.contains(method.getReturnType()))
-                  {
-                     StringBuilder sb = new StringBuilder("Class: " + vo.getClazz().getName());
-                     sb = sb.append(" Property: " + cpmd.getConfigPropertyName().getValue());
-                     sb = sb.append(" Type: " + method.getReturnType().getName());
-
-                     Failure failure = new Failure(Severity.WARNING,
-                                                   SECTION,
-                                                   rb.getString("ra.RAConfigProperties"),
-                                                   sb.toString());
-                     failures.add(failure);
-                  }
-               }
-               catch (Throwable t)
-               {
-                  try
-                  {
-                     String methodName = "is"
-                           + cpmd.getConfigPropertyName().getValue().substring(0, 1).toUpperCase(Locale.US);
-                     if (cpmd.getConfigPropertyName().getValue().length() > 1)
-                     {
-                        methodName += cpmd.getConfigPropertyName().getValue().substring(1);
-                     }
-
-                     Method method = clz.getMethod(methodName, (Class[])null);
-
-                     if (!VALID_TYPES.contains(method.getReturnType()))
-                     {
-                        StringBuilder sb = new StringBuilder("Class: " + vo.getClazz().getName());
-                        sb = sb.append(" Property: " + cpmd.getConfigPropertyName().getValue());
-                        sb = sb.append(" Type: " + method.getReturnType().getName());
-
-                        Failure failure = new Failure(Severity.WARNING,
-                                                      SECTION,
-                                                      rb.getString("ra.RAConfigProperties"),
-                                                      sb.toString());
-                        failures.add(failure);
-                     }
-                  }
-                  catch (Throwable it)
-                  {
-                     // Ignore
-                  }
-               }
-            }
-
-            if (failures.size() == 0)
-               return null;
-
-            return failures;
+            return ConfigPropertiesHelper.validateConfigPropertiesType(vo, SECTION, 
+               rb.getString("ra.RAConfigProperties"));
          }
       }
 

Modified: projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ao/AOTestCase.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ao/AOTestCase.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ao/AOTestCase.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -233,7 +233,7 @@
          assertThat(input.readLine(), is("Description: Invalid config-property-type for AdminObject."));
          assertThat(input.readLine(), is("Code: Class: "
                + "org.jboss.jca.validator.rules.ao.TestAdminObjectPropertyWrong "
-               + "Property: myStringProperty Type: void"));
+               + "Property: myStringProperty Type: int"));
 
          assertThat(input.readLine(), is((String) null));
       }

Modified: projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ao/TestAdminObjectPropertyWrong.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ao/TestAdminObjectPropertyWrong.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ao/TestAdminObjectPropertyWrong.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -42,9 +42,10 @@
 
    /**
     * wrong getter
+    * @return int zero
     */
-   public void getMyStringProperty()
+   public int getMyStringProperty()
    {
-
+      return 0;
    }
 }

Modified: projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/ASTestCase.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/ASTestCase.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/ASTestCase.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -101,7 +101,7 @@
    }
 
    /**
-    * stress the ASConfigProperties rule.
+    * stress the ASConfigProperties warning rule.
     *
     * @throws Throwable and expect a DeployValidatorException
     *
@@ -128,7 +128,7 @@
          assertThat(input.readLine(), is("Description: Invalid config-property-type for ActivationSpec."));
          assertThat(input.readLine(), is("Code: Class: "
                + "org.jboss.jca.validator.rules.as.TestActivationSpecWrongProperties "
-               + "Property: StringRAR Type: void"));
+               + "Property: StringRAR Type: int"));
 
          assertThat(input.readLine(), is((String) null));
       }
@@ -142,7 +142,57 @@
       }
       embedded.undeploy(archive);
    }
+   
+   /**
+    * stress the ASConfigProperties failing rule.
+    *
+    * @throws Throwable and expect a DeployValidatorException
+    *
+    */
+   @Test(expected = ValidatorException.class)
+   public void deployerShouldThrowDeployExceptionWithWrongWrongPropertyType() throws Throwable
+   {
+      //given
+      ResourceAdapterArchive archive = getArchive("as_property_fail.rar");
 
+      try
+      {
+         //when
+         embedded.deploy(archive);
+      }
+      catch (DeployException de)
+      {
+         //then
+         ValidatorException dve = null;
+         if (de.getCause() != null && de.getCause() instanceof ValidatorException)
+         {
+            dve = (ValidatorException) de.getCause();
+         }
+         else
+         {
+            //fail
+            de.printStackTrace();
+            throw de;
+         }
+
+         final Failure failureRA =
+            new Failure(Severity.ERROR, "20.7", "Invalid config-property-type for ActivationSpec.",
+               "Class: org.jboss.jca.validator.rules.as.TestActivationSpecFailProperties " + 
+               "Property: StringRAR Type: java.net.URL");
+         assertThat(dve.getFailures(), notNullValue());
+         assertThat(dve.getFailures(), hasItem(equalTo(failureRA)));
+         assertThat(dve.getFailures().size(), is(1));
+         //success
+         throw dve;
+      }
+      finally
+      {
+         embedded.undeploy(archive);
+      }
+      //no exception = fail!
+      fail();
+   }
+
    /**
     * Deploy a correct RA not violating any rule.
     *

Added: projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/TestActivationSpecFailProperties.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/TestActivationSpecFailProperties.java	                        (rev 0)
+++ projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/TestActivationSpecFailProperties.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, 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.validator.rules.as;
+
+import org.jboss.jca.validator.rules.base.BaseActivationSpec;
+
+import java.net.URL;
+
+/**
+ * TestActivationSpecFailProperties
+ * @author Jeff Zhang
+ *
+ */
+
+public class TestActivationSpecFailProperties extends BaseActivationSpec
+{
+   private String stringRar;
+
+   /**
+    *
+    * @param s The value
+    */
+   public void setStringRAR(String s)
+   {
+      this.stringRar = s;
+   }
+
+   /**
+    * wrong getter
+    * @return int zero
+    */
+   public URL getStringRAR()
+   {
+      return null;
+   }
+
+}

Modified: projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/TestActivationSpecWrongProperties.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/TestActivationSpecWrongProperties.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/as/TestActivationSpecWrongProperties.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -43,11 +43,12 @@
    }
 
    /**
-    *
+    * wrong getter
+    * @return int zero
     */
-   public void getStringRAR()
+   public int getStringRAR()
    {
-      //return stringRar;
+      return 0;
    }
 
 }

Modified: projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/mcf/MCFTestCase.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/mcf/MCFTestCase.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/mcf/MCFTestCase.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -340,7 +340,7 @@
          assertThat(input.readLine(), is("Description: Invalid config-property-type for ManagedConnectionFactory."));
          assertThat(input.readLine(), is("Code: Class: "
                + "org.jboss.jca.validator.rules.mcf.TestManagedConnectionFactoryPropertyWrong "
-               + "Property: StringRAR Type: void"));
+               + "Property: StringRAR Type: int"));
 
          assertThat(input.readLine(), is((String) null));
       }

Modified: projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/mcf/TestManagedConnectionFactoryPropertyWrong.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/mcf/TestManagedConnectionFactoryPropertyWrong.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/mcf/TestManagedConnectionFactoryPropertyWrong.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -45,11 +45,12 @@
    }
 
    /**
-    *
+    * wrong getter
+    * @return int zero
     */
-   public void getStringRAR()
+   public int getStringRAR()
    {
-      //return stringRar;
+      return 0;
    }
 
 }

Modified: projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ra/RATestCase.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ra/RATestCase.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ra/RATestCase.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -390,7 +390,7 @@
          assertThat(input.readLine(), is("Description: Invalid config-property-type for ResourceAdapter."));
          assertThat(input.readLine(), is("Code: Class: "
                + "org.jboss.jca.validator.rules.ra.TestResourceAdapterPropertyWrong "
-               + "Property: StringRAR Type: void"));
+               + "Property: StringRAR Type: int"));
 
          assertThat(input.readLine(), is((String) null));
       }

Modified: projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ra/TestResourceAdapterPropertyWrong.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ra/TestResourceAdapterPropertyWrong.java	2011-02-20 12:55:25 UTC (rev 110722)
+++ projects/jboss-jca/trunk/validator/src/test/java/org/jboss/jca/validator/rules/ra/TestResourceAdapterPropertyWrong.java	2011-02-21 06:40:46 UTC (rev 110723)
@@ -42,10 +42,11 @@
    }
 
    /**
-    * 
+    * wrong getter
+    * @return int zero
     */
-   public void getStringRAR()
+   public int getStringRAR()
    {
-      //return stringRar;
+      return 0;
    }
 }

Added: projects/jboss-jca/trunk/validator/src/test/resources/validator/as_property_fail.rar/META-INF/ra.xml
===================================================================
--- projects/jboss-jca/trunk/validator/src/test/resources/validator/as_property_fail.rar/META-INF/ra.xml	                        (rev 0)
+++ projects/jboss-jca/trunk/validator/src/test/resources/validator/as_property_fail.rar/META-INF/ra.xml	2011-02-21 06:40:46 UTC (rev 110723)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Id $ -->
+
+<connector xmlns="http://java.sun.com/xml/ns/j2ee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+   http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"
+   version="1.5">
+
+   <vendor-name>Red Hat Middleware LLC</vendor-name>
+   <eis-type>Test RA</eis-type>
+   <resourceadapter-version>0.1</resourceadapter-version>
+
+   <resourceadapter>
+      <resourceadapter-class>org.jboss.jca.validator.rules.ra.TestResourceAdapterRight</resourceadapter-class>
+      <config-property>
+         <config-property-name>StringRAR</config-property-name>
+         <config-property-type>java.lang.String</config-property-type>
+         <config-property-value>StringFromRARProperties</config-property-value>
+      </config-property>   
+      <outbound-resourceadapter>
+         <connection-definition>
+            <managedconnectionfactory-class>org.jboss.jca.validator.rules.ra.TestManagedConnectionFactory</managedconnectionfactory-class>
+
+            <connectionfactory-interface>javax.resource.spi.ManagedConnection</connectionfactory-interface>
+            <connectionfactory-impl-class>org.jboss.jca.validator.rules.ra.TestManagedConnection</connectionfactory-impl-class>
+            <connection-interface>org.jboss.jca.validator.rules.base.TestConnectionInterface</connection-interface>
+            <connection-impl-class>org.jboss.jca.validator.rules.base.TestConnection</connection-impl-class>
+         </connection-definition>
+         <transaction-support>LocalTransaction</transaction-support>
+         <reauthentication-support>false</reauthentication-support>
+      </outbound-resourceadapter>
+      <inbound-resourceadapter>
+         <messageadapter>        
+            <messagelistener>
+               <messagelistener-type>org.jboss.jca.validator.rules.base.MessageListener</messagelistener-type>
+               <activationspec>
+                  <activationspec-class>org.jboss.jca.validator.rules.as.TestActivationSpecFailProperties</activationspec-class>
+                  <config-property>
+                     <config-property-name>StringRAR</config-property-name>
+                     <config-property-type>java.lang.String</config-property-type>
+                     <config-property-value>StringFromRARProperties</config-property-value>
+                  </config-property>   
+               </activationspec>
+            </messagelistener>
+         </messageadapter>
+      </inbound-resourceadapter>
+   </resourceadapter>
+</connector>
\ No newline at end of file



More information about the jboss-cvs-commits mailing list