Author: wprice
Date: Wed Apr 18 01:34:52 2012
New Revision: 1327352

URL: http://svn.apache.org/viewvc?rev=1327352&view=rev
Log:
QPID-3955: Qpid JCA Adapter should throw ResourceException if
TransactionManager Cannot be located.

QPID-3956: Add WLSTransactionManagerLocatorClass.

Added:
    
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/tm/WLSTransactionManagerLocator.java
Modified:
    
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidResourceAdapter.java
    
qpid/trunk/qpid/java/jca/src/test/java/org/apache/qpid/ra/QpidResourceAdapterTest.java

Modified: 
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidResourceAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidResourceAdapter.java?rev=1327352&r1=1327351&r2=1327352&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidResourceAdapter.java
 (original)
+++ 
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidResourceAdapter.java
 Wed Apr 18 01:34:52 2012
@@ -681,7 +681,7 @@ public class QpidResourceAdapter impleme
       return map;
    }
 
-   private void locateTM()
+   private void locateTM() throws ResourceAdapterInternalException
    {
       if(_raProperties.getTransactionManagerLocatorClass() != null && 
_raProperties.getTransactionManagerLocatorMethod() != null)
       {
@@ -703,8 +703,8 @@ public class QpidResourceAdapter impleme
 
       if (_tm == null)
       {
-         _log.warn("It wasn't possible to lookup a Transaction Manager through 
the configured properties TransactionManagerLocatorClass and 
TransactionManagerLocatorMethod");
-         _log.warn("Qpid Resource Adapter won't be able to set and verify 
transaction timeouts in certain cases.");
+         _log.error("It wasn't possible to locate 
javax.transaction.TransactionManager via the RA properties 
TransactionManagerLocatorClass and TransactionManagerLocatorMethod");
+         throw new ResourceAdapterInternalException("Could not locate 
javax.transaction.TransactionManager");
       }
       else
       {

Added: 
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/tm/WLSTransactionManagerLocator.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/tm/WLSTransactionManagerLocator.java?rev=1327352&view=auto
==============================================================================
--- 
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/tm/WLSTransactionManagerLocator.java
 (added)
+++ 
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/tm/WLSTransactionManagerLocator.java
 Wed Apr 18 01:34:52 2012
@@ -0,0 +1,64 @@
+/*
+ * 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.qpid.ra.tm;
+
+
+import javax.naming.InitialContext;
+import javax.transaction.TransactionManager;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class WLSTransactionManagerLocator
+{
+    private static final Logger _log = 
LoggerFactory.getLogger(WLSTransactionManagerLocator.class);
+
+    private static final String TM_JNDI_NAME = 
"javax.transaction.TransactionManager";
+
+    public TransactionManager getTm() throws Exception
+    {
+        InitialContext ctx = null;
+        TransactionManager tm = null;
+
+        try
+        {
+            ctx = new InitialContext();
+            tm = (TransactionManager)ctx.lookup(TM_JNDI_NAME);
+        }
+        catch(Exception e)
+        {
+            _log.error("Unable to locate javax.transaction.TransactionManager 
" + e.getMessage());
+        }
+        finally
+        {
+            try
+            {
+                if(ctx != null)
+                {
+                    ctx.close();
+                }
+            }
+            catch(Exception ignore){}
+        }
+
+        return tm;
+    }
+}
+

Modified: 
qpid/trunk/qpid/java/jca/src/test/java/org/apache/qpid/ra/QpidResourceAdapterTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/jca/src/test/java/org/apache/qpid/ra/QpidResourceAdapterTest.java?rev=1327352&r1=1327351&r2=1327352&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/jca/src/test/java/org/apache/qpid/ra/QpidResourceAdapterTest.java
 (original)
+++ 
qpid/trunk/qpid/java/jca/src/test/java/org/apache/qpid/ra/QpidResourceAdapterTest.java
 Wed Apr 18 01:34:52 2012
@@ -20,9 +20,11 @@
  */
 package org.apache.qpid.ra;
 
+import javax.resource.spi.ResourceAdapterInternalException;
 
 import junit.framework.TestCase;
 
+
 public class QpidResourceAdapterTest extends TestCase
 {
     public void testGetXAResources() throws Exception
@@ -31,4 +33,33 @@ public class QpidResourceAdapterTest ext
         assertNull(ra.getXAResources(null));
     }
 
+    public void testTransactionManagerLocatorException() throws Exception
+    {
+
+        QpidResourceAdapter ra = new QpidResourceAdapter();
+        assertNull(ra.getTransactionManagerLocatorClass());
+        assertNull(ra.getTransactionManagerLocatorMethod());
+
+        try
+        {
+            ra.start(null);
+        }
+        catch(ResourceAdapterInternalException e)
+        {
+
+        }
+
+        ra.setTransactionManagerLocatorClass("DummyLocator");
+
+        try
+        {
+            ra.start(null);
+        }
+        catch(ResourceAdapterInternalException e)
+        {
+
+        }
+
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to