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(); } } }