You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2010/07/16 13:59:58 UTC
svn commit: r964780 - in /tomcat/trunk:
java/org/apache/catalina/servlets/WebdavServlet.java
webapps/docs/changelog.xml
Author: markt
Date: Fri Jul 16 11:59:57 2010
New Revision: 964780
URL: http://svn.apache.org/viewvc?rev=964780&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49428
Add a work-around for the known namespace issues for some Microsoft WebDAV clients. Patch provided by Panagiotis Astithas.
Modified:
tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java?rev=964780&r1=964779&r2=964780&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java Fri Jul 16 11:59:57 2010
@@ -512,7 +512,7 @@ public class WebdavServlet
if (type == FIND_BY_PROPERTY) {
properties = new Vector<String>();
- // propNode must be non-null if type == FIND_BY_PROPERTY
+ // propNode must be non-null if type == FIND_BY_PROPERTY
@SuppressWarnings("null")
NodeList childList = propNode.getChildNodes();
@@ -563,13 +563,13 @@ public class WebdavServlet
new XMLWriter(resp.getWriter());
generatedXML.writeXMLHeader();
generatedXML.writeElement
- (null, "multistatus"
+ (null, "D:multistatus"
+ generateNamespaceDeclarations(),
XMLWriter.OPENING);
parseLockNullProperties
(req, generatedXML, lockNullPath, type,
properties);
- generatedXML.writeElement(null, "multistatus",
+ generatedXML.writeElement(null, "D:multistatus",
XMLWriter.CLOSING);
generatedXML.sendData();
return;
@@ -592,7 +592,7 @@ public class WebdavServlet
XMLWriter generatedXML = new XMLWriter(resp.getWriter());
generatedXML.writeXMLHeader();
- generatedXML.writeElement(null, "multistatus"
+ generatedXML.writeElement(null, "D:multistatus"
+ generateNamespaceDeclarations(),
XMLWriter.OPENING);
@@ -672,7 +672,7 @@ public class WebdavServlet
}
}
- generatedXML.writeElement(null, "multistatus",
+ generatedXML.writeElement(null, "D:multistatus",
XMLWriter.CLOSING);
generatedXML.sendData();
@@ -1157,7 +1157,7 @@ public class WebdavServlet
generatedXML.writeXMLHeader();
generatedXML.writeElement
- (null, "multistatus" + generateNamespaceDeclarations(),
+ (null, "D:multistatus" + generateNamespaceDeclarations(),
XMLWriter.OPENING);
while (lockPathsList.hasMoreElements()) {
@@ -1328,19 +1328,19 @@ public class WebdavServlet
// the lock information
XMLWriter generatedXML = new XMLWriter();
generatedXML.writeXMLHeader();
- generatedXML.writeElement(null, "prop"
+ generatedXML.writeElement(null, "D:prop"
+ generateNamespaceDeclarations(),
XMLWriter.OPENING);
- generatedXML.writeElement(null, "lockdiscovery",
+ generatedXML.writeElement(null, "D:lockdiscovery",
XMLWriter.OPENING);
lock.toXML(generatedXML);
- generatedXML.writeElement(null, "lockdiscovery",
+ generatedXML.writeElement(null, "D:lockdiscovery",
XMLWriter.CLOSING);
- generatedXML.writeElement(null, "prop", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:prop", XMLWriter.CLOSING);
resp.setStatus(WebdavStatus.SC_OK);
resp.setContentType("text/xml; charset=UTF-8");
@@ -1432,7 +1432,7 @@ public class WebdavServlet
* Generate the namespace declarations.
*/
private String generateNamespaceDeclarations() {
- return " xmlns=\"" + DEFAULT_NAMESPACE + "\"";
+ return " xmlns:D=\"" + DEFAULT_NAMESPACE + "\"";
}
@@ -2046,13 +2046,13 @@ public class WebdavServlet
return;
}
- generatedXML.writeElement(null, "response", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:response", XMLWriter.OPENING);
String status = new String("HTTP/1.1 " + WebdavStatus.SC_OK + " "
+ WebdavStatus.getStatusText
(WebdavStatus.SC_OK));
// Generating href element
- generatedXML.writeElement(null, "href", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:href", XMLWriter.OPENING);
String href = req.getContextPath() + req.getServletPath();
if ((href.endsWith("/")) && (path.startsWith("/")))
@@ -2064,7 +2064,7 @@ public class WebdavServlet
generatedXML.writeText(rewriteUrl(href));
- generatedXML.writeElement(null, "href", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:href", XMLWriter.CLOSING);
String resourceName = path;
int lastSlash = path.lastIndexOf('/');
@@ -2075,98 +2075,98 @@ public class WebdavServlet
case FIND_ALL_PROP :
- generatedXML.writeElement(null, "propstat", XMLWriter.OPENING);
- generatedXML.writeElement(null, "prop", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:propstat", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:prop", XMLWriter.OPENING);
generatedXML.writeProperty
- (null, "creationdate",
+ (null, "D:creationdate",
getISOCreationDate(cacheEntry.attributes.getCreation()));
- generatedXML.writeElement(null, "displayname", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:displayname", XMLWriter.OPENING);
generatedXML.writeData(resourceName);
- generatedXML.writeElement(null, "displayname", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:displayname", XMLWriter.CLOSING);
if (cacheEntry.resource != null) {
generatedXML.writeProperty
- (null, "getlastmodified", FastHttpDateFormat.formatDate
+ (null, "D:getlastmodified", FastHttpDateFormat.formatDate
(cacheEntry.attributes.getLastModified(), null));
generatedXML.writeProperty
- (null, "getcontentlength",
+ (null, "D:getcontentlength",
String.valueOf(cacheEntry.attributes.getContentLength()));
String contentType = getServletContext().getMimeType
(cacheEntry.name);
if (contentType != null) {
- generatedXML.writeProperty(null, "getcontenttype",
+ generatedXML.writeProperty(null, "D:getcontenttype",
contentType);
}
- generatedXML.writeProperty(null, "getetag",
+ generatedXML.writeProperty(null, "D:getetag",
cacheEntry.attributes.getETag());
- generatedXML.writeElement(null, "resourcetype",
+ generatedXML.writeElement(null, "D:resourcetype",
XMLWriter.NO_CONTENT);
} else {
- generatedXML.writeElement(null, "resourcetype",
+ generatedXML.writeElement(null, "D:resourcetype",
XMLWriter.OPENING);
- generatedXML.writeElement(null, "collection",
+ generatedXML.writeElement(null, "D:collection",
XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "resourcetype",
+ generatedXML.writeElement(null, "D:resourcetype",
XMLWriter.CLOSING);
}
- generatedXML.writeProperty(null, "source", "");
+ generatedXML.writeProperty(null, "D:source", "");
- String supportedLocks = "<lockentry>"
- + "<lockscope><exclusive/></lockscope>"
- + "<locktype><write/></locktype>"
- + "</lockentry>" + "<lockentry>"
- + "<lockscope><shared/></lockscope>"
- + "<locktype><write/></locktype>"
- + "</lockentry>";
- generatedXML.writeElement(null, "supportedlock",
+ String supportedLocks = "<D:lockentry>"
+ + "<D:lockscope><D:exclusive/></D:lockscope>"
+ + "<D:locktype><D:write/></D:locktype>"
+ + "</D:lockentry>" + "<D:lockentry>"
+ + "<D:lockscope><D:shared/></D:lockscope>"
+ + "<D:locktype><D:write/></D:locktype>"
+ + "</D:lockentry>";
+ generatedXML.writeElement(null, "D:supportedlock",
XMLWriter.OPENING);
generatedXML.writeText(supportedLocks);
- generatedXML.writeElement(null, "supportedlock",
+ generatedXML.writeElement(null, "D:supportedlock",
XMLWriter.CLOSING);
generateLockDiscovery(path, generatedXML);
- generatedXML.writeElement(null, "prop", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "status", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:prop", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:status", XMLWriter.OPENING);
generatedXML.writeText(status);
- generatedXML.writeElement(null, "status", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "propstat", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:status", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:propstat", XMLWriter.CLOSING);
break;
case FIND_PROPERTY_NAMES :
- generatedXML.writeElement(null, "propstat", XMLWriter.OPENING);
- generatedXML.writeElement(null, "prop", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:propstat", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:prop", XMLWriter.OPENING);
- generatedXML.writeElement(null, "creationdate",
+ generatedXML.writeElement(null, "D:creationdate",
XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "displayname",
+ generatedXML.writeElement(null, "D:displayname",
XMLWriter.NO_CONTENT);
if (cacheEntry.resource != null) {
- generatedXML.writeElement(null, "getcontentlanguage",
+ generatedXML.writeElement(null, "D:getcontentlanguage",
XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "getcontentlength",
+ generatedXML.writeElement(null, "D:getcontentlength",
XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "getcontenttype",
+ generatedXML.writeElement(null, "D:getcontenttype",
XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "getetag",
+ generatedXML.writeElement(null, "D:getetag",
XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "getlastmodified",
+ generatedXML.writeElement(null, "D:getlastmodified",
XMLWriter.NO_CONTENT);
}
- generatedXML.writeElement(null, "resourcetype",
+ generatedXML.writeElement(null, "D:resourcetype",
XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "source", XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "lockdiscovery",
+ generatedXML.writeElement(null, "D:source", XMLWriter.NO_CONTENT);
+ generatedXML.writeElement(null, "D:lockdiscovery",
XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "prop", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "status", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:prop", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:status", XMLWriter.OPENING);
generatedXML.writeText(status);
- generatedXML.writeElement(null, "status", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "propstat", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:status", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:propstat", XMLWriter.CLOSING);
break;
@@ -2176,8 +2176,8 @@ public class WebdavServlet
// Parse the list of properties
- generatedXML.writeElement(null, "propstat", XMLWriter.OPENING);
- generatedXML.writeElement(null, "prop", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:propstat", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:prop", XMLWriter.OPENING);
Enumeration<String> properties = propertiesVector.elements();
@@ -2187,19 +2187,19 @@ public class WebdavServlet
if (property.equals("creationdate")) {
generatedXML.writeProperty
- (null, "creationdate",
+ (null, "D:creationdate",
getISOCreationDate(cacheEntry.attributes.getCreation()));
} else if (property.equals("displayname")) {
generatedXML.writeElement
- (null, "displayname", XMLWriter.OPENING);
+ (null, "D:displayname", XMLWriter.OPENING);
generatedXML.writeData(resourceName);
generatedXML.writeElement
- (null, "displayname", XMLWriter.CLOSING);
+ (null, "D:displayname", XMLWriter.CLOSING);
} else if (property.equals("getcontentlanguage")) {
if (cacheEntry.context != null) {
propertiesNotFound.addElement(property);
} else {
- generatedXML.writeElement(null, "getcontentlanguage",
+ generatedXML.writeElement(null, "D:getcontentlanguage",
XMLWriter.NO_CONTENT);
}
} else if (property.equals("getcontentlength")) {
@@ -2207,7 +2207,7 @@ public class WebdavServlet
propertiesNotFound.addElement(property);
} else {
generatedXML.writeProperty
- (null, "getcontentlength",
+ (null, "D:getcontentlength",
(String.valueOf(cacheEntry.attributes.getContentLength())));
}
} else if (property.equals("getcontenttype")) {
@@ -2215,7 +2215,7 @@ public class WebdavServlet
propertiesNotFound.addElement(property);
} else {
generatedXML.writeProperty
- (null, "getcontenttype",
+ (null, "D:getcontenttype",
getServletContext().getMimeType
(cacheEntry.name));
}
@@ -2224,42 +2224,42 @@ public class WebdavServlet
propertiesNotFound.addElement(property);
} else {
generatedXML.writeProperty
- (null, "getetag", cacheEntry.attributes.getETag());
+ (null, "D:getetag", cacheEntry.attributes.getETag());
}
} else if (property.equals("getlastmodified")) {
if (cacheEntry.context != null) {
propertiesNotFound.addElement(property);
} else {
generatedXML.writeProperty
- (null, "getlastmodified", FastHttpDateFormat.formatDate
+ (null, "D:getlastmodified", FastHttpDateFormat.formatDate
(cacheEntry.attributes.getLastModified(), null));
}
} else if (property.equals("resourcetype")) {
if (cacheEntry.context != null) {
- generatedXML.writeElement(null, "resourcetype",
+ generatedXML.writeElement(null, "D:resourcetype",
XMLWriter.OPENING);
- generatedXML.writeElement(null, "collection",
+ generatedXML.writeElement(null, "D:collection",
XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "resourcetype",
+ generatedXML.writeElement(null, "D:resourcetype",
XMLWriter.CLOSING);
} else {
- generatedXML.writeElement(null, "resourcetype",
+ generatedXML.writeElement(null, "D:resourcetype",
XMLWriter.NO_CONTENT);
}
} else if (property.equals("source")) {
- generatedXML.writeProperty(null, "source", "");
+ generatedXML.writeProperty(null, "D:source", "");
} else if (property.equals("supportedlock")) {
- supportedLocks = "<lockentry>"
- + "<lockscope><exclusive/></lockscope>"
- + "<locktype><write/></locktype>"
- + "</lockentry>" + "<lockentry>"
- + "<lockscope><shared/></lockscope>"
- + "<locktype><write/></locktype>"
- + "</lockentry>";
- generatedXML.writeElement(null, "supportedlock",
+ supportedLocks = "<D:lockentry>"
+ + "<D:lockscope><D:exclusive/></D:lockscope>"
+ + "<D:locktype><D:write/></D:locktype>"
+ + "</D:lockentry>" + "<D:lockentry>"
+ + "<D:lockscope><D:shared/></D:lockscope>"
+ + "<D:locktype><D:write/></D:locktype>"
+ + "</D:lockentry>";
+ generatedXML.writeElement(null, "D:supportedlock",
XMLWriter.OPENING);
generatedXML.writeText(supportedLocks);
- generatedXML.writeElement(null, "supportedlock",
+ generatedXML.writeElement(null, "D:supportedlock",
XMLWriter.CLOSING);
} else if (property.equals("lockdiscovery")) {
if (!generateLockDiscovery(path, generatedXML))
@@ -2270,11 +2270,11 @@ public class WebdavServlet
}
- generatedXML.writeElement(null, "prop", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "status", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:prop", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:status", XMLWriter.OPENING);
generatedXML.writeText(status);
- generatedXML.writeElement(null, "status", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "propstat", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:status", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:propstat", XMLWriter.CLOSING);
Enumeration<String> propertiesNotFoundList =
propertiesNotFound.elements();
@@ -2285,8 +2285,8 @@ public class WebdavServlet
+ " " + WebdavStatus.getStatusText
(WebdavStatus.SC_NOT_FOUND));
- generatedXML.writeElement(null, "propstat", XMLWriter.OPENING);
- generatedXML.writeElement(null, "prop", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:propstat", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:prop", XMLWriter.OPENING);
while (propertiesNotFoundList.hasMoreElements()) {
generatedXML.writeElement
@@ -2294,11 +2294,11 @@ public class WebdavServlet
XMLWriter.NO_CONTENT);
}
- generatedXML.writeElement(null, "prop", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "status", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:prop", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:status", XMLWriter.OPENING);
generatedXML.writeText(status);
- generatedXML.writeElement(null, "status", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "propstat", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:status", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:propstat", XMLWriter.CLOSING);
}
@@ -2306,7 +2306,7 @@ public class WebdavServlet
}
- generatedXML.writeElement(null, "response", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:response", XMLWriter.CLOSING);
}
@@ -2390,7 +2390,7 @@ public class WebdavServlet
generatedXML.writeElement(null, "resourcetype",
XMLWriter.CLOSING);
- generatedXML.writeProperty(null, "source", "");
+ generatedXML.writeProperty(null, "D:source", "");
String supportedLocks = "<lockentry>"
+ "<lockscope><exclusive/></lockscope>"
@@ -2578,7 +2578,7 @@ public class WebdavServlet
if (resourceLock != null) {
wroteStart = true;
- generatedXML.writeElement(null, "lockdiscovery",
+ generatedXML.writeElement(null, "D:lockdiscovery",
XMLWriter.OPENING);
resourceLock.toXML(generatedXML);
}
@@ -2588,7 +2588,7 @@ public class WebdavServlet
if (path.startsWith(currentLock.path)) {
if (!wroteStart) {
wroteStart = true;
- generatedXML.writeElement(null, "lockdiscovery",
+ generatedXML.writeElement(null, "D:lockdiscovery",
XMLWriter.OPENING);
}
currentLock.toXML(generatedXML);
@@ -2596,7 +2596,7 @@ public class WebdavServlet
}
if (wroteStart) {
- generatedXML.writeElement(null, "lockdiscovery",
+ generatedXML.writeElement(null, "D:lockdiscovery",
XMLWriter.CLOSING);
} else {
return false;
@@ -2752,44 +2752,44 @@ public class WebdavServlet
*/
public void toXML(XMLWriter generatedXML) {
- generatedXML.writeElement(null, "activelock", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:activelock", XMLWriter.OPENING);
- generatedXML.writeElement(null, "locktype", XMLWriter.OPENING);
- generatedXML.writeElement(null, type, XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "locktype", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:locktype", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:" + type, XMLWriter.NO_CONTENT);
+ generatedXML.writeElement(null, "D:locktype", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "lockscope", XMLWriter.OPENING);
- generatedXML.writeElement(null, scope, XMLWriter.NO_CONTENT);
- generatedXML.writeElement(null, "lockscope", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:lockscope", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:" + scope, XMLWriter.NO_CONTENT);
+ generatedXML.writeElement(null, "D:lockscope", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "depth", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:depth", XMLWriter.OPENING);
if (depth == maxDepth) {
generatedXML.writeText("Infinity");
} else {
generatedXML.writeText("0");
}
- generatedXML.writeElement(null, "depth", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:depth", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "owner", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:owner", XMLWriter.OPENING);
generatedXML.writeText(owner);
- generatedXML.writeElement(null, "owner", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:owner", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "timeout", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:timeout", XMLWriter.OPENING);
long timeout = (expiresAt - System.currentTimeMillis()) / 1000;
generatedXML.writeText("Second-" + timeout);
- generatedXML.writeElement(null, "timeout", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:timeout", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "locktoken", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:locktoken", XMLWriter.OPENING);
Enumeration<String> tokensList = tokens.elements();
while (tokensList.hasMoreElements()) {
- generatedXML.writeElement(null, "href", XMLWriter.OPENING);
+ generatedXML.writeElement(null, "D:href", XMLWriter.OPENING);
generatedXML.writeText("opaquelocktoken:"
+ tokensList.nextElement());
- generatedXML.writeElement(null, "href", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:href", XMLWriter.CLOSING);
}
- generatedXML.writeElement(null, "locktoken", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:locktoken", XMLWriter.CLOSING);
- generatedXML.writeElement(null, "activelock", XMLWriter.CLOSING);
+ generatedXML.writeElement(null, "D:activelock", XMLWriter.CLOSING);
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=964780&r1=964779&r2=964780&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Fri Jul 16 11:59:57 2010
@@ -93,6 +93,11 @@
request processing threads and threads started by the application.
(markt)
</fix>
+ <fix>
+ <bug>49428</bug>: Add a work-around for the known namespace issues for
+ some Microsoft WebDAV clients. Patch provided by Panagiotis Astithas.
+ (markt)
+ </fix>
<add>
Add support for <code>*.jar</code> pattern in VirtualWebappLoader.
(kkolinko)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r964780 - in /tomcat/trunk: java/org/apache/catalina/servlets/WebdavServlet.java
webapps/docs/changelog.xml
Posted by Konstantin Kolinko <kn...@gmail.com>.
2010/7/16 <ma...@apache.org>:
> Author: markt
> Date: Fri Jul 16 11:59:57 2010
> New Revision: 964780
>
> URL: http://svn.apache.org/viewvc?rev=964780&view=rev
> Log:
> Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49428
> Add a work-around for the known namespace issues for some Microsoft WebDAV clients. Patch provided by Panagiotis Astithas.
>
> Modified:
> tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java
> tomcat/trunk/webapps/docs/changelog.xml
>
1) Looking at lines 1159-1166 of WebdavServlet of TC7 @1004014:
generatedXML.writeElement
(null, "D:multistatus" +
generateNamespaceDeclarations(),
XMLWriter.OPENING);
while (lockPathsList.hasMoreElements()) {
generatedXML.writeElement(null, "response",
XMLWriter.OPENING);
generatedXML.writeElement(null, "href",
XMLWriter.OPENING);
Those "response", "href" have no D: prefix
2) Looking at o.a.catalina.util.XMLWriter.writeElement() methods there is
public void writeElement(String namespace, String namespaceInfo,
String name, int type)
which takes care both of the namespace prefix and of namespace URL.
I think that method must be used, instead of using '+
generateNamespaceDeclarations()' which is a trick.
Thus I expect the above fragment to be
generatedXML.writeElement
("D", DEFAULT_NAMESPACE, "multistatus",
XMLWriter.OPENING);
while (lockPathsList.hasMoreElements()) {
generatedXML.writeElement("D", null, "response",
XMLWriter.OPENING);
generatedXML.writeElement("D", null, "href",
XMLWriter.OPENING);
and so on.
Best regards,
Konstantin Kolinko
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org