diff --git a/imageio/imageio-batik/pom.xml b/imageio/imageio-batik/pom.xml
index 8e162958..3fcd58d4 100644
--- a/imageio/imageio-batik/pom.xml
+++ b/imageio/imageio-batik/pom.xml
@@ -14,6 +14,21 @@
See the Batik Home page
for more information.]]>
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+
+ true
+
+
+
+
+
+
diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java
index 951b4dd6..8f0c717c 100755
--- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java
+++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java
@@ -80,11 +80,11 @@ import java.util.Map;
*/
public class SVGImageReader extends ImageReaderBase {
- static String ALLOW_EXTERNAL_RESOURCES_SYSTEM_PROP = "com.twelvemonkeys.imageio.plugins.svg.allowexternalresources";
+ final static boolean DEFAULT_ALLOW_EXTERNAL_RESOURCES =
+ "true".equalsIgnoreCase(System.getProperty("com.twelvemonkeys.imageio.plugins.svg.allowexternalresources"));
private Rasterizer rasterizer;
- private boolean allowExternalResources =
- "true".equalsIgnoreCase(System.getProperty(ALLOW_EXTERNAL_RESOURCES_SYSTEM_PROP));
+ private boolean allowExternalResources = DEFAULT_ALLOW_EXTERNAL_RESOURCES;
/**
* Creates an {@code SVGImageReader}.
diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGReadParam.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGReadParam.java
index 0f7779ca..6fa67199 100755
--- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGReadParam.java
+++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGReadParam.java
@@ -41,8 +41,7 @@ import java.awt.*;
public class SVGReadParam extends ImageReadParam {
private Paint background;
private String baseURI;
- private boolean allowExternalResources =
- "true".equals(System.getProperty(SVGImageReader.ALLOW_EXTERNAL_RESOURCES_SYSTEM_PROP));
+ private boolean allowExternalResources = SVGImageReader.DEFAULT_ALLOW_EXTERNAL_RESOURCES;
public SVGReadParam() {
super();
diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java
index 7785492a..d63c4262 100755
--- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java
+++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java
@@ -245,7 +245,7 @@ public class SVGImageReaderTest extends ImageReaderAbstractTest
}
@Test
- public void testEmbeddedBeforeBaseURI_withSystemProperty() throws URISyntaxException, IOException {
+ public void testEmbeddedBeforeBaseURI() throws URISyntaxException, IOException {
// Asking for metadata, width, height etc, before attempting to read using a param,
// will cause the document to be parsed without a base URI.
// This will work, but may not use the CSS...
@@ -253,87 +253,56 @@ public class SVGImageReaderTest extends ImageReaderAbstractTest
// this test-case MUST use the system-property for backwards compatibility
URL resource = getClassLoaderResource("/svg/barChart.svg");
- try {
- System.setProperty("com.twelvemonkeys.imageio.plugins.svg.allowexternalresources", "true");
- SVGImageReader reader = createReader();
-
- TestData data = new TestData(resource, (Dimension) null);
- try (ImageInputStream stream = data.getInputStream()) {
- reader.setInput(stream);
-
- IIOReadWarningListener listener = mock(IIOReadWarningListener.class);
- reader.addIIOReadWarningListener(listener);
-
- assertEquals(450, reader.getWidth(0));
- assertEquals(500, reader.getHeight(0));
-
- // Expect the warning about the missing CSS
- verify(listener, atMost(1)).warningOccurred(any(ImageReader.class), anyString());
- reset(listener);
-
- SVGReadParam param = reader.getDefaultReadParam();
- param.setBaseURI(resource.toURI().toASCIIString());
- BufferedImage image = reader.read(0, param);
-
- assertNotNull(image);
- assertEquals(450, image.getWidth());
- assertEquals(500, image.getHeight());
-
- // No more warnings now that the base URI is set
- verifyZeroInteractions(listener);
- }
- finally {
- reader.dispose();
- }
- } finally {
- System.clearProperty("com.twelvemonkeys.imageio.plugins.svg.allowexternalresources");
- }
- }
-
- @Test
- public void testEmbeddedNoBaseURI_withSystemProperty() throws IOException {
- // With no base URI, we will throw an exception, about the missing embedded resource
- URL resource = getClassLoaderResource("/svg/barChart.svg");
-
- try {
- System.setProperty("com.twelvemonkeys.imageio.plugins.svg.allowexternalresources", "true");
-
- SVGImageReader reader = createReader();
-
- TestData data = new TestData(resource, (Dimension) null);
- try (ImageInputStream stream = data.getInputStream()) {
- reader.setInput(stream);
-
- reader.read(0);
-
- assertTrue("reader.read should've thrown an exception, but didn't", false);
- }
- catch (IIOException allowed) {
- assertTrue(allowed.getMessage().contains("batikLogo.svg")); // The embedded resource we don't find
- }
- finally {
- reader.dispose();
- }
- } finally {
- System.clearProperty("com.twelvemonkeys.imageio.plugins.svg.allowexternalresources");
- }
- }
-
- @Test(expected = SecurityException.class)
- public void testDefaultDisallowedExternalResources() throws URISyntaxException, IOException {
- URL resource = getClassLoaderResource("/svg/barChart.svg");
-
SVGImageReader reader = createReader();
TestData data = new TestData(resource, (Dimension) null);
try (ImageInputStream stream = data.getInputStream()) {
reader.setInput(stream);
+ IIOReadWarningListener listener = mock(IIOReadWarningListener.class);
+ reader.addIIOReadWarningListener(listener);
+
+ assertEquals(450, reader.getWidth(0));
+ assertEquals(500, reader.getHeight(0));
+
+ // Expect the warning about the missing CSS
+ verify(listener, atMost(1)).warningOccurred(any(ImageReader.class), anyString());
+ reset(listener);
+
SVGReadParam param = reader.getDefaultReadParam();
param.setBaseURI(resource.toURI().toASCIIString());
- // `reader.read` for `/svg/barChart.svg` should raise
- // a SecurityException when External Resources are blocked
- reader.read(0, param);
+ BufferedImage image = reader.read(0, param);
+
+ assertNotNull(image);
+ assertEquals(450, image.getWidth());
+ assertEquals(500, image.getHeight());
+
+ // No more warnings now that the base URI is set
+ verifyZeroInteractions(listener);
+ }
+ finally {
+ reader.dispose();
+ }
+ }
+
+ @Test
+ public void testEmbeddedNoBaseURI() throws IOException {
+ // With no base URI, we will throw an exception, about the missing embedded resource
+ URL resource = getClassLoaderResource("/svg/barChart.svg");
+ SVGImageReader reader = createReader();
+
+ TestData data = new TestData(resource, (Dimension) null);
+ try (ImageInputStream stream = data.getInputStream()) {
+ reader.setInput(stream);
+
+ SVGReadParam params = reader.getDefaultReadParam();
+ params.setAllowExternalResources(true);
+ reader.read(0, params);
+
+ assertTrue("reader.read should've thrown an exception, but didn't", false);
+ }
+ catch (IIOException allowed) {
+ assertTrue(allowed.getMessage().contains("batikLogo.svg")); // The embedded resource we don't find
}
finally {
reader.dispose();
@@ -341,30 +310,26 @@ public class SVGImageReaderTest extends ImageReaderAbstractTest
}
@Test(expected = SecurityException.class)
- public void testDisallowedExternalResources_withSystemProperty() throws URISyntaxException, IOException {
+ public void testDisallowedExternalResources() throws URISyntaxException, IOException {
+ // system-property set to true in surefire-plugin-settings in the pom
URL resource = getClassLoaderResource("/svg/barChart.svg");
- try {
- System.setProperty("com.twelvemonkeys.imageio.plugins.svg.allowexternalresources", "true");
- SVGImageReader reader = createReader();
+ SVGImageReader reader = createReader();
- TestData data = new TestData(resource, (Dimension) null);
- try (ImageInputStream stream = data.getInputStream()) {
- reader.setInput(stream);
+ TestData data = new TestData(resource, (Dimension) null);
+ try (ImageInputStream stream = data.getInputStream()) {
+ reader.setInput(stream);
- SVGReadParam param = reader.getDefaultReadParam();
- param.setBaseURI(resource.toURI().toASCIIString());
- param.setAllowExternalResources(false);
- // even when the system-property is set to true,
- // `reader.read` for `/svg/barChart.svg` should raise
- // a SecurityException when External Resources are blocked
- // because the API invocation gets preference
- reader.read(0, param);
- }
- finally {
- reader.dispose();
- }
- } finally {
- System.clearProperty("com.twelvemonkeys.imageio.plugins.svg.allowexternalresources");
+ SVGReadParam param = reader.getDefaultReadParam();
+ param.setBaseURI(resource.toURI().toASCIIString());
+ param.setAllowExternalResources(false);
+ // even when the system-property is set to true,
+ // `reader.read` for `/svg/barChart.svg` should raise
+ // a SecurityException when External Resources are blocked
+ // because the API invocation gets preference
+ reader.read(0, param);
+ }
+ finally {
+ reader.dispose();
}
}
}