You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2008/01/05 11:14:57 UTC

svn commit: r609119 - in /openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/config/ container/openejb-core/src/test/resources/conf/ itests/openejb-itests-beans/src/main/resources/META-INF/ itests/openejb-itests-client/src/...

Author: dblevins
Date: Sat Jan  5 02:14:31 2008
New Revision: 609119

URL: http://svn.apache.org/viewvc?rev=609119&view=rev
Log:
Employed CaseInsensitiveProperties
Ability to auto-config based on property names/values
Added missing resource-link elements in openejb-jar.xml

Added:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClearEmptyMappedName.java
Removed:
    openejb/trunk/openejb3/container/openejb-core/src/test/resources/conf/
Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ApplyOpenejbJar.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java
    openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/openejb-jar.xml
    openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/AbstractCMRTest.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ApplyOpenejbJar.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ApplyOpenejbJar.java?rev=609119&r1=609118&r2=609119&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ApplyOpenejbJar.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ApplyOpenejbJar.java Sat Jan  5 02:14:31 2008
@@ -45,6 +45,8 @@
                 // Get the OpenEJB deployment from openejb-jar.xml
                 EjbDeployment ejbDeployment = ejbDeployments.get(enterpriseBean.getEjbName());
 
+                enterpriseBean.setId(ejbDeployment.getDeploymentId());
+
                 // Copy all links over to mappedName
 
                 for (ResourceRef ref : enterpriseBean.getResourceRef()) {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=609119&r1=609118&r2=609119&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java Sat Jan  5 02:14:31 2008
@@ -298,11 +298,13 @@
             ejbModule.setOpenejbJar(openejbJar);
         }
 
