fixed media type resolution algorithm
This commit is contained in:
@@ -195,16 +195,18 @@ public class ResourceHttpRequestHandler extends WebContentGenerator implements H
|
||||
* @return the corresponding media type, or <code>null</code> if none found
|
||||
*/
|
||||
protected MediaType getMediaType(Resource resource) {
|
||||
MediaType mediaType = null;
|
||||
String mimeType = getServletContext().getMimeType(resource.getFilename());
|
||||
if (StringUtils.hasText(mimeType)) {
|
||||
return new MediaType(mimeType);
|
||||
mediaType = MediaType.parseMediaType(mimeType);
|
||||
}
|
||||
else if (jafPresent) {
|
||||
return ActivationMediaTypeFactory.getMediaType(resource.getFilename());
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
if (jafPresent && (mediaType == null || MediaType.APPLICATION_OCTET_STREAM.equals(mediaType))) {
|
||||
MediaType jafMediaType = ActivationMediaTypeFactory.getMediaType(resource.getFilename());
|
||||
if (jafMediaType != null && !MediaType.APPLICATION_OCTET_STREAM.equals(jafMediaType)) {
|
||||
mediaType = jafMediaType;
|
||||
}
|
||||
}
|
||||
return mediaType;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -130,7 +130,7 @@ public class ContentNegotiatingViewResolver extends WebApplicationObjectSupport
|
||||
|
||||
private boolean ignoreAcceptHeader = false;
|
||||
|
||||
private boolean useJaf = true;
|
||||
private boolean useJaf = jafPresent;
|
||||
|
||||
private ConcurrentMap<String, MediaType> mediaTypes = new ConcurrentHashMap<String, MediaType>();
|
||||
|
||||
@@ -421,10 +421,13 @@ public class ContentNegotiatingViewResolver extends WebApplicationObjectSupport
|
||||
if (mediaType == null) {
|
||||
String mimeType = getServletContext().getMimeType(filename);
|
||||
if (StringUtils.hasText(mimeType)) {
|
||||
mediaType = new MediaType(mimeType);
|
||||
mediaType = MediaType.parseMediaType(mimeType);
|
||||
}
|
||||
else if (this.useJaf && jafPresent) {
|
||||
mediaType = ActivationMediaTypeFactory.getMediaType(filename);
|
||||
if (this.useJaf && (mediaType == null || MediaType.APPLICATION_OCTET_STREAM.equals(mediaType))) {
|
||||
MediaType jafMediaType = ActivationMediaTypeFactory.getMediaType(filename);
|
||||
if (jafMediaType != null && !MediaType.APPLICATION_OCTET_STREAM.equals(jafMediaType)) {
|
||||
mediaType = jafMediaType;
|
||||
}
|
||||
}
|
||||
if (mediaType != null) {
|
||||
this.mediaTypes.putIfAbsent(extension, mediaType);
|
||||
|
||||
Reference in New Issue
Block a user