I just had a case where objects have been created with the mimetype of
datastreams containing several values, i.e. "image/vnd.djvu, image/x-djvu".
When these datastreams are being accessed using REST, fedora (or its library)
tries to create a decent header but fails as it cannot parse the multi-value
mimetype. The Client gets a 400 error, while the fedora log show the stack
trace below.
Are there ways to handle "multi-value" mimetype information, or do I have to
make sure that datastreams in fedora do only contain one single mimetype as it
does not seem standard to use commas to separate different mimetype values?
Thanks, Andreas
WARN 2012-06-26 16:09:29.853 [http-8080-3] (DatastreamResource) Bad request;
unable to fulfill REST API request
java.lang.IllegalArgumentException: Error parsing media type 'image/vnd.djvu,
image/x-djvu'
at
com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:92)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:50)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119)
[jsr311-api-1.0.jar:na]
at
com.sun.jersey.server.impl.ResponseBuilderImpl.type(ResponseBuilderImpl.java:178)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
org.fcrepo.server.rest.BaseRestResource.buildResponse(BaseRestResource.java:148)
[fcrepo-server-3.5.jar:na]
at
org.fcrepo.server.rest.DatastreamResource.getDatastream(DatastreamResource.java:248)
[fcrepo-server-3.5.jar:na]
at sun.reflect.GeneratedMethodAccessor167.invoke(Unknown Source) [na:na]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[na:1.6.0_33]
at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_33]
at
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:689)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:647)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:638)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:590)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
[servlet-api.jar:na]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
[catalina.jar:na]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[catalina.jar:na]
at
org.fcrepo.server.security.servletfilters.FilterRestApiFlash.doFilter(FilterRestApiFlash.java:79)
[fcrepo-server-3.5.jar:na]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[catalina.jar:na]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[catalina.jar:na]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
[spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at
org.fcrepo.server.security.jaas.AuthFilterJAAS.doFilter(AuthFilterJAAS.java:330)
[fcrepo-security-jaas-3.5.jar:na]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
[spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at
org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:109)
[spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
[spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
[spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
[spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
[spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[catalina.jar:na]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[catalina.jar:na]
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
[catalina.jar:na]
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
[catalina.jar:na]
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
[catalina.jar:na]
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
[catalina.jar:na]
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
[catalina.jar:na]
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
[catalina.jar:na]
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
[tomcat-coyote.jar:na]
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
[tomcat-coyote.jar:na]
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
[tomcat-coyote.jar:na]
at java.lang.Thread.run(Thread.java:680) [na:1.6.0_33]
Caused by: java.text.ParseException: Expected separator ';' instead of ','
at
com.sun.jersey.core.header.reader.HttpHeaderReader.nextSeparator(HttpHeaderReader.java:110)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.core.header.reader.HttpHeaderReader.readParameters(HttpHeaderReader.java:232)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
at
com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:88)
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
... 47 common frames omitted
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Fedora-commons-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users