+        Map<String, EjbDeployment> deployments = openejbJar.getDeploymentsByEjbName();
+
         for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) {
             if (bean instanceof MessageDrivenBean) {
                 MessageDrivenBean mdb = (MessageDrivenBean) bean;
 
-                EjbDeployment ejbDeployment = openejbJar.getDeploymentsByEjbName().get(bean.getEjbName());
+                EjbDeployment ejbDeployment = deployments.get(bean.getEjbName());
                 if (ejbDeployment == null) {
                     throw new OpenEJBException("No ejb deployment found for ejb " + bean.getEjbName());
                 }
@@ -671,8 +673,10 @@
             ejbModule.setOpenejbJar(openejbJar);
         }
 
+        Map<String, EjbDeployment> deployments = openejbJar.getDeploymentsByEjbName();
+
         for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) {
-            EjbDeployment ejbDeployment = openejbJar.getDeploymentsByEjbName().get(bean.getEjbName());
+            EjbDeployment ejbDeployment = deployments.get(bean.getEjbName());
             if (ejbDeployment == null) {
                 throw new OpenEJBException("No ejb deployment found for ejb " + bean.getEjbName());
             }
@@ -849,11 +853,16 @@
 
         Persistence persistence = persistenceModule.getPersistence();
         for (PersistenceUnit persistenceUnit : persistence.getPersistenceUnit()) {
-            String jtaDataSourceId = getResourceId(persistenceUnit.getName(), persistenceUnit.getJtaDataSource(), DataSource.class.getName(), null);
+            Properties required = new Properties();
+
+            required.put("JtaManaged", "true");
+            String jtaDataSourceId = getResourceId(persistenceUnit.getName(), persistenceUnit.getJtaDataSource(), DataSource.class.getName(), null, required);
             if (jtaDataSourceId != null) {
                 persistenceUnit.setJtaDataSource("java:openejb/Resource/" + jtaDataSourceId);
             }
-            String nonJtaDataSourceId = getResourceId(persistenceUnit.getName(), persistenceUnit.getNonJtaDataSource(), DataSource.class.getName(), null);
+
+            required.put("JtaManaged", "false");
+            String nonJtaDataSourceId = getResourceId(persistenceUnit.getName(), persistenceUnit.getNonJtaDataSource(), DataSource.class.getName(), null, required);
             if (nonJtaDataSourceId != null) {
                 persistenceUnit.setNonJtaDataSource("java:openejb/Resource/" + nonJtaDataSourceId);
             }
@@ -861,9 +870,14 @@
     }
 
     private String getResourceId(String beanName, String resourceId, String type, AppResources appResources) throws OpenEJBException {
+        return getResourceId(beanName, resourceId, type, appResources, null);
+    }
+
+    private String getResourceId(String beanName, String resourceId, String type, AppResources appResources, Properties required) throws OpenEJBException {
         if(resourceId == null){
             return null;
         }
+
         if (appResources == null) appResources = new AppResources();
 
         // skip references such as URL which are automatically handled by the server
@@ -879,7 +893,7 @@
         // check for existing resource with specified resourceId
         List<String> resourceIds = new ArrayList<String>();
         resourceIds.addAll(appResources.getResourceIds(type));
-        resourceIds.addAll(configFactory.getResourceIds(type));
+        resourceIds.addAll(configFactory.getResourceIds(type, required));
         for (String id : resourceIds) {
             if (id.equalsIgnoreCase(resourceId)) return id;
         }
@@ -893,7 +907,7 @@
         // expand search to any type -- may be asking for a reference to a sub-type
         List<String> allResourceIds = new ArrayList<String>();
         allResourceIds.addAll(appResources.getResourceIds(null));
-        allResourceIds.addAll(configFactory.getResourceIds(null));
+        allResourceIds.addAll(configFactory.getResourceIds(null, required));
         for (String id : allResourceIds) {
             if (id.equalsIgnoreCase(resourceId)) return id;
         }
@@ -923,7 +937,7 @@
         }
 
         // Auto create a resource using the first provider that can supply a resource of the desired type
-        resourceId = ServiceUtils.getServiceProviderId(type);
+        resourceId = ServiceUtils.getServiceProviderId(type, required);
         if (resourceId == null) {
             throw new OpenEJBException("No provider available for resource-ref '" + resourceId + "' of type '" + type + "' for '" + beanName + "'.");
         }

Added: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClearEmptyMappedName.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClearEmptyMappedName.java?rev=609119&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClearEmptyMappedName.java (added)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClearEmptyMappedName.java Sat Jan  5 02:14:31 2008
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.config;
+
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.jee.JndiConsumer;
+import org.apache.openejb.jee.JndiReference;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ClearEmptyMappedName implements DynamicDeployer {
+
+    public AppModule deploy(AppModule appModule) throws OpenEJBException {
+        for (EjbModule ejbModule : appModule.getEjbModules()) {
+            for (JndiConsumer consumer : ejbModule.getEjbJar().getEnterpriseBeans()) {
+                clearEmptyMappedName(consumer);
+            }
+        }
+        for (ClientModule clientModule : appModule.getClientModules()) {
+            clearEmptyMappedName(clientModule.getApplicationClient());
+        }
+        for (WebModule webModule : appModule.getWebModules()) {
+            clearEmptyMappedName(webModule.getWebApp());
+        }
+        return appModule;
+    }
+
+    private void clearEmptyMappedName(JndiConsumer consumer) {
+        List<JndiReference> refs = new ArrayList<JndiReference>();
+        refs.addAll(consumer.getEjbLocalRef());
+        refs.addAll(consumer.getEjbRef());
+        refs.addAll(consumer.getEnvEntry());
+        refs.addAll(consumer.getMessageDestinationRef());
+        refs.addAll(consumer.getPersistenceContextRef());
+        refs.addAll(consumer.getPersistenceUnitRef());
+        refs.addAll(consumer.getResourceEnvRef());
+        refs.addAll(consumer.getResourceRef());
+        refs.addAll(consumer.getServiceRef());
+
+        for (JndiReference ref : refs) {
+            if (ref.getMappedName() != null && ref.getMappedName().length() == 0) ref.setMappedName(null);
+        }
+    }
+}

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=609119&r1=609118&r2=609119&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Sat Jan  5 02:14:31 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.config;
 
+import static org.apache.openejb.config.ServiceUtils.implies;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.Assembler;
@@ -64,11 +65,9 @@
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Messages;
 import org.apache.openejb.util.URISupport;
-import org.apache.openejb.util.Join;
+import org.apache.openejb.util.CaseInsensitiveProperties;
 
 import java.io.File;
-import java.io.DataOutputStream;
-import java.io.PrintWriter;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
@@ -155,6 +154,8 @@
 
         chain.add(new AnnotationDeployer());
 
+        chain.add(new ClearEmptyMappedName());
+
         boolean shouldValidate = !SystemInstance.get().getProperty("openejb.validation.skip", "false").equalsIgnoreCase("true");
         if (shouldValidate) {
             chain.add(new ValidateModules());
@@ -193,7 +194,8 @@
         chain.add(new ApplyOpenejbJar());
 
         // TODO: How do we want this plugged in?
-        //chain.add(new OutputGeneratedDescriptors());
+        chain.add(new OutputGeneratedDescriptors());
+
         this.deployer = chain;
     }
 
@@ -525,7 +527,7 @@
 
             logger.info("configureService.configuring", service.getId(), provider.getService(), provider.getId());
 
-            Properties props = new Properties();
+            Properties props = new CaseInsensitiveProperties();
             props.putAll(provider.getProperties());
             props.putAll(service.getProperties());
             props.putAll(getSystemProperties(service.getId(), provider.getService()));
@@ -690,12 +692,18 @@
     }
 
     protected List<String> getResourceIds(String type) {
+        return getResourceIds(type, null);
+    }
+
+    protected List<String> getResourceIds(String type, Properties required) {
         List<String> resourceIds = new ArrayList<String>();
 
+        if (required == null) required = new Properties();
+
         OpenEjbConfiguration runningConfig = getRunningConfig();
         if (runningConfig != null) {
             for (ResourceInfo resourceInfo : runningConfig.facilities.resources) {
-                if (isResourceType(resourceInfo.service, resourceInfo.types, type)) {
+                if (isResourceType(resourceInfo.service, resourceInfo.types, type) && implies(required, resourceInfo.properties)) {
                     resourceIds.add(resourceInfo.id);
                 }
             }
@@ -703,7 +711,7 @@
 
         if (sys != null) {
             for (ResourceInfo resourceInfo : sys.facilities.resources) {
-                if (isResourceType(resourceInfo.service, resourceInfo.types, type)) {
+                if (isResourceType(resourceInfo.service, resourceInfo.types, type) && implies(required, resourceInfo.properties)) {
                     resourceIds.add(resourceInfo.id);
                 }
             }
@@ -716,7 +724,7 @@
                     if (resource.getType() != null){
                         types.add(resource.getType());
                     }
-                    if (isResourceType("Resource", types, type)) {
+                    if (isResourceType("Resource", types, type) && implies(required, resource.getProperties())) {
                         resourceIds.add(resource.getId());
                     }
                 }
@@ -796,30 +804,10 @@
             if (!provider.types.contains("Topic") && !provider.types.contains("Queue")) return;
             if (!provider.className.matches("org.apache.activemq.command.ActiveMQ(Topic|Queue)")) return;
 
-
-            Properties properties = provider.properties;
-            String destination = normalizePropertyName(properties, "destination");
-            if (properties.getProperty(destination) == null || properties.getProperty(destination).equals("")){
-                properties.setProperty(destination, provider.id);
+            String dest = provider.properties.getProperty("destination");
+            if (dest == null || dest.length() == 0) {
+                provider.properties.setProperty("destination", provider.id);
             }
-        }
-
-        /**
-         * Our properties are not case sensitive, so they may have specified the name
-         * under any case.  Would be super to have a case insensitive properties impl.
-         * @param properties
-         * @param property
-         * @return the property name under any corrected case
-         */
-        private static String normalizePropertyName(Properties properties, String property) {
-            for (Object o : properties.keySet()) {
-                String name  = (String) o;
-                if (name.equalsIgnoreCase(property)){
-                    return name;
-                }
-            }
-
-            return property;
         }
     }
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java?rev=609119&r1=609118&r2=609119&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ServiceUtils.java Sat Jan  5 02:14:31 2008
@@ -36,6 +36,8 @@
 import java.util.ArrayList;
 
 public class ServiceUtils {
+    public static final String ANY = ServiceUtils.class.getName() + "@ANY";
+
     public static final String defaultProviderURL = System.getProperty("openejb.provider.default", "org.apache.openejb");
     private static Map<String, List<ServiceProvider>> loadedServiceJars = new HashMap<String, List<ServiceProvider>>();
     public static Messages messages = new Messages("org.apache.openejb.util.resources");
@@ -90,7 +92,11 @@
     }
 
     public static String getServiceProviderId(String type) throws OpenEJBException {
-        ServiceProvider provider = getServiceProviderByType(type);
+        return getServiceProviderId(type, null);
+    }
+
+    public static String getServiceProviderId(String type, Properties required) throws OpenEJBException {
+        ServiceProvider provider = getServiceProviderByType(type, required);
 
         return provider != null? provider.getId(): null;
     }
@@ -113,18 +119,38 @@
 
 
     public static ServiceProvider getServiceProviderByType(String type) throws OpenEJBException {
+        return getServiceProviderByType(type, (Properties) null);
+    }
+
+    public static ServiceProvider getServiceProviderByType(String type, Properties required) throws OpenEJBException {
         if (type == null) return null;
+        if (required == null) required = new Properties();
 
         List<ServiceProvider> services = getServiceProviders(defaultProviderURL);
 
         for (ServiceProvider service : services) {
-            if (service.getTypes().contains(type)) {
+            if (service.getTypes().contains(type) && implies(required, service.getProperties())) {
                 return service;
             }
         }
 
         return null;
     }
+
+    public static boolean implies(Properties a, Properties b){
+        for (Map.Entry<Object, Object> entry : a.entrySet()) {
+            Object value = b.get(entry.getKey());
+
+            // does b have the key?
+            if (value == null) return false;
+
+            // do the values match?
+            Object expected = entry.getValue();
+            if (!expected.equals(ANY) && !expected.equals(value)) return false;
+        }
+        return true;
+    }
+
 
     public static ServiceProvider getServiceProviderByType(String providerType, String serviceType) throws OpenEJBException {
         if (serviceType == null) return null;

Modified: openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/openejb-jar.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/openejb-jar.xml?rev=609119&r1=609118&r2=609119&view=diff
==============================================================================
--- openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/openejb-jar.xml (original)
+++ openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/openejb-jar.xml Sat Jan  5 02:14:31 2008
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one or more
@@ -136,6 +136,7 @@
   </ejb-deployment>
   <ejb-deployment ejb-name="AOBasicCmpBean" deployment-id="client/tests/entity/cmp/allowed_operations/EntityHome">
     <resource-link res-ref-name="jdbc/basic/entityDatabase" res-id="My DataSource"/>
+    <resource-link res-ref-name="stateless/references/Resource_manager_access" res-id="My DataSource"/>
     <query>
       <query-method>
         <method-name>findByLastName</method-name>
@@ -155,6 +156,7 @@
   </ejb-deployment>
   <ejb-deployment ejb-name="AOBasicCmp2Bean" deployment-id="client/tests/entity/cmp2/allowed_operations/EntityHome">
     <resource-link res-ref-name="jdbc/basic/entityDatabase" res-id="My DataSource"/>
+    <resource-link res-ref-name="stateless/references/Resource_manager_access" res-id="My DataSource"/>
   </ejb-deployment>
   <ejb-deployment ejb-name="EncCmpBean" deployment-id="client/tests/entity/cmp/EncBean">
     <resource-link res-ref-name="datasource" res-id="My DataSource"/>
@@ -348,5 +350,25 @@
   <ejb-deployment ejb-name="InterceptorMdbBean" deployment-id="InterceptorMdbBean">
     <resource-link res-ref-name="jms" res-id="My JMS Connection Factory"/>
   </ejb-deployment>
-  
+  <ejb-deployment ejb-name="AnnotatedFieldInjectionStatefulBean" deployment-id="AnnotatedFieldInjectionStatefulBean">
+    <resource-link res-ref-name="org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulBean/daataSource" res-id="My DataSource"/>
+    <resource-link res-ref-name="org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulBean/coonnectionFactory" res-id="My JMS Connection Factory"/>
+    <resource-link res-ref-name="org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulBean/queueCoonnectionFactory" res-id="My JMS Connection Factory"/>
+    <resource-link res-ref-name="org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulBean/topicCoonnectionFactory" res-id="My JMS Connection Factory"/>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="AnnotatedFieldInjectionStatelessBean" deployment-id="AnnotatedFieldInjectionStatelessBean">
+    <resource-link res-ref-name="org.apache.openejb.test.stateless.AnnotatedFieldInjectionStatelessBean/daataSource" res-id="My DataSource"/>
+    <resource-link res-ref-name="org.apache.openejb.test.stateless.AnnotatedFieldInjectionStatelessBean/coonnectionFactory" res-id="My JMS Connection Factory"/>
+    <resource-link res-ref-name="org.apache.openejb.test.stateless.AnnotatedFieldInjectionStatelessBean/queueCoonnectionFactory" res-id="My JMS Connection Factory"/>
+    <resource-link res-ref-name="org.apache.openejb.test.stateless.AnnotatedFieldInjectionStatelessBean/topicCoonnectionFactory" res-id="My JMS Connection Factory"/>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="BasicStatelessIntercepted" deployment-id="BasicStatelessIntercepted"/>
+  <ejb-deployment ejb-name="BasicStatefulIntercepted" deployment-id="BasicStatefulIntercepted"/>
+  <ejb-deployment ejb-name="AnnotatedFieldInjectionMdbBean" deployment-id="AnnotatedFieldInjectionMdbBean">
+    <resource-link res-ref-name="openejb/destination" res-id="AnnotatedFieldInjectionMdb"/>
+    <resource-link res-ref-name="org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/daataSource" res-id="My DataSource"/>
+    <resource-link res-ref-name="org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/coonnectionFactory" res-id="My JMS Connection Factory"/>
+    <resource-link res-ref-name="org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/queueCoonnectionFactory" res-id="My JMS Connection Factory"/>
+    <resource-link res-ref-name="org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/topicCoonnectionFactory" res-id="My JMS Connection Factory"/>
+  </ejb-deployment>
 </openejb-jar>

Modified: openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/AbstractCMRTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/AbstractCMRTest.java?rev=609119&r1=609118&r2=609119&view=diff
==============================================================================
--- openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/AbstractCMRTest.java (original)
+++ openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/AbstractCMRTest.java Sat Jan  5 02:14:31 2008
@@ -26,6 +26,7 @@
 import javax.sql.DataSource;
 import javax.naming.InitialContext;
 import javax.naming.Context;
+import javax.naming.NamingException;
 import java.util.Properties;
 import java.sql.SQLException;
 import java.sql.Connection;
@@ -75,7 +76,11 @@
 
         InitialContext jndiContext = new InitialContext( );
         transactionManager = (TransactionManager) jndiContext.lookup("java:openejb/TransactionManager");
-        ds = (DataSource) jndiContext.lookup("java:openejb/Resource/My DataSource");
+        try {
+            ds = (DataSource) jndiContext.lookup("java:openejb/Resource/My DataSource");
+        } catch (NamingException e) {
+            ds = (DataSource) jndiContext.lookup("java:openejb/Resource/Default JDBC Database");
+        }
     }
 
     protected static void dumpTable(DataSource ds, String table) throws SQLException {