You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2010/04/13 13:15:37 UTC

svn commit: r933554 - in /jackrabbit/trunk: jackrabbit-api/src/main/java/org/apache/jackrabbit/api/ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/ jackrabbit-jca/src/test/java/org/apach...

Author: jukka
Date: Tue Apr 13 11:15:36 2010
New Revision: 933554

URL: http://svn.apache.org/viewvc?rev=933554&view=rev
Log:
JCR-2578: Deprecate XASession

Modified:
    jackrabbit/trunk/jackrabbit-api/src/main/java/org/apache/jackrabbit/api/XASession.java
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/UserTransactionImpl.java
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java
    jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java
    jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java
    jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCASessionHandle.java
    jackrabbit/trunk/jackrabbit-jca/src/test/java/org/apache/jackrabbit/jca/test/ConnectionFactoryTest.java

Modified: jackrabbit/trunk/jackrabbit-api/src/main/java/org/apache/jackrabbit/api/XASession.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-api/src/main/java/org/apache/jackrabbit/api/XASession.java?rev=933554&r1=933553&r2=933554&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-api/src/main/java/org/apache/jackrabbit/api/XASession.java (original)
+++ jackrabbit/trunk/jackrabbit-api/src/main/java/org/apache/jackrabbit/api/XASession.java Tue Apr 13 11:15:36 2010
@@ -31,6 +31,8 @@ import javax.transaction.xa.XAResource;
  * use it directly.
  *
  * @since 1.4
