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;


Reply via email to