jaxp/test/javax/xml/jaxp/unittest/transform/Bug4693341Test.java
changeset 36486 b84e564d2358
parent 32156 8def5917a696
child 40223 64662417aa2d
--- a/jaxp/test/javax/xml/jaxp/unittest/transform/Bug4693341Test.java	Wed Jul 05 21:25:35 2017 +0200
+++ b/jaxp/test/javax/xml/jaxp/unittest/transform/Bug4693341Test.java	Wed Mar 09 16:09:55 2016 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.net.URL;
 
 import javax.xml.parsers.SAXParser;
@@ -45,16 +46,27 @@
  * @summary Test transform with external dtd.
  */
 public class Bug4693341Test {
+    // save dtd file to current working directory to avoid writing into source repository
+    public void copyDTDtoWorkDir() throws IOException {
+        try (FileInputStream dtdres = new FileInputStream(getClass().getResource("Bug4693341.dtd").getPath());
+             FileOutputStream dtdwork = new FileOutputStream("Bug4693341.dtd");) {
+            int n;
+            byte[] buffer = new byte[1024];
+            while((n = dtdres.read(buffer)) > -1) {
+                dtdwork.write(buffer, 0, n);
+            }
+        }
+    }
 
     @Test
     public void test() {
-        boolean status = false;
-
         try {
             Transformer transformer = TransformerFactory.newInstance().newTransformer();
 
-            String out = getClass().getResource("Bug4693341.out").getPath();
-            StreamResult result = new StreamResult(new FileOutputStream(out));
+            copyDTDtoWorkDir();
+
+            File outf = new File("Bug4693341.out");
+            StreamResult result = new StreamResult(new FileOutputStream(outf));
 
             String in = getClass().getResource("Bug4693341.xml").getPath();
             File file = new File(in);
@@ -63,7 +75,7 @@
             transformer.transform(source, result);
 
             //URL inputsource = new URL("file", "", golden);
-            URL output = new URL("file", "", out);
+            URL output = new URL("file", "", outf.getPath());
 
             // error happens when trying to parse output
             String systemId = output.toExternalForm();
@@ -71,10 +83,8 @@
             InputSource is = new InputSource(systemId);
             SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
             parser.parse(is, new DefaultHandler());
-
         } catch (Exception ex) {
             Assert.fail(ex.getMessage());
         }
     }
-
 }