+ * @deprecated An XA-enabled session should directly implement the
+ *             {@link javax.transaction.xa.XAResource} interface
  */
 public interface XASession extends Session {
 

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/UserTransactionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/UserTransactionImpl.java?rev=933554&r1=933553&r2=933554&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/UserTransactionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/UserTransactionImpl.java Tue Apr 13 11:15:36 2010
@@ -59,7 +59,7 @@ public class UserTransactionImpl impleme
     /**
      * Create a new instance of this class. Takes a session as parameter.
      * @param session session. If session is not of type
-     * {@link XASession}, an <code>IllegalArgumentException</code>
+     * {@link XAResource}, an <code>IllegalArgumentException</code>
      * is thrown
      */
     public UserTransactionImpl(Session session) {
@@ -69,16 +69,16 @@ public class UserTransactionImpl impleme
     /**
      * Create a new instance of this class. Takes a session as parameter.
      * @param session session. If session is not of type
-     * {@link XASession}, an <code>IllegalArgumentException</code>
+     * {@link XAResource}, an <code>IllegalArgumentException</code>
      * is thrown
      */
     public UserTransactionImpl(Session session, boolean distributedThreadAccess) {
-        if (session instanceof XASession) {
+        if (session instanceof XAResource) {
             counter++;
-            xaResources.put(((XASession) session).getXAResource(), new XidImpl(counter));
+            xaResources.put((XAResource) session, new XidImpl(counter));
             this.distributedThreadAccess = distributedThreadAccess; 
         } else {
-            throw new IllegalArgumentException("Session not of type XASession");
+            throw new IllegalArgumentException("Session not of type XAResource");
         }
     }
 

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java?rev=933554&r1=933553&r2=933554&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java Tue Apr 13 11:15:36 2010
@@ -36,7 +36,7 @@ import java.util.StringTokenizer;
 
 /**
  * <code>XATest</code> contains the test cases for the methods
- * inside {@link org.apache.jackrabbit.api.XASession}.
+ * inside {@link XASessionImpl}.
  */
 public class XATest extends AbstractJCRTest {
 

Modified: jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java?rev=933554&r1=933553&r2=933554&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java (original)
+++ jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java Tue Apr 13 11:15:36 2010
@@ -16,10 +16,9 @@
  */
 package org.apache.jackrabbit.jca;
 
-import org.apache.jackrabbit.api.XASession;
-
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
+import javax.jcr.Session;
 import javax.resource.ResourceException;
 import javax.resource.spi.ConnectionEvent;
 import javax.resource.spi.ConnectionEventListener;
@@ -53,7 +52,7 @@ public final class JCAManagedConnection
     /**
      * Session instance.
      */
-    private final XASession session;
+    private final Session session;
 
     /**
      * XAResource instance.
@@ -78,16 +77,18 @@ public final class JCAManagedConnection
     /**
      * Construct the managed connection.
      */
-    public JCAManagedConnection(JCAManagedConnectionFactory mcf, JCAConnectionRequestInfo cri, XASession session) {
+    public JCAManagedConnection(
+            JCAManagedConnectionFactory mcf, JCAConnectionRequestInfo cri,
+            Session session) {
         this.mcf = mcf;
         this.cri = cri;
         this.session = session;
         this.listeners = new LinkedList<ConnectionEventListener>();
         this.handles = new LinkedList<JCASessionHandle>();
         if (this.mcf.getBindSessionToTransaction().booleanValue()) {
-            this.xaResource =  new TransactionBoundXAResource(this, session.getXAResource());
+            this.xaResource =  new TransactionBoundXAResource(this, (XAResource) session);
         } else {
-            this.xaResource = session.getXAResource();
+            this.xaResource = (XAResource) session;
         }
     }
 
@@ -218,7 +219,7 @@ public final class JCAManagedConnection
     /**
      * Return the session.
      */
-    public XASession getSession(JCASessionHandle handle) {
+    public Session getSession(JCASessionHandle handle) {
         synchronized (handles) {
             if ((handles.size() > 0) && (handles.get(0) == handle)) {
                 return session;

Modified: jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java?rev=933554&r1=933553&r2=933554&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java (original)
+++ jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java Tue Apr 13 11:15:36 2010
@@ -143,7 +143,7 @@ public final class JCAManagedConnectionF
     /**
      * Create a new session.
      */
-    private XASession openSession(JCAConnectionRequestInfo cri)
+    private Session openSession(JCAConnectionRequestInfo cri)
             throws ResourceException {
         createRepository();
         Credentials creds = cri.getCredentials();
@@ -152,7 +152,7 @@ public final class JCAManagedConnectionF
         try {
             Session session = getRepository().login(creds, workspace);
             log("Created session (" + session + ")");
-            return (XASession) session;
+            return session;
         } catch (RepositoryException e) {
             log("Failed to create session", e);
             ResourceException exception = new ResourceException(

Modified: jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCASessionHandle.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCASessionHandle.java?rev=933554&r1=933553&r2=933554&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCASessionHandle.java (original)
+++ jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCASessionHandle.java Tue Apr 13 11:15:36 2010
@@ -45,16 +45,17 @@ import javax.jcr.nodetype.NoSuchNodeType
 import javax.jcr.retention.RetentionManager;
 import javax.jcr.security.AccessControlManager;
 import javax.jcr.version.VersionException;
+import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
 
-import org.apache.jackrabbit.api.XASession;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
 /**
  * This class implements the JCA implementation of session.
  */
-public final class JCASessionHandle implements XASession {
+public final class JCASessionHandle implements Session, XAResource {
 
     /**
      * Managed connection.
@@ -85,7 +86,7 @@ public final class JCASessionHandle impl
     /**
      * Return the session.
      */
-    private XASession getSession() {
+    private Session getSession() {
         return mc.getSession(this);
     }
 
@@ -381,15 +382,59 @@ public final class JCASessionHandle impl
         getSession().removeItem(path);
     }
 
-    //---------------------------------------------------------< XASession >--
+    //--------------------------------------------------------< XAResource >--
 
-    /**
-     * Returns the XAResource associated with this session.
-     *
-     * @return XA resource
-     */
-    public XAResource getXAResource() {
-        return getSession().getXAResource();
+    private XAResource getXAResource() throws XAException {
+        Session session = getSession();
+        if (session instanceof XAResource) {
+            return (XAResource) session;
+        } else {
+            throw new XAException(
+                    "XA transactions are not supported with " + session);
+        }
+    }
+
+    public void start(Xid xid, int flags) throws XAException {
+        getXAResource().start(xid, flags);
+    }
+
+    public void end(Xid xid, int flags) throws XAException {
+        getXAResource().end(xid, flags);
+    }
+
+    public int prepare(Xid xid) throws XAException {
+        return getXAResource().prepare(xid);
+    }
+
+    public void rollback(Xid xid) throws XAException {
+        getXAResource().rollback(xid);
+    }
+
+    public void commit(Xid xid, boolean onePhase) throws XAException {
+        getXAResource().commit(xid, onePhase);
+    }
+
+    public void forget(Xid xid) throws XAException {
+        getXAResource().forget(xid);
+    }
+
+    public Xid[] recover(int flag) throws XAException {
+        return getXAResource().recover(flag);
+    }
+
+    public boolean isSameRM(XAResource xares) throws XAException {
+        if (xares instanceof JCASessionHandle) {
+            xares = ((JCASessionHandle) xares).getXAResource();
+        }
+        return getXAResource().isSameRM(xares);
+    }
+
+    public int getTransactionTimeout() throws XAException {
+        return getXAResource().getTransactionTimeout();
+    }
+
+    public boolean setTransactionTimeout(int seconds) throws XAException {
+        return getXAResource().setTransactionTimeout(seconds);
     }
 
 }

Modified: jackrabbit/trunk/jackrabbit-jca/src/test/java/org/apache/jackrabbit/jca/test/ConnectionFactoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jca/src/test/java/org/apache/jackrabbit/jca/test/ConnectionFactoryTest.java?rev=933554&r1=933553&r2=933554&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jca/src/test/java/org/apache/jackrabbit/jca/test/ConnectionFactoryTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jca/src/test/java/org/apache/jackrabbit/jca/test/ConnectionFactoryTest.java Tue Apr 13 11:15:36 2010
@@ -24,8 +24,8 @@ import javax.jcr.Repository;
 import javax.jcr.Session;
 import javax.naming.Referenceable;
 import javax.resource.spi.ManagedConnection;
+import javax.transaction.xa.XAResource;
 
-import org.apache.jackrabbit.api.XASession;
 import org.apache.jackrabbit.jca.JCAConnectionRequestInfo;
 import org.apache.jackrabbit.jca.JCARepositoryHandle;
 import org.apache.jackrabbit.jca.JCASessionHandle;
@@ -117,7 +117,7 @@ public final class ConnectionFactoryTest
 
         // Open a session
         Session session = repository.login(JCR_SUPERUSER);
-        assertTrue(session instanceof XASession);
+        assertTrue(session instanceof XAResource);
         session.logout();
     }