[jboss-cvs] JBossAS SVN: r111872 - in projects/jboss-jca/trunk/core/src: test/java/org/jboss/jca/core/inflow and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jul 28 13:34:20 EDT 2011
Author: jesper.pedersen
Date: 2011-07-28 13:34:20 -0400 (Thu, 28 Jul 2011)
New Revision: 111872
Modified:
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/rar/ActivationImpl.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/rar/SimpleResourceAdapterRepository.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/inflow/HornetQTestCase.java
Log:
[JBJCA-638] ActivationSpec config-property map not updated with introspected properties
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/rar/ActivationImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/rar/ActivationImpl.java 2011-07-28 16:07:47 UTC (rev 111871)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/rar/ActivationImpl.java 2011-07-28 17:34:20 UTC (rev 111872)
@@ -113,4 +113,23 @@
return instance;
}
+
+ /**
+ * String representation
+ * @return The string
+ */
+ @Override
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("ActivationImpl@").append(Integer.toHexString(System.identityHashCode(this)));
+ sb.append("[rar=").append(rar != null ? rar.get() : "null");
+ sb.append(" activationSpecClass=").append(activationSpecClass != null ? activationSpecClass.get() : "null");
+ sb.append(" configProperties=").append(configProperties);
+ sb.append(" requiredConfigProperties=").append(requiredConfigProperties);
+ sb.append("]");
+
+ return sb.toString();
+ }
}
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/rar/SimpleResourceAdapterRepository.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/rar/SimpleResourceAdapterRepository.java 2011-07-28 16:07:47 UTC (rev 111871)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/rar/SimpleResourceAdapterRepository.java 2011-07-28 17:34:20 UTC (rev 111872)
@@ -35,12 +35,14 @@
import org.jboss.jca.core.spi.rar.ResourceAdapterRepository;
import java.lang.ref.WeakReference;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
@@ -64,6 +66,9 @@
private static CoreLogger log = Logger.getMessageLogger(CoreLogger.class,
SimpleResourceAdapterRepository.class.getName());
+ /** The approved types */
+ private static Set<Class<?>> approvedTypes;
+
/** Resource adapters */
private Map<String, WeakReference<ResourceAdapter>> rars;
@@ -73,6 +78,29 @@
/** The metadata repository */
private MetadataRepository mdr;
+ // We include the primitive types because we can handle those
+ static
+ {
+ approvedTypes = new HashSet<Class<?>>();
+ approvedTypes.add(boolean.class);
+ approvedTypes.add(Boolean.class);
+ approvedTypes.add(byte.class);
+ approvedTypes.add(Byte.class);
+ approvedTypes.add(short.class);
+ approvedTypes.add(Short.class);
+ approvedTypes.add(int.class);
+ approvedTypes.add(Integer.class);
+ approvedTypes.add(long.class);
+ approvedTypes.add(Long.class);
+ approvedTypes.add(float.class);
+ approvedTypes.add(Float.class);
+ approvedTypes.add(double.class);
+ approvedTypes.add(Double.class);
+ approvedTypes.add(char.class);
+ approvedTypes.add(Character.class);
+ approvedTypes.add(String.class);
+ }
+
/**
* Constructor
*/
@@ -350,6 +378,7 @@
Set<String> requiredConfigProperties = new HashSet<String>();
Activationspec15 as = ml.getActivationspec();
+ Class<?> asClz = Class.forName(as.getActivationspecClass().getValue(), true, cl);
List<? extends ConfigProperty> cps = as.getConfigProperties();
if (cps != null && cps.size() > 0)
@@ -363,6 +392,8 @@
}
}
+ configProperties.putAll(introspectActivationSpec(asClz));
+
List<? extends RequiredConfigProperty> rcps = as.getRequiredConfigProperties();
if (rcps != null && rcps.size() > 0)
{
@@ -374,8 +405,6 @@
}
}
- Class<?> asClz = Class.forName(as.getActivationspecClass().getValue(), true, cl);
-
ActivationImpl a = new ActivationImpl(rar,
asClz,
Collections.unmodifiableMap(configProperties),
@@ -390,4 +419,44 @@
throw ie;
}
}
+
+ /**
+ * Introspect an activation spec class for config-property's
+ * @param clz The class
+ * @return The introspected map
+ */
+ private Map<String, Class<?>> introspectActivationSpec(Class<?> clz)
+ {
+ Map<String, Class<?>> result = new HashMap<String, Class<?>>();
+
+ if (clz != null)
+ {
+ Method[] methods = clz.getMethods();
+ if (methods != null && methods.length > 0)
+ {
+ for (int i = 0; i < methods.length; i++)
+ {
+ Method m = methods[i];
+
+ if (m.getName().startsWith("set") && m.getParameterTypes().length == 1)
+ {
+ Class<?> parameterType = m.getParameterTypes()[0];
+
+ if (approvedTypes.contains(parameterType))
+ {
+ String n = m.getName().substring(3);
+ String name = n.substring(0, 1).toLowerCase(Locale.US);
+
+ if (n.length() > 1)
+ name = name.concat(n.substring(1));
+
+ result.put(name, parameterType);
+ }
+ }
+ }
+ }
+ }
+
+ return result;
+ }
}
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/inflow/HornetQTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/inflow/HornetQTestCase.java 2011-07-28 16:07:47 UTC (rev 111871)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/inflow/HornetQTestCase.java 2011-07-28 17:34:20 UTC (rev 111872)
@@ -24,6 +24,7 @@
import org.jboss.jca.core.inflow.support.HornetQMessageEndpoint;
import org.jboss.jca.core.inflow.support.HornetQMessageEndpointFactory;
+import org.jboss.jca.core.spi.rar.Activation;
import org.jboss.jca.core.spi.rar.Endpoint;
import org.jboss.jca.core.spi.rar.MessageListener;
import org.jboss.jca.core.spi.rar.ResourceAdapterRepository;
@@ -168,8 +169,19 @@
assertEquals(1, listeners.size());
MessageListener listener = listeners.get(0);
+ Activation activation = listener.getActivation();
- ActivationSpec as = listener.getActivation().createInstance();
+ log.debug("Activation=" + activation);
+
+ assertNotNull(activation);
+
+ assertNotNull(activation.getConfigProperties());
+ assertTrue(activation.getConfigProperties().size() > 0);
+
+ assertNotNull(activation.getRequiredConfigProperties());
+ assertTrue(activation.getRequiredConfigProperties().size() > 0);
+
+ ActivationSpec as = activation.createInstance();
assertNotNull(as);
assertNotNull(as.getResourceAdapter());
More information about the jboss-cvs-commits
mailing list