You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by oz...@apache.org on 2004/05/28 13:34:19 UTC

cvs commit: jakarta-slide/src/webdav/server/org/apache/slide/webdav/method AbstractWebdavMethod.java

ozeigermann    2004/05/28 04:34:19

  Modified:    src/webdav/server/org/apache/slide/webdav/method Tag:
                        SLIDE_2_0_RELEASE_BRANCH AbstractWebdavMethod.java
  Log:
  Fixed possible error source when expired locks are cleared outside of transaction.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.20.2.5  +26 -23    jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AbstractWebdavMethod.java
  
  Index: AbstractWebdavMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AbstractWebdavMethod.java,v
  retrieving revision 1.20.2.4
  retrieving revision 1.20.2.5
  diff -u -r1.20.2.4 -r1.20.2.5
  --- AbstractWebdavMethod.java	25 Apr 2004 17:34:27 -0000	1.20.2.4
  +++ AbstractWebdavMethod.java	28 May 2004 11:34:19 -0000	1.20.2.5
  @@ -316,29 +316,32 @@
               }
               
               // clear expired lock-tokens
  -            try {
  -                UnlockListener listener =
  -                    new UnlockListenerImpl( slideToken, token, config, req, resp );
  -                lock.clearExpiredLocks( slideToken, requestUri, listener );
  -                
  -                // if the URI has no more locks associated to it and is
  -                // a lock-null resource, we must attempt to delete it
  -                
  -                Enumeration locks = lock.enumerateLocks(slideToken, requestUri);
  -                if (!locks.hasMoreElements()) {
  -                    
  -                    NodeRevisionDescriptors revisionDescriptors = content.retrieve(slideToken, requestUri);
  -                    NodeRevisionDescriptor revisionDescriptor = content.retrieve(slideToken, revisionDescriptors);
  -                    if (isLockNull(revisionDescriptor)) {
  -                        content.remove(slideToken, requestUri, revisionDescriptor);
  -                        content.remove(slideToken, revisionDescriptors);
  -                        ObjectNode node = structure.retrieve(slideToken, requestUri);
  -                        structure.remove(slideToken, node);
  +            if (transactionIsStarted) {
  +                // XXX we can only write if the transaction actually is started                            
  +                try {
  +                    UnlockListener listener = new UnlockListenerImpl(slideToken, token, config, req, resp);
  +                    lock.clearExpiredLocks(slideToken, requestUri, listener);
  +
  +                    // if the URI has no more locks associated to it and is
  +                    // a lock-null resource, we must attempt to delete it
  +
  +                    Enumeration locks = lock.enumerateLocks(slideToken, requestUri);
  +                    if (!locks.hasMoreElements()) {
  +
  +                        NodeRevisionDescriptors revisionDescriptors = content.retrieve(slideToken, requestUri);
  +                        NodeRevisionDescriptor revisionDescriptor = content.retrieve(slideToken, revisionDescriptors);
  +                        if (isLockNull(revisionDescriptor)) {
  +                            content.remove(slideToken, requestUri, revisionDescriptor);
  +                            content.remove(slideToken, revisionDescriptors);
  +                            ObjectNode node = structure.retrieve(slideToken, requestUri);
  +                            structure.remove(slideToken, node);
  +                        }
                       }
  +
  +                } catch (SlideException e) {
  +                    token.getLogger().log(e, LOG_CHANNEL, Logger.WARNING);
                   }
  -                
               }
  -            catch (SlideException e) {}
               
               executeRequest();
               if (methodNeedsTransactionSupport()) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org