juergen 02/05/15 22:22:17
Modified: src/webdav/server/org/apache/slide/webdav/method
LockMethod.java PropPatchMethod.java
Log:
Use JDOM to create the response instead of the XMLPrinter.
Revision Changes Path
1.31 +30 -63
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java
Index: LockMethod.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- LockMethod.java 25 Apr 2002 21:27:30 -0000 1.30
+++ LockMethod.java 16 May 2002 05:22:17 -0000 1.31
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java,v
1.30 2002/04/25 21:27:30 jericho Exp $
- * $Revision: 1.30 $
- * $Date: 2002/04/25 21:27:30 $
+ * $Header:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java,v
1.31 2002/05/16 05:22:17 juergen Exp $
+ * $Revision: 1.31 $
+ * $Date: 2002/05/16 05:22:17 $
*
* ====================================================================
*
@@ -84,6 +84,9 @@
import org.apache.slide.security.AccessDeniedException;
import org.apache.slide.structure.*;
+import org.apache.slide.webdav.util.PropertyHelper;
+import org.apache.slide.webdav.util.XMLValue;
+
/**
* LOCK method.
*
@@ -175,6 +178,15 @@
*/
private String lockInfo_lockSubject;
+ /**
+ * The PropertyHelper used by this instance.
+ */
+ protected PropertyHelper propertyHelper = null;
+
+ /**
+ * The URL of the server, e.g. <code>http://www.aloha.com:8080</code>
+ */
+ protected String serverURL = null;
// ----------------------------------------------------------- Constructors
@@ -191,6 +203,7 @@
public LockMethod(NamespaceAccessToken token, HttpServletRequest req,
HttpServletResponse resp, WebdavServletConfig config) {
super(token, req, resp, config);
+ propertyHelper = PropertyHelper.getPropertyHelper(slideToken, token);
readRequestContent();
}
@@ -206,6 +219,8 @@
protected void parseRequest()
throws WebdavException {
+ serverURL = HTTP_PROTOCOL + req.getServerName()+ ":" + req.getServerPort();
+
// Loads the associated object from the store.
lockInfo_lockSubject = requestUri;
if (lockInfo_lockSubject == null) {
@@ -556,6 +571,7 @@
// error is on the resource which we attempted to lock
String errorMessage = generateErrorMessage(e);
// Write it on the servlet writer
+ resp.setContentType(TEXT_XML_UTF_8);
resp.setStatus(WebdavStatus.SC_MULTI_STATUS);
try {
resp.getWriter().write(errorMessage);
@@ -643,72 +659,23 @@
throws WebdavException {
// Generating XML response
-
- XMLPrinter generatedXML = new XMLPrinter();
-
- generatedXML.writeXMLHeader();
- generatedXML.writeElement("d", "DAV:", "prop", XMLPrinter.OPENING);
-
- generatedXML.writeElement("d", null, "lockdiscovery",
- XMLPrinter.OPENING);
-
- generatedXML.writeElement("d", null, "activelock", XMLPrinter.OPENING);
-
- generatedXML.writeElement("d", null, "locktype", XMLPrinter.OPENING);
- generatedXML.writeElement("d", null, "write", XMLPrinter.NO_CONTENT);
- generatedXML.writeElement("d", null, "locktype", XMLPrinter.CLOSING);
-
- generatedXML.writeElement("d", null, "lockscope", XMLPrinter.OPENING);
-
- if (token.isExclusive()) {
- generatedXML.writeElement("d", null, "exclusive",
- XMLPrinter.NO_CONTENT);
- } else {
- generatedXML.writeElement("d", null, "shared",
- XMLPrinter.NO_CONTENT);
+ org.jdom.Element prop = new org.jdom.Element(E_PROP, DAV_NAMESPACE);
+ org.jdom.Element lockdiscovery = new org.jdom.Element(E_LOCKDISCOVERY,
DAV_NAMESPACE);
+ prop.addContent(lockdiscovery);
+ XMLValue xmlValue = propertyHelper.computeLockDiscovery(token,
+ serverURL,
+ req.getContextPath());
+ Iterator iterator = xmlValue.iterator();
+ while (iterator.hasNext()) {
+ lockdiscovery.addContent((org.jdom.Element)iterator.next());
}
- generatedXML.writeElement("d", null, "lockscope", XMLPrinter.CLOSING);
-
- generatedXML.writeElement("d", null, "depth", XMLPrinter.OPENING);
- if (token.isInheritable()) {
- generatedXML.writeText("infinity");
- } else {
- generatedXML.writeText("0");
- }
- generatedXML.writeElement("d", null, "depth", XMLPrinter.CLOSING);
-
- generatedXML.writeElement("d", null, "owner", XMLPrinter.OPENING);
- generatedXML.writeText(getFullPath(token.getSubjectUri()));
- generatedXML.writeElement("d", null, "owner", XMLPrinter.CLOSING);
-
- generatedXML.writeElement("d", null, "timeout", XMLPrinter.OPENING);
- generatedXML.writeText("Second-"
- + (new Long((token.getExpirationDate().getTime()
- - (new Date()).getTime())/1000))
- .toString());
- generatedXML.writeElement("d", null, "timeout", XMLPrinter.CLOSING);
-
- generatedXML.writeElement("d", null, "locktoken", XMLPrinter.OPENING);
- generatedXML.writeElement("d", null, "href", XMLPrinter.OPENING);
- // Put here the token Id
- generatedXML.writeText("opaquelocktoken:" + token.getLockId());
-
- generatedXML.writeElement("d", null, "href", XMLPrinter.CLOSING);
- generatedXML.writeElement("d", null, "locktoken", XMLPrinter.CLOSING);
-
- generatedXML.writeElement("d", null, "activelock", XMLPrinter.CLOSING);
-
- generatedXML.writeElement("d", null, "lockdiscovery",
- XMLPrinter.CLOSING);
-
- generatedXML.writeElement("d", null, "prop", XMLPrinter.CLOSING);
-
try {
//System.out.println("Query result");
//System.out.println(generatedXML.toString());
+ resp.setContentType(TEXT_XML_UTF_8);
Writer writer = resp.getWriter();
- writer.write(generatedXML.toString());
+ new org.jdom.output.XMLOutputter().output(prop, writer);
writer.flush();
} catch (Exception e) {
e.printStackTrace();
1.41 +51 -45
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java
Index: PropPatchMethod.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- PropPatchMethod.java 14 May 2002 15:33:42 -0000 1.40
+++ PropPatchMethod.java 16 May 2002 05:22:17 -0000 1.41
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java,v
1.40 2002/05/14 15:33:42 pnever Exp $
- * $Revision: 1.40 $
- * $Date: 2002/05/14 15:33:42 $
+ * $Header:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java,v
1.41 2002/05/16 05:22:17 juergen Exp $
+ * $Revision: 1.41 $
+ * $Date: 2002/05/16 05:22:17 $
*
* ====================================================================
*
@@ -134,6 +134,11 @@
*/
private String resourcePath;
+ /**
+ * Constant for the <code>DAV:</code> namespace (with prefix <code>D</code>)
+ */
+ protected static final org.jdom.Namespace DAV_NAMESPACE =
org.jdom.Namespace.getNamespace(DEFAULT_PREFIX,
+
DEFAULT_NAMESPACE);
// ----------------------------------------------------------- Constructors
@@ -503,8 +508,8 @@
boolean result;
if (originalProperty == null) {
// those virtual live properties can not be modified
- result = (!property.name.equals("lockdiscovery")) &&
- (!property.name.equals("supportedlock"));
+ result = (!property.name.equals(P_LOCKDISCOVERY)) &&
+ (!property.name.equals(P_SUPPORTEDLOCK));
}
else {
result = !originalProperty.isProtected();
@@ -522,18 +527,12 @@
private void writeReport()
throws WebdavException {
- // Create multistatus object
- XMLPrinter generatedXML = new XMLPrinter();
-
- generatedXML.writeXMLHeader();
- generatedXML.writeElement("d", "DAV:", "multistatus",
- XMLPrinter.OPENING);
-
- generatedXML.writeElement("d", null, "response", XMLPrinter.OPENING);
- generatedXML.writeProperty("d", null, "href",
- getFullPath(requestUri));
-
-
+ org.jdom.Element multistatus = new org.jdom.Element(E_MULTISTATUS,
DAV_NAMESPACE);
+ org.jdom.Element response = new org.jdom.Element(E_RESPONSE, DAV_NAMESPACE);
+ multistatus.addContent(response);
+ org.jdom.Element href = new org.jdom.Element(E_HREF, DAV_NAMESPACE);
+ href.setText(getFullPath(requestUri));
+ response.addContent(href);
// Parse the two properties list, and printout their status
Enumeration propertyList = null;
@@ -542,50 +541,57 @@
while(propertyList.hasMoreElements()) {
Property property = (Property) propertyList.nextElement();
- generatedXML.writeElement("d", null, "propstat",
- XMLPrinter.OPENING);
- generatedXML.writeElement("d", null, "prop", XMLPrinter.OPENING);
- generatedXML.writeElement(property.namespaceAbbrev,
- property.namespace, property.name,
- XMLPrinter.NO_CONTENT);
- generatedXML.writeElement("d", null, "prop", XMLPrinter.CLOSING);
- generatedXML.writeProperty
- ("d", null, "status", "HTTP/1.1 " + property.status + " "
- + WebdavStatus.getStatusText(property.status));
- generatedXML.writeElement("d", null, "propstat",
- XMLPrinter.CLOSING);
+ org.jdom.Element propstat = createPropstatElement(property);
+ response.addContent(propstat);
}
propertyList = propertiesToRemove.elements();
while(propertyList.hasMoreElements()) {
Property property = (Property) propertyList.nextElement();
- generatedXML.writeElement("d", null, "propstat",
- XMLPrinter.OPENING);
- generatedXML.writeElement("d", null, "prop", XMLPrinter.OPENING);
- generatedXML.writeElement(property.namespaceAbbrev,
- property.namespace, property.name,
- XMLPrinter.NO_CONTENT);
- generatedXML.writeElement("d", null, "prop", XMLPrinter.CLOSING);
- generatedXML.writeProperty
- ("d", null, "status", "HTTP/1.1 " + property.status + " "
- + WebdavStatus.getStatusText(property.status));
- generatedXML.writeElement("d", null, "propstat",
- XMLPrinter.CLOSING);
+ org.jdom.Element propstat = createPropstatElement(property);
+ response.addContent(propstat);
}
- generatedXML.writeElement("d", null, "response", XMLPrinter.CLOSING);
- generatedXML.writeElement("d", "multistatus", XMLPrinter.CLOSING);
-
try {
+ resp.setContentType(TEXT_XML_UTF_8);
Writer writer = resp.getWriter();
- writer.write(generatedXML.toString());
+ new org.jdom.output.XMLOutputter().output(multistatus, writer);
writer.flush();
} catch (Exception e) {
e.printStackTrace();
throw new WebdavException(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
}
+ }
+
+ /**
+ * Creates a <code><propstat></code> element for the given
+ * <code>property</code>.
+ *
+ * @param property the Property for which to create a
+ * <code><propstat></code> element.
+ *
+ * @return the created <code><propstat></code> element.
+ */
+ private org.jdom.Element createPropstatElement(Property property) {
+
+ org.jdom.Element propstat = new org.jdom.Element(E_PROPSTAT, DAV_NAMESPACE);
+ org.jdom.Element prop = new org.jdom.Element(E_PROP, DAV_NAMESPACE);
+ propstat.addContent(prop);
+
+ org.jdom.Namespace namespace =
org.jdom.Namespace.getNamespace(property.namespace);
+ if ( (property.namespace != null) &&
property.namespace.equals(DAV_NAMESPACE.getURI()) ) {
+ namespace = DAV_NAMESPACE;
+ }
+ org.jdom.Element propertyElement = new org.jdom.Element(property.name,
namespace);
+ prop.addContent(propertyElement);
+
+ org.jdom.Element status = new org.jdom.Element(E_STATUS, DAV_NAMESPACE);
+ status.setText("HTTP/1.1 " + property.status + " "
+ + WebdavStatus.getStatusText(property.status));
+ propstat.addContent(status);
+ return propstat;
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>