Change MediaTypeFactory to return Optional

This commit changes the `MediaTypeFactory` to return
`Optional<MediaType>` (instead of a plain `MediaType`) for the
`getMediaType` methods.

Issue: SPR-14908
This commit is contained in:
Arjen Poutsma
2017-03-23 10:14:43 +01:00
parent 3d68c496f1
commit fd1db57e05
9 changed files with 38 additions and 36 deletions

View File

@@ -18,7 +18,9 @@ package org.springframework.http;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.springframework.core.io.Resource;
import static org.junit.Assert.*;
/**
* @author Arjen Poutsma
@@ -27,9 +29,17 @@ public class MediaTypeFactoryTests {
@Test
public void getMediaType() {
assertEquals(MediaType.APPLICATION_XML, MediaTypeFactory.getMediaType("file.xml"));
assertEquals(MediaType.parseMediaType("application/javascript"), MediaTypeFactory.getMediaType("file.js"));
assertEquals(MediaType.parseMediaType("text/css"), MediaTypeFactory.getMediaType("file.css"));
assertEquals(MediaType.APPLICATION_XML, MediaTypeFactory.getMediaType("file.xml").get());
assertEquals(MediaType.parseMediaType("application/javascript"), MediaTypeFactory.getMediaType("file.js").get());
assertEquals(MediaType.parseMediaType("text/css"), MediaTypeFactory.getMediaType("file.css").get());
assertFalse(MediaTypeFactory.getMediaType("file.foobar").isPresent());
}
@Test
public void nullParameter() {
assertFalse(MediaTypeFactory.getMediaType((String) null).isPresent());
assertFalse(MediaTypeFactory.getMediaType((Resource) null).isPresent());
assertTrue(MediaTypeFactory.getMediaTypes(null).isEmpty());
}
}

View File

@@ -262,14 +262,12 @@ public class MockServletContext implements ServletContext {
@Override
public String getMimeType(String filePath) {
String extension = StringUtils.getFilenameExtension(filePath);
MediaType result;
if (this.mimeTypes.containsKey(extension)) {
result = this.mimeTypes.get(extension);
return this.mimeTypes.get(extension).toString();
}
else {
result = MediaTypeFactory.getMediaType(filePath);
return MediaTypeFactory.getMediaType(filePath).orElse(MediaType.APPLICATION_OCTET_STREAM).toString();
}
return result != null ? result.toString() : null;
}
/**