ozeigermann 2004/04/02 00:10:52
Modified: src/webdav/server/org/apache/slide/webdav/method Tag:
SLIDE_2_1_EXTERNAL_TX TransactionMethod.java
Log:
Initial external transaction implementation
Revision Changes Path
No revision
No revision
1.1.2.1 +28 -7
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/TransactionMethod.java
Index: TransactionMethod.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/TransactionMethod.java,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -r1.1 -r1.1.2.1
--- TransactionMethod.java 4 Mar 2004 09:41:50 -0000 1.1
+++ TransactionMethod.java 2 Apr 2004 08:10:52 -0000 1.1.2.1
@@ -23,6 +23,9 @@
package org.apache.slide.webdav.method;
+import javax.transaction.Status;
+import javax.transaction.Transaction;
+
import org.apache.slide.common.NamespaceAccessToken;
import org.apache.slide.common.SlideException;
import org.apache.slide.common.Domain;
@@ -34,15 +37,12 @@
import org.apache.slide.webdav.event.Subscriber;
import org.apache.slide.webdav.util.NotificationConstants;
import org.apache.slide.webdav.util.TransactionConstants;
+import org.apache.slide.transaction.ExternalTransactionContext;
import org.apache.slide.util.logger.Logger;
import org.apache.util.WebdavStatus;
import org.jdom.output.XMLOutputter;
import org.jdom.output.Format;
-import java.net.URL;
-import java.net.MalformedURLException;
-
-
/**
* Subscribe Method.
*
@@ -56,6 +56,7 @@
// An XML outputter
private XMLOutputter xmlOut;
+
// ----------------------------------------------------------- Constructors
@@ -82,6 +83,21 @@
String txId = requestHeaders.getTxId();
String method = requestHeaders.getTxMethod();
Domain.log("Transaction method called with method="+method+", txId:
"+txId, LOG_CHANNEL, Logger.INFO);
+
+ if (method.equalsIgnoreCase("begin")) {
+ token.begin();
+ Transaction transaction = token.getTransactionManager().suspend();
+ ExternalTransactionContext.registerContext(txId, transaction);
+ } else if (method.equalsIgnoreCase("commit")) {
+ // note transaction has already been resume by AbstractWebdavMethod
+ token.commit();
+ ExternalTransactionContext.deregisterContext(txId);
+ } else if (method.equalsIgnoreCase("rollback")) {
+ // note transaction has already been resume by AbstractWebdavMethod
+ token.rollback();
+ ExternalTransactionContext.deregisterContext(txId);
+ }
+
resp.setHeader(H_TRANSACTION_ID, txId);
resp.setStatus(WebdavStatus.SC_OK);
} catch (Exception e) {
@@ -90,4 +106,9 @@
throw new WebdavException( statusCode );
}
}
+
+ protected boolean methodNeedsTransactionSupport() {
+ return false;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]