Author: rmannibucau
Date: Tue Aug 21 16:27:55 2012
New Revision: 1375650
URL: http://svn.apache.org/viewvc?rev=1375650&view=rev
Log:
TOMEE-397 allow simple name when possible using META-INF/resources.xml
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=1375650&r1=1375649&r2=1375650&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
Tue Aug 21 16:27:55 2012
@@ -878,7 +878,7 @@ public class AutoConfig implements Dynam
ResourceInfo resourceInfo =
configFactory.configureService(resource, ResourceInfo.class);
resourceInfo.originAppName = module.getModuleId();
final ResourceRef resourceRef = new ResourceRef();
- resourceRef.setResType(resource.getType());
+ resourceRef.setResType(chooseType(module.getClassLoader(),
resourceInfo.types, resource.getType()));
if (DataSource.class.getName().equals(resource.getType())
&& resource.getProperties().containsKey(ORIGIN_FLAG)
@@ -926,6 +926,26 @@ public class AutoConfig implements Dynam
// resources.clear(); // don't clear it since we want to keep this to
be able to undeploy resources with the app
}
+ private static String chooseType(final ClassLoader classLoader, final
List<String> types, final String defaultType) {
+ if (types != null) {
+ for (String type : types) {
+ if (canLoad(classLoader, type)) {
+ return type;
+ }
+ }
+ }
+ return defaultType;
+ }
+
+ private static boolean canLoad(final ClassLoader classLoader, final String
type) {
+ try {
+ classLoader.loadClass(type);
+ return true;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+
private String dataSourceLookupName(Resource datasource) {
final String jndi = datasource.getJndi();
if (jndi.startsWith("java:")) return jndi;