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