[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