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]

Reply via email to