fyi, (I thought I mentioned this earlier on list) I did update my fork of 
JavaServer2.0 to handle multipart-related:
        https://github.com/mediashelf/sword2-server

Since I refactored it to package up as a jar (rather than a war), it should be 
close to a drop-in replacement for anything using JavaServer2.0 (e.g. the 
DSpace impl).

On Oct 31, 2012, at 4:35 PM, LEWIS Stuart <stuart.le...@ed.ac.uk> wrote:

> Hi Ian,
>  
> Thanks for your email.  The first thing to note is that due to a lack of any 
> Java libraries that support Atom-Multipart deposit properly, DSpace doesn’t 
> currently support multipart deposits.  This is the same with other Java-based 
> implementations such as Fedora.
>  
> Therefore there are two options:
>  
> -          Use the ‘deposit()’ method to deposit a package created using the 
> METS / SWAP packager
>  
> (See: 
> https://github.com/swordapp/swordappv2-php-library/blob/master/test/test-packager-mets_swap.php
>  for an example of how to build a package)
>  
> -          First deposit the metadata as an atom entry (depositAtomEntry) 
> with in-progress set to true, followed by extra calls to add files 
> (addExtraFileToMediaResource) with the final call setting the in-progress to 
> false.
>  
> One other thing to check: Your email says:
>  
> I’ve also changed the code to call the deposit method
>  
> …
>  
> About to deposit multipart file (test-files/swordlogo.jpg) 
> tohttp://vmerdmsdspace01.ex.ac.uk/swordv2/collection/10871/6
> As: Guest406
> sac_curl=Resource id #22
> sac_resp= 2012-10-25T13:42:27zeda-sysad...@exeter.ac.ukProcessing 
> failedUnacceptable content type in deposit request: 
> application/x-www-form-urlencoded
>  
> This looks you may not have changed the method being used, as the debug text 
> still mentions multipart files, and the mime type sent suggests a multipart 
> file.
>  
> I hope this helps,
>  
>  
> Stuart Lewis
> Head of Digital Library Services
> Library & Collections, Information Services
> University of Edinburgh
> stuart.le...@ed.ac.uk
>  
>  
>  
> From: Wellaway, Ian [mailto:i.j.wella...@exeter.ac.uk] 
> Sent: 25 October 2012 13:55
> To: 'sword-app-tech@lists.sourceforge.net'
> Subject: [sword-app-tech] PHP swordv2 - 500 error / Unacceptable content type
>  
> Hi,
>  
> I’ve been attempting to test the swordv2 php library, with a hope to creating 
> a ‘record-edit’ feature in dspace so users can update their archived items (a 
> feature strangely lacking from dspace).
>  
> I’ve copied the libraries down from the swordapp website and have configured 
> the test-swordappclient.php page but get the following error from the 
> deposit-multipart method:
>  
>  
> About to deposit multipart file (test-files/atom_multipart_package) 
> tohttp://vmerdmsdspace01.ex.ac.uk/swordv2/collection/10871/6
> As: Guest406
> sac_curl=Resource id #22
> sac_resp=
> HTTP Status 500 -
> type Exception report
> message
> description The server encountered an internal error () that prevented it 
> from fulfilling this request.
> exception
> javax.servlet.ServletException: 
> org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
>         
> org.swordapp.server.SwordAPIEndpoint.getPartsFromRequest(SwordAPIEndpoint.java:458)
>         
> org.swordapp.server.SwordAPIEndpoint.addDepositPropertiesFromMultipart(SwordAPIEndpoint.java:208)
>         org.swordapp.server.CollectionAPI.post(CollectionAPI.java:145)
>         
> org.swordapp.server.servlets.CollectionServletDefault.doPost(CollectionServletDefault.java:48)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> root cause
> org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
>         
> org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:381)
>         
> org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
>         
> org.swordapp.server.SwordAPIEndpoint.getPartsFromRequest(SwordAPIEndpoint.java:452)
>         
> org.swordapp.server.SwordAPIEndpoint.addDepositPropertiesFromMultipart(SwordAPIEndpoint.java:208)
>         org.swordapp.server.CollectionAPI.post(CollectionAPI.java:145)
>         
> org.swordapp.server.servlets.CollectionServletDefault.doPost(CollectionServletDefault.java:48)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> root cause
> org.apache.commons.fileupload.MultipartStream$MalformedStreamException: 
> Stream ended unexpectedly
>         
> org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:983)
>         
> org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:887)
>         java.io.InputStream.read(InputStream.java:85)
>         org.apache.commons.fileupload.util.Streams.copy(Streams.java:94)
>         org.apache.commons.fileupload.util.Streams.copy(Streams.java:64)
>         
> org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.java:593)
>         
> org.apache.commons.fileupload.MultipartStream.discardBodyData(MultipartStream.java:619)
>         
> org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:1012)
>         
> org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:942)
>         
> org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
>         
> org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:349)
>         
> org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
>         
> org.swordapp.server.SwordAPIEndpoint.getPartsFromRequest(SwordAPIEndpoint.java:452)
>         
> org.swordapp.server.SwordAPIEndpoint.addDepositPropertiesFromMultipart(SwordAPIEndpoint.java:208)
>         org.swordapp.server.CollectionAPI.post(CollectionAPI.java:145)
>         
> org.swordapp.server.servlets.CollectionServletDefault.doPost(CollectionServletDefault.java:48)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> note The full stack trace of the root cause is available in the Apache 
> Tomcat/6.0.32 logs.
> Apache Tomcat/6.0.32
> 
> sac_status=500
> 
> Fatal error: Uncaught exception 'Exception' with message 'Error parsing 
> response entry (String could not be parsed as XML)' in 
> /mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php:583
>  Stack trace: #0 
> /mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php(134):
>  SWORDAPPClient->depositMultipartByMethod('http://vmerdmsd...', 'Guest406', 
> 'PNFQwM', NULL, 'test-files/atom...', 'POST', 'http://purl.org...') #1 
> /mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/test/test-swordappclient.php(73):
>  SWORDAPPClient->depositMultipart('http://vmerdmsd...', 'Guest406', 'PNFQwM', 
> NULL, 'test-files/atom...', 'http://purl.org...', false) #2 {main} thrown 
> in/mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php
>  on line 583
>  
>  
>  
> I’ve also changed the code to call the deposit method, as suggested in the 
> discussion 
> fromhttp://sourceforge.net/mailarchive/forum.php?thread_name=4FA170FE.3050608%40wijiti.com&forum_name=sword-app-tech
>  but then receive the following:
>  
>  
> About to deposit multipart file (test-files/swordlogo.jpg) 
> tohttp://vmerdmsdspace01.ex.ac.uk/swordv2/collection/10871/6
> As: Guest406
> sac_curl=Resource id #22
> sac_resp= 2012-10-25T13:42:27zeda-sysad...@exeter.ac.ukProcessing 
> failedUnacceptable content type in deposit request: 
> application/x-www-form-urlencodedorg.swordapp.server.SwordError: Unacceptable 
> content type in deposit request: application/x-www-form-urlencoded at 
> org.dspace.sword2.DSpaceSwordAPI.isAcceptable(DSpaceSwordAPI.java:228) at 
> org.dspace.sword2.CollectionDepositManagerDSpace.createNewFromBinary(CollectionDepositManagerDSpace.java:218)
>  at 
> org.dspace.sword2.CollectionDepositManagerDSpace.createNew(CollectionDepositManagerDSpace.java:112)
>  at org.swordapp.server.CollectionAPI.post(CollectionAPI.java:158) at 
> org.swordapp.server.servlets.CollectionServletDefault.doPost(CollectionServletDefault.java:48)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>  at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>  at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>  at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>  at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
> at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
> at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>  at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
> at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at 
> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) at 
> org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776) at 
> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705) 
> at 
> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
>  at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>  at java.lang.Thread.run(Thread.java:619) 
> Received HTTP status code: 415 (Unsupported media type)
> 
> About to retrieve deposit receipt from 
> As: Guest406
> 
> Fatal error: Uncaught exception 'Exception' with message 'Error parsing 
> response entry (String could not be parsed as XML)' in 
> /mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php:229
>  Stack trace: #0 
> /mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/test/test-swordappclient.php(324):
>  SWORDAPPClient->retrieveDepositReceipt(NULL, 'Guest406', 'PNFQwM', NULL, 
> 'http://purl.org...') #1 {main} thrown 
> in/mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php
>  on line 229
>  
>  
> In each case there is nothing in the tomcat or dspace logs.
>  
> Any ideas?
>  
> For help, I’ve printed some of the curl responses to the screen.
>  
> Thanks
>  
> Ian
>  
> ------------
> 
> Ian Wellaway
> 
> Senior System Support & Development Officer - Enterprise Applications 
> (Wednesdays only)
> &
> Technical Developer, Open Exeter - Infrastructure Systems (Monday-Tuesday, 
> Thursday-Friday)
>  
> Exeter IT
> Room 54
> Laver Building
> University of Exeter
> EX4 4QE
> UK
>  
> tel +44 1392 722852
>  
> The University of Edinburgh is a charitable body, registered in
> Scotland, with registration number SC005336.
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_sfd2d_oct_______________________________________________
> sword-app-tech mailing list
> sword-app-tech@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sword-app-tech


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
sword-app-tech mailing list
sword-app-tech@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sword-app-tech

Reply via email to