Hi all,
I keep hitting the following error during my multipart post to swordv2,
provoked by line 311 in the SwordApp servlet:
http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#311
The filename is extracted by the getFilename method:
http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#378
Which states the following regarding the filename token:
// content dispositon should be of the form
386
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#386>
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#>
//
387
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#387>
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#>
// Content-Disposition: attachment; filename="[filename]"
388
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#388>
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#>
// but may have other features too, so we need to pick it apart
389
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#389>
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#>
String
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String>
token = "; filename=";
390
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#390>
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#>
int fnArg = contentDisposition.indexOf
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String.indexOf%28java.lang.String%29>(token);
391
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#391>
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#>
String
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String>
fromFilename = contentDisposition.substring
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String.substring%28int%29>(fnArg
+ token.length
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String.length%28%29>());
392
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#392>
<http://grepcode.com/file/repo1.maven.org/maven2/org.swordapp/server/2.0/org/swordapp/server/SwordAPIEndpoint.java#>
int nextSemiColon = fromFilename.indexOf
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String.indexOf%28java.lang.String%29>(";");
My request has the "; filename=" token:
Content-Disposition: form-data; name="atom"; filename="atom1368654490.xml"
Content-Type: application/atom+xml
and
Content-Disposition: form-data; name="attachment";
filename="swordTemp_1368654490.zip"
Content-Type: application/zip
Could this be a bug in the implementation of getFilename? Here's the
JavaDoc on indexOf:
Any suggestions? This has been burning up quite a bit of time.
Here's the full swordapp errror:
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Wed, 15 May 2013 21:46:07 GMT
Connection: close
9f2
<?xml version="1.0" encoding="ISO-8859-1"?>
<sword:error href="http://purl.org/net/sword/error/ErrorBadRequest"
xmlns:sword="http://purl.org/net/swor>d/terms/"><atom:title
xmlns:atom="http://www.w3.org/2005/Atom"/><atom:updated
xmlns:atom="http:/>/www.w3.org/2005/Atom">2013-05-15T21:46:07Z</atom:updated><atom:generator
uri="http://www.dspace>.org/ns/sword/2.0/" version="2.0"
xmlns:atom="http://www.w3.org/2005/Atom">[email protected]</atom:>generator><sword:treatment>Processing
failed</sword:treatment><atom:summary
xmlns:atom="ht>tp://www.w3.org/2005/Atom">Filename could not be
extracted from
Content-Disposition</atom:summary>&>lt;sword:verboseDescription>org.swordapp.server.SwordError:
Filename could not be extracted from Content->Disposition
.at
org.swordapp.server.SwordAPIEndpoint.addDepositPropertiesFromBinary(SwordAPIEndpoint.java:311)
.at org.swordapp.server.CollectionAPI.post(CollectionAPI.java:153)
.at
org.swordapp.server.servlets.CollectionServletDefault.doPost(CollectionServletDefault.java:48)
.at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
.at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
.at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
.at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
.at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
.at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
.at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
.at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
.at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
.at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
.at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
.at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
.at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
.at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
.at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
.at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
.at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
.at java.lang.Thread.run(Thread.java:722)
</sword:verboseDescription></sword:error>
best wishes,
Andrew
------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
DSpace-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspace-tech
List Etiquette: https://wiki.duraspace.org/display/DSPACE/Mailing+List+Etiquette