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

Reply via email to