[jboss-cvs] JBossAS SVN: r97638 - in projects/jboss-jca/trunk/deployers/src/main: java/org/jboss/jca/deployers/common/validator/rules/ra and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Dec 9 16:19:24 EST 2009


Author: jesper.pedersen
Date: 2009-12-09 16:19:24 -0500 (Wed, 09 Dec 2009)
New Revision: 97638

Added:
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/validator/rules/ra/RAConfigProperties.java
Modified:
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/validator/Validator.java
   projects/jboss-jca/trunk/deployers/src/main/resources/validator.properties
Log:
[JBJCA-201] ResourceAdapter - primitive type rule

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/validator/Validator.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/validator/Validator.java	2009-12-09 20:38:06 UTC (rev 97637)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/validator/Validator.java	2009-12-09 21:19:24 UTC (rev 97638)
@@ -46,7 +46,8 @@
       "org.jboss.jca.deployers.common.validator.rules.ra.RANull",
       "org.jboss.jca.deployers.common.validator.rules.ra.RA",
       "org.jboss.jca.deployers.common.validator.rules.ra.RAHashCode",
-      "org.jboss.jca.deployers.common.validator.rules.ra.RAEquals"
+      "org.jboss.jca.deployers.common.validator.rules.ra.RAEquals",
+      "org.jboss.jca.deployers.common.validator.rules.ra.RAConfigProperties"
    };
 
    /**

Added: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/validator/rules/ra/RAConfigProperties.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/validator/rules/ra/RAConfigProperties.java	                        (rev 0)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/validator/rules/ra/RAConfigProperties.java	2009-12-09 21:19:24 UTC (rev 97638)
@@ -0,0 +1,161 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, 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.deployers.common.validator.rules.ra;
+
+import org.jboss.jca.deployers.common.validator.Failure;
+import org.jboss.jca.deployers.common.validator.Key;
+import org.jboss.jca.deployers.common.validator.Rule;
+import org.jboss.jca.deployers.common.validator.Severity;
+import org.jboss.jca.deployers.common.validator.ValidateObject;
+
+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;
+
+import org.jboss.metadata.rar.spec.ConfigPropertyMetaData;
+
+/**
+ * ResourceAdapter must use the valid set of config-property-type
+ */
+public class RAConfigProperties implements Rule
+{
+   /** 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 RAConfigProperties()
+   {
+   }
+
+   /**
+    * Validate
+    * @param vo The validate object
+    * @param rb The resource bundle 
+    * @return The list of failures found; <code>null</code> if none
+    */
+   @SuppressWarnings("unchecked")
+   public List<Failure> validate(ValidateObject vo, ResourceBundle rb)
+   {
+      if (vo != null && 
+          Key.RESOURCE_ADAPTER == vo.getKey() &&
+          vo.getObject() != null &&
+          vo.getObject() instanceof ResourceAdapter)
+      {
+         if (vo.getConfigProperties() != null && vo.getConfigProperties().size() > 0)
+         {
+            Class clz = vo.getObject().getClass();
+            List<Failure> failures = new ArrayList<Failure>(1);
+
+            for (ConfigPropertyMetaData cpmd : vo.getConfigProperties())
+            {
+               try
+               {
+                  String methodName = "get" + cpmd.getName().substring(0, 1).toUpperCase(Locale.US);
+                  if (cpmd.getName().length() > 1)
+                  {
+                     methodName += cpmd.getName().substring(1);
+                  }
+
+                  Method method = clz.getMethod(methodName, (Class[])null);
+
+                  if (!VALID_TYPES.contains(method.getReturnType()))
+                  {
+                     StringBuilder sb = new StringBuilder("Class: " + vo.getObject().getClass().getName());
+                     sb = sb.append(" Property: " + cpmd.getName());
+                     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.getName().substring(0, 1).toUpperCase(Locale.US);
+                     if (cpmd.getName().length() > 1)
+                     {
+                        methodName += cpmd.getName().substring(1);
+                     }
+                     
+                     Method method = clz.getMethod(methodName, (Class[])null);
+
+                     if (!VALID_TYPES.contains(method.getReturnType()))
+                     {
+                        StringBuilder sb = new StringBuilder("Class: " + vo.getObject().getClass().getName());
+                        sb = sb.append(" Property: " + cpmd.getName());
+                        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 null;
+   }
+}

Modified: projects/jboss-jca/trunk/deployers/src/main/resources/validator.properties
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/resources/validator.properties	2009-12-09 20:38:06 UTC (rev 97637)
+++ projects/jboss-jca/trunk/deployers/src/main/resources/validator.properties	2009-12-09 21:19:24 UTC (rev 97638)
@@ -13,3 +13,4 @@
 ra.RANull=A ResourceAdapter must be a non-null instance.
 ra.RAHashCode=A ResourceAdapter must implement a "public int hashCode()" method.
 ra.RAEquals=A ResourceAdapter must implement a "public boolean equals(Object)" method.
+ra.RAConfigProperties=Invalid config-property-type for ResourceAdapter.




More information about the jboss-cvs-commits mailing list