< prev index next >

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

Print this page

        

*** 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. --- 1,7 ---- /* ! * Copyright (c) 2014, 2018, 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.
*** 21,96 **** * questions. */ package transform; - import static jaxp.library.JAXPTestUtilities.getSystemProperty; - import java.io.File; import java.io.FilePermission; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; - import jaxp.library.JAXPTestUtilities; - import org.testng.Assert; import org.testng.annotations.Listeners; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; /* * @test * @bug 6551600 * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest * @run testng/othervm -DrunSecMngr=true transform.CR6551600Test * @run testng/othervm transform.CR6551600Test * @summary Test using UNC path as StreamResult. */ @Listeners({ jaxp.library.BasePolicy.class }) public class CR6551600Test { @Test public final void testUNCPath() { ! boolean isWindows = getSystemProperty("os.name").contains("Windows"); ! JAXPTestUtilities.runWithTmpPermission(() -> { ! String hostName = ""; try { hostName = java.net.InetAddress.getLocalHost().getHostName(); } catch (java.net.UnknownHostException e) { // falls through } ! String path = isWindows ? "\\\\" + hostName + "\\C$\\xslt_unc_test.xml" : "///tmp/test.xml"; try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.newDocument(); Element root = doc.createElement("test"); doc.appendChild(root); // create an identity transform Transformer t = TransformerFactory.newInstance().newTransformer(); ! File f = new File(path); StreamResult result = new StreamResult(f); DOMSource source = new DOMSource(doc); System.out.println("Writing to " + f); t.transform(source, result); } catch (Exception e) { // unexpected failure e.printStackTrace(); Assert.fail(e.toString()); } ! File file = new File(path); if (file.exists()) { file.deleteOnExit(); } ! }, isWindows ? new FilePermission("//localhost/C$/xslt_unc_test.xml", "read,write,delete") ! : new FilePermission("///tmp/test.xml", "read,write,delete")); } } --- 21,116 ---- * questions. */ package transform; import java.io.File; import java.io.FilePermission; + import java.nio.file.Files; + import java.nio.file.Path; + import java.nio.file.Paths; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.testng.Assert; import org.testng.annotations.Listeners; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; + import jaxp.library.JAXPTestUtilities; + /* * @test * @bug 6551600 + * @requires os.family == "windows" * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest * @run testng/othervm -DrunSecMngr=true transform.CR6551600Test * @run testng/othervm transform.CR6551600Test * @summary Test using UNC path as StreamResult. */ @Listeners({ jaxp.library.BasePolicy.class }) public class CR6551600Test { @Test public final void testUNCPath() { ! var hostName = ""; try { hostName = java.net.InetAddress.getLocalHost().getHostName(); } catch (java.net.UnknownHostException e) { // falls through } ! var uncPath = "\\\\" + hostName + "\\C$\\temp\\"; ! ! if (!checkAccess(uncPath)) { ! System.out.println("Cannot access UNC path. Test exits."); ! return; ! } + var uncFilePath = uncPath + "xslt_unc_test.xml"; + JAXPTestUtilities.runWithTmpPermission(() -> { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.newDocument(); Element root = doc.createElement("test"); doc.appendChild(root); // create an identity transform Transformer t = TransformerFactory.newInstance().newTransformer(); ! File f = new File(uncFilePath); StreamResult result = new StreamResult(f); DOMSource source = new DOMSource(doc); System.out.println("Writing to " + f); t.transform(source, result); } catch (Exception e) { // unexpected failure e.printStackTrace(); Assert.fail(e.toString()); } ! File file = new File(uncFilePath); if (file.exists()) { file.deleteOnExit(); } ! }, new FilePermission(uncFilePath, "read,write,delete")); ! } ! ! private boolean checkAccess(String path) { ! return JAXPTestUtilities.runWithTmpPermission(() -> { ! try { ! Path tmepFile = Files.createTempFile(Paths.get(path), "test", "6551600"); ! Files.deleteIfExists(tmepFile); ! return true; ! } catch (Exception e) { ! System.out.println("Access check failed."); ! e.printStackTrace(); ! return false; ! } ! }, new FilePermission(path + "*", "read,write,delete")); } }
< prev index next >