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

Reply via email to