juergen 02/03/15 04:48:22
Modified: src/webdav/server/org/apache/slide/webdav/method
PutMethod.java
Log:
Send appropriate error response and abort transaction if
PreconditionViolationException has been thrown by VersioningHelper.
(ralf)
Revision Changes Path
1.30 +35 -7
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PutMethod.java
Index: PutMethod.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PutMethod.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- PutMethod.java 15 Mar 2002 10:09:10 -0000 1.29
+++ PutMethod.java 15 Mar 2002 12:48:22 -0000 1.30
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PutMethod.java,v
1.29 2002/03/15 10:09:10 juergen Exp $
- * $Revision: 1.29 $
- * $Date: 2002/03/15 10:09:10 $
+ * $Header:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PutMethod.java,v
1.30 2002/03/15 12:48:22 juergen Exp $
+ * $Revision: 1.30 $
+ * $Date: 2002/03/15 12:48:22 $
*
* ====================================================================
*
@@ -72,8 +72,11 @@
import javax.servlet.http.*;
import javax.xml.parsers.ParserConfigurationException ;
import org.xml.sax.SAXException;
+import org.jdom.Element;
import org.jdom.Document;
-import org.jdom.input.DOMBuilder;
+import org.jdom.Namespace;
+import org.jdom.JDOMException;
+import org.jdom.output.XMLOutputter;
import org.apache.util.WebdavStatus;
import org.apache.slide.common.*;
import org.apache.slide.structure.*;
@@ -85,6 +88,8 @@
import org.apache.slide.webdav.util.WebdavUtils;
import org.apache.slide.webdav.util.DeltavConstants;
import org.apache.slide.webdav.util.VersioningHelper;
+import org.apache.slide.webdav.util.PreconditionViolationException;
+import org.apache.slide.webdav.util.ViolatedPrecondition;
import org.apache.slide.util.Configuration;
/**
@@ -158,7 +163,7 @@
* @exception WebdavException Bad request
*/
protected void executeRequest()
- throws WebdavException {
+ throws WebdavException, IOException {
// Prevent dirty reads
slideToken.setForceStoreEnlistment(true);
@@ -389,14 +394,37 @@
resp.setStatus(WebdavStatus.SC_CREATED);
}
-
- } catch (Exception e) {
+ }
+ catch (PreconditionViolationException e) {
+ sendPreconditionViolation(e.getViolatedPrecondition());
+ throw e;
+ }
+ catch (Exception e) {
+ e.printStackTrace();
resp.setStatus(getErrorCode(e)); // special handling needed
throw new WebdavException(WebdavStatus.SC_ACCEPTED, false); // abort
the TA
}
+ }
+
+ /**
+ * Sends a precondition vilolation response.
+ *
+ * @param violatedPrecondition the precondition that has been violated.
+ */
+ protected void sendPreconditionViolation(ViolatedPrecondition
violatedPrecondition) throws IOException {
+
+ if (violatedPrecondition != null) {
+ resp.setStatus(violatedPrecondition.getStatusCode());
+ Element errorElement = new Element(E_ERROR,
Namespace.getNamespace(DEFAULT_NAMESPACE));
+ Element preconditionElement = new
Element(violatedPrecondition.getPrecondition(),
Namespace.getNamespace(DEFAULT_NAMESPACE));
+ errorElement.addContent(preconditionElement);
+ new XMLOutputter().output(errorElement, resp.getWriter());
}
+ }
+
+
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>