< prev index next >

test/javax/xml/jaxp/unittest/transform/Bug4693341Test.java

Print this page
rev 886 : 8150704: XALAN: ERROR: 'No more DTM IDs are available' when transforming with lots of temporary result trees

@@ -1,7 +1,7 @@
 /*
- * 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
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -24,10 +24,11 @@
 package transform;
 
 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;
 import javax.xml.parsers.SAXParserFactory;
 import javax.xml.transform.Transformer;

@@ -43,38 +44,47 @@
 /*
  * @bug 4693341
  * @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);
             StreamSource source = new StreamSource(new FileInputStream(file), ("file://" + in));
 
             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();
             System.out.println("systemId: " + systemId);
             InputSource is = new InputSource(systemId);
             SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
             parser.parse(is, new DefaultHandler());
-
         } catch (Exception ex) {
             Assert.fail(ex.getMessage());
         }
     }
-
 }
< prev index next >