amit170394 / sardine

Automatically exported from code.google.com/p/sardine
0 stars 0 forks source link

Problems with the Tomcat WebDAV servlet #5

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
When I try to getResources() on a Tomcat WebDAV servlet, I have exceptions
like:

javax.xml.bind.UnmarshalException: unexpected element (uri:"",
local:"html"). Expected elements are
<{DAV:}activelock>,<{DAV:}allprop>,<{DAV:}collection>,<{DAV:}creationdate>,<{DAV
:}depth>,<{DAV:}displayname>,<{DAV:}dst>,<{DAV:}error>,<{DAV:}exclusive>,<{DAV:}
getcontentlanguage>,<{DAV:}getcontentlength>,<{DAV:}getcontenttype>,<{DAV:}getet
ag>,<{DAV:}getlastmodified>,<{DAV:}href>,<{DAV:}keepalive>,<{DAV:}link>,<{DAV:}l
ockdiscovery>,<{DAV:}lockentry>,<{DAV:}lockinfo>,<{DAV:}lockscope>,<{DAV:}lockto
ken>,<{DAV:}locktype>,<{DAV:}multistatus>,<{DAV:}omit>,<{DAV:}owner>,<{DAV:}prop
>,<{DAV:}propertybehavior>,<{DAV:}propertyupdate>,<{DAV:}propfind>,<{DAV:}propna
me>,<{DAV:}propstat>,<{DAV:}remove>,<{DAV:}resourcetype>,<{DAV:}response>,<{DAV:
}responsedescription>,<{DAV:}set>,<{DAV:}shared>,<{DAV:}source>,<{DAV:}src>,<{DA
V:}status>,<{DAV:}supportedlock>,<{DAV:}timeout>,<{DAV:}write>
    at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(Unmars
hallingContext.java:642)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:247)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:242)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loa
der.java:116)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.
childElement(UnmarshallingContext.java:1049)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(Unma
rshallingContext.java:478)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(Unmar
shallingContext.java:459)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.
java:148)
    at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Abstra
ctSAXParser.java:501)
    at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElemen
t(XMLNSDocumentScannerImpl.java:400)
    at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver
.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentC
ontentDriver.next(XMLDocumentFragmentScannerImpl.java:3095)
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next
(XMLDocumentScannerImpl.java:921)
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentS
cannerImpl.java:648)
    at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocum
entScannerImpl.java:140)
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocum
ent(XMLDocumentFragmentScannerImpl.java:510)
    at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configu
ration.java:807)
    at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configu
ration.java:737)
    at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
    at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXPa
rser.java:1205)
    at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXPar
serImpl.java:522)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unmarshalle
rImpl.java:211)
    at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unmarshaller
Impl.java:184)
    at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerIm
pl.java:137)
    at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerIm
pl.java:184)
    at com.googlecode.sardine.SardineImpl.getResources(SardineImpl.java:96)

Is this normal?

Original issue reported on code.google.com by goo...@alishomepage.com on 5 Jan 2010 at 9:25

GoogleCodeExporter commented 9 years ago
The server has actually returned:

<html><head><title>Apache Tomcat/6.0.20 - Error report</title><style><!--H1
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-s
ize:22px;}
H2
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-s
ize:16px;}
H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;fo
nt-size:14px;} BODY
{font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;
} P
{font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px
;}A
{color : black;}A.name {color : black;}HR {color : #525D76;}--></style> 
</head><bo
dy><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p>type Status
report</p><p>message <u></u></p><p>description <u>The server encountered
an internal error () that prevented it from fulfilling this request.</u></p><HR
size="1" noshade="noshade"><h3>Apache Tomcat/6.0.20</h3></body></html>

Original comment by goo...@alishomepage.com on 5 Jan 2010 at 10:08

GoogleCodeExporter commented 9 years ago
Therefore bug: why isn't the HTTP code 500 treated as an error?

Original comment by goo...@alishomepage.com on 5 Jan 2010 at 10:08

GoogleCodeExporter commented 9 years ago
Added patch

The PROPFIND actually requires a content. Added it statically.

Original comment by goo...@alishomepage.com on 5 Jan 2010 at 10:48

Attachments:

GoogleCodeExporter commented 9 years ago
This issue was closed by revision r17.

Original comment by latch...@gmail.com on 5 Jan 2010 at 7:35

GoogleCodeExporter commented 9 years ago
This issue was closed by revision r18.

Original comment by latch...@gmail.com on 5 Jan 2010 at 7:35

GoogleCodeExporter commented 9 years ago
Patch verified. Thank you.

PS: The following lines

    GET_RESOURCES = new StringEntity("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
        "<propfind xmlns=\"DAV:\">\n" +
        "   <allprop/>\n" +
        "</propfind>", "UTF-8");

Do not look very nice, but they work...

PPS: I know, they were in my initial patch

Original comment by goo...@alishomepage.com on 5 Jan 2010 at 8:48

GoogleCodeExporter commented 9 years ago
yea, i know. oh well. =)

Original comment by latch...@gmail.com on 5 Jan 2010 at 8:53

GoogleCodeExporter commented 9 years ago
Actually, I wanted to use InputStreamEntity and put the XML into the package, 
but the
InputStreamEntity constructor is not as joyful as the StringEntity. In 
particular, it
wants the length of the stream (why?).

But now that I looked into the source, I see
http://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.0.1/httpcore/src/
main/java/org/apache/http/entity/InputStreamEntity.java
says: if (this.length < 0) { // consume until EOF

Therefore we could get the InputStream and put a length of -1

Original comment by goo...@alishomepage.com on 5 Jan 2010 at 9:39

GoogleCodeExporter commented 9 years ago
Yea, don't bother. Too much effort for no real gain.

Original comment by latch...@gmail.com on 5 Jan 2010 at 10:19

GoogleCodeExporter commented 9 years ago

Original comment by latch...@gmail.com on 6 Jan 2010 at 12:15