< 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 **** /* ! * Copyright (c) 2014, 2015, 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. --- 1,7 ---- /* ! * 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,33 **** --- 24,34 ---- 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,80 **** /* * @bug 4693341 * @summary Test transform with external dtd. */ public class Bug4693341Test { @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)); 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); // 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()); } } - } --- 44,90 ---- /* * @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() { try { Transformer transformer = TransformerFactory.newInstance().newTransformer(); ! 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", "", 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 >