Skip to content

Commit b246443

Browse files
committed
Mime type: advertise preferred content disposition
1 parent 7382629 commit b246443

File tree

7 files changed

+54
-1
lines changed

7 files changed

+54
-1
lines changed

geowebcache/core/src/main/java/org/geowebcache/mime/ApplicationMime.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,9 @@ public boolean isVector() {
9393
protected boolean isBinary() {
9494
return BINARY_FORMATS.contains(this.getMimeType());
9595
}
96+
97+
@Override
98+
public boolean isInlinePreferred() {
99+
return getMimeType().contains("json");
100+
}
96101
}

geowebcache/core/src/main/java/org/geowebcache/mime/ImageMime.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,13 @@ public RenderedImage preprocess(RenderedImage canvas) {
113113
public static final ImageMime png_24 =
114114
new ImageMime("image/png; mode=24bit", "png_24", "png", "image/png;%20mode=24bit", true, true, true);
115115

116-
public static final ImageMime dds = new ImageMime("image/dds", "dds", "dds", "image/dds", false, false, false);
116+
public static final ImageMime dds = new ImageMime("image/dds", "dds", "dds", "image/dds", false, false, false) {
117+
118+
@Override
119+
public boolean isInlinePreferred() {
120+
return false;
121+
}
122+
};
117123

118124
public static final ImageMime jpegPng =
119125
new JpegPngMime("image/vnd.jpeg-png", "jpeg-png", "jpeg-png", "image/vnd.jpeg-png", jpeg, png);

geowebcache/core/src/main/java/org/geowebcache/mime/MimeType.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,4 +196,15 @@ public boolean isCompatible(String otherMimeType) {
196196
public String toString() {
197197
return mimeType;
198198
}
199+
200+
/**
201+
* Returns true if the format is preferred for inline display in a browser. By default, it will return true if the
202+
* mime type starts with "text/*" or "image/*".
203+
*
204+
* @return
205+
*/
206+
public boolean isInlinePreferred() {
207+
String mime = getMimeType();
208+
return mime.startsWith("text/") || mime.startsWith("image/");
209+
}
199210
}

geowebcache/core/src/main/java/org/geowebcache/mime/XMLMime.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,9 @@ protected static XMLMime checkForExtension(String fileExtension) throws MimeExce
6363

6464
return null;
6565
}
66+
67+
@Override
68+
public boolean isInlinePreferred() {
69+
return true;
70+
}
6671
}

geowebcache/core/src/test/java/org/geowebcache/mime/ApplicationMimeTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ public void testMimeType() throws MimeException {
4444
result = MimeType.createFromExtension(mimeType.getFileExtension());
4545
// Ensure it is the same instance
4646
assertEquals(mimeType, result);
47+
// check inline or not
48+
assertEquals(result.getMimeType().contains("json"), result.isInlinePreferred());
4749
}
4850
}
4951

geowebcache/core/src/test/java/org/geowebcache/mime/ImageMimeTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static org.junit.Assert.assertFalse;
1818
import static org.junit.Assert.assertNotEquals;
1919
import static org.junit.Assert.assertNotNull;
20+
import static org.junit.Assert.assertTrue;
2021

2122
import java.awt.Color;
2223
import java.awt.Graphics2D;
@@ -129,4 +130,17 @@ public void test4BitPNG() throws IOException, URISyntaxException {
129130
writer.getClass().getName(),
130131
ImageMime.NATIVE_PNG_WRITER_CLASS_NAME);
131132
}
133+
134+
@Test
135+
public void testInline() throws Exception {
136+
// actual images
137+
assertTrue(ImageMime.jpeg.isInlinePreferred());
138+
assertTrue(ImageMime.png.isInlinePreferred());
139+
assertTrue(ImageMime.png24.isInlinePreferred());
140+
assertTrue(ImageMime.png8.isInlinePreferred());
141+
assertTrue(ImageMime.jpegPng.isInlinePreferred());
142+
assertTrue(ImageMime.gif.isInlinePreferred());
143+
// this is a binary dump
144+
assertFalse(ImageMime.dds.isInlinePreferred());
145+
}
132146
}

geowebcache/core/src/test/java/org/geowebcache/mime/XMLMimeTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertNotNull;
55
import static org.junit.Assert.assertNull;
6+
import static org.junit.Assert.assertTrue;
67
import static org.junit.Assert.fail;
78

89
import org.junit.Test;
@@ -135,4 +136,13 @@ public void testUnknownExtension() throws MimeException {
135136
public void testUnknownFormat() throws MimeException {
136137
MimeType.createFromFormat("xxx/xxx");
137138
}
139+
140+
@Test
141+
public void testIsInlinePreferred() {
142+
assertTrue(XMLMime.ogcxml.isInlinePreferred());
143+
assertTrue(XMLMime.kml.isInlinePreferred());
144+
assertTrue(XMLMime.kmz.isInlinePreferred());
145+
assertTrue(XMLMime.gml.isInlinePreferred());
146+
assertTrue(XMLMime.gml3.isInlinePreferred());
147+
}
138148
}

0 commit comments

Comments
 (0)