< 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 >