< prev index next >
test/javax/xml/jaxp/libs/jaxp/library/JAXPTestUtilities.java
Print this page
*** 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.
*** 20,29 ****
--- 20,31 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jaxp.library;
+ import static org.testng.Assert.fail;
+
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
*** 32,56 ****
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.charset.UnsupportedCharsetException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
! import static org.testng.Assert.fail;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
/**
--- 34,63 ----
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.charset.UnsupportedCharsetException;
import java.nio.file.Files;
import java.nio.file.Paths;
+ import java.security.Permission;
+ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+ import java.util.function.Supplier;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+ import java.util.stream.Stream;
+
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
!
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
/**
*** 87,97 ****
= new ConcurrentHashMap<>();
/**
* BOM table for storing BOM header.
*/
! private final static Map<String, byte[]> bom = new HashMap<>();
/**
* Initialize all BOM headers.
*/
static {
--- 94,104 ----
= new ConcurrentHashMap<>();
/**
* BOM table for storing BOM header.
*/
! private final static Map<String, byte[]> bom = new HashMap();
/**
* Initialize all BOM headers.
*/
static {
*** 128,139 ****
* @throws IOException if an I/O error occurs reading from the file or a
* malformed or unmappable byte sequence is read.
*/
public static boolean compareWithGold(String goldfile, String outputfile,
Charset cs) throws IOException {
! return Files.readAllLines(Paths.get(goldfile)).
equals(Files.readAllLines(Paths.get(outputfile), cs));
}
/**
* Compare contents of golden file with test output list line by line.
* return true if they're identical.
--- 135,153 ----
* @throws IOException if an I/O error occurs reading from the file or a
* malformed or unmappable byte sequence is read.
*/
public static boolean compareWithGold(String goldfile, String outputfile,
Charset cs) throws IOException {
! boolean isSame = Files.readAllLines(Paths.get(goldfile)).
equals(Files.readAllLines(Paths.get(outputfile), cs));
+ if (!isSame) {
+ System.err.println("Golden file " + goldfile + " :");
+ Files.readAllLines(Paths.get(goldfile)).forEach(System.err::println);
+ System.err.println("Output file " + outputfile + " :");
+ Files.readAllLines(Paths.get(outputfile), cs).forEach(System.err::println);
+ }
+ return isSame;
}
/**
* Compare contents of golden file with test output list line by line.
* return true if they're identical.
*** 306,319 ****
*/
public static String getNextFile(Class clazz) {
int nextNumber = currentFileNumber.contains(clazz)
? currentFileNumber.get(clazz) + 1 : 1;
Integer i = currentFileNumber.putIfAbsent(clazz, nextNumber);
! if (i != null && i != nextNumber) {
do {
nextNumber = currentFileNumber.get(clazz) + 1;
! } while (currentFileNumber.replace(clazz, nextNumber -1, nextNumber));
}
return USER_DIR + clazz.getName() + nextNumber + ".out";
}
/**
--- 320,333 ----
*/
public static String getNextFile(Class clazz) {
int nextNumber = currentFileNumber.contains(clazz)
? currentFileNumber.get(clazz) + 1 : 1;
Integer i = currentFileNumber.putIfAbsent(clazz, nextNumber);
! if (i != null) {
do {
nextNumber = currentFileNumber.get(clazz) + 1;
! } while (!currentFileNumber.replace(clazz, nextNumber - 1, nextNumber));
}
return USER_DIR + clazz.getName() + nextNumber + ".out";
}
/**
*** 330,335 ****
--- 344,439 ----
+ packageName + FILE_SEP;
String normalizedPath = Paths.get(javaSourcePath, relativeDir).normalize().
toAbsolutePath().toString();
return normalizedPath.replace("\\", FILE_SEP) + FILE_SEP;
}
+
+
+ /**
+ * Run the RunnableWithException with creating a JAXPPolicyManager and
+ * assigning temporary permissions. It's not thread-safe to use this
+ * function.
+ *
+ * @param r
+ * RunnableWithException to execute
+ * @param ps
+ * assigning permissions to add.
+ */
+ public static void tryRunWithPolicyManager(RunnableWithException r, Permission... ps) throws Exception {
+ JAXPPolicyManager policyManager = JAXPPolicyManager.getJAXPPolicyManager(true);
+ if (policyManager != null)
+ Stream.of(ps).forEach(p -> policyManager.addTmpPermission(p));
+ try {
+ r.run();
+ } finally {
+ JAXPPolicyManager.teardownPolicyManager();
+ }
+ }
+
+ /**
+ * Run the runnable with assigning temporary permissions. This won't impact
+ * global policy.
+ *
+ * @param r
+ * Runnable to run
+ * @param ps
+ * assigning permissions to add.
+ */
+ public static void runWithTmpPermission(Runnable r, Permission... ps) {
+ JAXPPolicyManager policyManager = JAXPPolicyManager.getJAXPPolicyManager(false);
+ List<Integer> tmpPermissionIndexes = new ArrayList();
+ if (policyManager != null)
+ Stream.of(ps).forEach(p -> tmpPermissionIndexes.add(policyManager.addTmpPermission(p)));
+ try {
+ r.run();
+ } finally {
+ tmpPermissionIndexes.forEach(index -> policyManager.removeTmpPermission(index));
+ }
+ }
+
+ /**
+ * Run the supplier with assigning temporary permissions. This won't impact
+ * global policy.
+ *
+ * @param s
+ * Supplier to run
+ * @param ps
+ * assigning permissions to add.
+ */
+ public static <T> T runWithTmpPermission(Supplier<T> s, Permission... ps) {
+ JAXPPolicyManager policyManager = JAXPPolicyManager.getJAXPPolicyManager(false);
+ List<Integer> tmpPermissionIndexes = new ArrayList();
+ if (policyManager != null)
+ Stream.of(ps).forEach(p -> tmpPermissionIndexes.add(policyManager.addTmpPermission(p)));
+ try {
+ return s.get();
+ } finally {
+ tmpPermissionIndexes.forEach(index -> policyManager.removeTmpPermission(index));
+ }
+ }
+
+ /**
+ * Run the RunnableWithException with assigning temporary permissions. This won't impact
+ * global policy.
+ *
+ * @param r
+ * RunnableWithException to execute
+ * @param ps
+ * assigning permissions to add.
+ */
+ public static void tryRunWithTmpPermission(RunnableWithException r, Permission... ps) throws Exception {
+ JAXPPolicyManager policyManager = JAXPPolicyManager.getJAXPPolicyManager(false);
+ List<Integer> tmpPermissionIndexes = new ArrayList();
+ if (policyManager != null)
+ Stream.of(ps).forEach(p -> tmpPermissionIndexes.add(policyManager.addTmpPermission(p)));
+ try {
+ r.run();
+ } finally {
+ tmpPermissionIndexes.forEach(index -> policyManager.removeTmpPermission(index));
+ }
+ }
+
+ @FunctionalInterface
+ public interface RunnableWithException {
+ void run() throws Exception;
+ }
}
< prev index next >