mirror of https://github.com/apache/poi.git
Activate Forbidden-Apis-Check also for other tests
Max supported Java version is currently Java 14 Fix the check failures git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1880944 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f8040e5f8c
commit
b7b0a0c215
29
build.xml
29
build.xml
|
@ -1549,7 +1549,7 @@ under the License.
|
|||
<delete dir="build" includes="test-integration.log*"/>
|
||||
|
||||
<path id="test-integration.modules">
|
||||
<pathelement path="build/dist/maven/poi"/>
|
||||
<pathelement path="build/dist/maven/poi-tests"/>
|
||||
<pathelement path="build/dist/maven/poi-ooxml"/>
|
||||
<pathelement path="build/dist/maven/poi-scratchpad"/>
|
||||
<pathelement path="build/dist/maven/poi-examples"/>
|
||||
|
@ -2252,16 +2252,22 @@ under the License.
|
|||
<fileset dir="lib/ooxml-provided" includes="*.jar"/>
|
||||
<fileset dir="lib/excelant" includes="*.jar"/>
|
||||
<pathelement location="${ooxml.xsds.jar}"/>
|
||||
<pathelement location="build/dist/maven/poi-tests/poi-${version.id}-tests.jar"/>
|
||||
<pathelement location="build/dist/maven/poi-examples/poi-examples-${version.id}.jar"/>
|
||||
<path path="${env.CLASSPATH}"/>
|
||||
</path>
|
||||
|
||||
<!-- forbiddenapis bundled signatures max supported version is 14 -->
|
||||
<condition property="forbiddenVersion" value="14">
|
||||
<javaversion atleast="15"/>
|
||||
</condition>
|
||||
<property name="forbiddenVersion" value="${ant.java.version}"/>
|
||||
|
||||
<!-- first check rules that apply to all the source code -->
|
||||
<forbiddenapis
|
||||
classpathref="forbiddenapis.classpath"
|
||||
suppressAnnotation="org.apache.poi.util.SuppressForbidden"
|
||||
targetVersion="${ant.java.version}"
|
||||
targetVersion="${forbiddenVersion}"
|
||||
>
|
||||
<bundledsignatures name="jdk-unsafe"/>
|
||||
<bundledsignatures name="jdk-deprecated"/>
|
||||
|
@ -2272,29 +2278,20 @@ under the License.
|
|||
<bundledsignatures name="jdk-system-out"/>
|
||||
-->
|
||||
<signaturesFileset file="src/resources/devtools/forbidden-signatures.txt"/>
|
||||
<!-- sources -->
|
||||
<!-- zipfileset src="build/dist/maven/poi/poi-${version.id}.jar"/ -->
|
||||
<!-- zipfileset src="build/dist/maven/poi-ooxml/poi-ooxml-${version.id}.jar"/ -->
|
||||
<zipfileset src="build/dist/maven/poi-scratchpad/poi-scratchpad-${version.id}.jar"/>
|
||||
<zipfileset src="build/dist/maven/poi-excelant/poi-excelant-${version.id}.jar"/>
|
||||
<!--
|
||||
<fileset dir="${examples.output.dir}"/>
|
||||
-->
|
||||
<!-- test-sources (incl. sources) -->
|
||||
<zipfileset src="build/dist/maven/poi-tests/poi-${version.id}-tests.jar"/>
|
||||
<zipfileset src="build/dist/maven/poi-ooxml-tests/poi-ooxml-${version.id}-tests.jar"/>
|
||||
<!--
|
||||
<fileset dir="${scratchpad.output.test.dir}"/>
|
||||
<fileset dir="${excelant.output.test.dir}"/>
|
||||
<fileset dir="${integration.output.test.dir}"/>
|
||||
-->
|
||||
<zipfileset src="build/dist/maven/poi-scratchpad-tests/poi-scratchpad-${version.id}-tests.jar"/>
|
||||
<zipfileset src="build/dist/maven/poi-excelant-tests/poi-excelant-${version.id}-tests.jar"/>
|
||||
<zipfileset src="build/dist/maven/poi-examples/poi-examples-${version.id}.jar"/>
|
||||
<zipfileset src="build/dist/maven/poi-integration/poi-integration-${version.id}.jar"/>
|
||||
</forbiddenapis>
|
||||
|
||||
<!-- then check some advanced rules which we only apply to the core code and not tests or examples -->
|
||||
<forbiddenapis
|
||||
classpathref="forbiddenapis.classpath"
|
||||
suppressAnnotation="org.apache.poi.util.SuppressForbidden"
|
||||
targetVersion="${jdk.version.source}"
|
||||
targetVersion="${forbiddenVersion}"
|
||||
>
|
||||
<signaturesFileset file="src/resources/devtools/forbidden-signatures-prod.txt"/>
|
||||
<!-- sources -->
|
||||
|
|
|
@ -62,7 +62,7 @@ public class Msg2txt {
|
|||
public void processMessage() throws IOException {
|
||||
String txtFileName = fileNameStem + ".txt";
|
||||
String attDirName = fileNameStem + "-att";
|
||||
try (PrintWriter txtOut = new PrintWriter(txtFileName)) {
|
||||
try (PrintWriter txtOut = new PrintWriter(txtFileName, "UTF-8")) {
|
||||
try {
|
||||
String displayFrom = msg.getDisplayFrom();
|
||||
txtOut.println("From: " + displayFrom);
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.io.FileOutputStream;
|
|||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
|
@ -36,6 +37,7 @@ import org.apache.poi.ss.usermodel.PrintSetup;
|
|||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
/**
|
||||
|
@ -96,7 +98,7 @@ public final class BusinessPlan {
|
|||
if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
|
||||
else wb = new XSSFWorkbook();
|
||||
|
||||
final SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM");
|
||||
final SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM", Locale.ROOT);
|
||||
|
||||
Map<String, CellStyle> styles = createStyles(wb);
|
||||
|
||||
|
@ -124,7 +126,7 @@ public final class BusinessPlan {
|
|||
cell.setCellStyle(styles.get("header"));
|
||||
}
|
||||
//columns for 11 weeks starting from 9-Jul
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
Calendar calendar = LocaleUtil.getLocaleCalendar();
|
||||
int year = calendar.get(Calendar.YEAR);
|
||||
|
||||
calendar.setTime(fmt.parse("9-Jul"));
|
||||
|
|
|
@ -36,6 +36,7 @@ import org.apache.poi.ss.usermodel.Sheet;
|
|||
import org.apache.poi.ss.usermodel.VerticalAlignment;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
/**
|
||||
|
@ -62,7 +63,7 @@ public final class CalendarDemo {
|
|||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
Calendar calendar = LocaleUtil.getLocaleCalendar();
|
||||
boolean xlsx = true;
|
||||
for (String arg : args) {
|
||||
if (arg.charAt(0) == '-') {
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
package org.apache.poi.examples.ss;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
|
@ -94,6 +96,8 @@ public class ExcelComparator {
|
|||
}
|
||||
|
||||
List<String> listOfDifferences = new ArrayList<>();
|
||||
private final DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ROOT);
|
||||
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
if (args.length != 2 || !(new File(args[0]).exists()) || !(new File(args[1]).exists())) {
|
||||
|
@ -429,7 +433,7 @@ public class ExcelComparator {
|
|||
Date date1 = loc1.cell.getDateCellValue();
|
||||
Date date2 = loc2.cell.getDateCellValue();
|
||||
if (!date1.equals(date2)) {
|
||||
addMessage(loc1, loc2, CELL_DATA_DOES_NOT_MATCH, date1.toString(), date2.toString());
|
||||
addMessage(loc1, loc2, CELL_DATA_DOES_NOT_MATCH, dateFormat.format(date1), dateFormat.format(date2));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.io.IOException;
|
|||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
|
@ -39,6 +40,7 @@ import org.apache.poi.ss.usermodel.VerticalAlignment;
|
|||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.apache.poi.ss.util.CellReference;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
|
@ -75,7 +77,7 @@ public final class SSPerformanceTest {
|
|||
runWithArgs(type, rows, cols, saveFile);
|
||||
long timeFinished = System.currentTimeMillis();
|
||||
|
||||
System.out.printf("Elapsed %.2f seconds for arguments %s\n", ((double)timeFinished - timeStarted) / 1000, Arrays.toString(args));
|
||||
System.out.printf(Locale.ROOT, "Elapsed %.2f seconds for arguments %s\n", ((double)timeFinished - timeStarted) / 1000, Arrays.toString(args));
|
||||
}
|
||||
|
||||
private static void runWithArgs(String type, int rows, int cols, boolean saveFile) throws IOException {
|
||||
|
@ -103,7 +105,7 @@ public final class SSPerformanceTest {
|
|||
int sheetNo = 0;
|
||||
int rowIndexInSheet = 1;
|
||||
double value = 0;
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
Calendar calendar = LocaleUtil.getLocaleCalendar();
|
||||
for (int rowIndex = 0; rowIndex < rows; rowIndex++) {
|
||||
if (isHType && sheetNo != rowIndex / 0x10000) {
|
||||
sheet = workBook.createSheet("Spillover from sheet " + (++sheetNo));
|
||||
|
|
|
@ -22,9 +22,10 @@ import java.io.BufferedWriter;
|
|||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileWriter;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
|
@ -431,7 +432,7 @@ public class ToCSV {
|
|||
String csvLineElement;
|
||||
|
||||
// Open a writer onto the CSV file.
|
||||
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
|
||||
try (BufferedWriter bw = Files.newBufferedWriter(file.toPath(), StandardCharsets.ISO_8859_1)) {
|
||||
|
||||
System.out.println("Saving the CSV file [" + file.getName() + "]");
|
||||
|
||||
|
|
|
@ -19,15 +19,16 @@ package org.apache.poi.examples.ss.html;
|
|||
import java.io.BufferedReader;
|
||||
import java.io.Closeable;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Formatter;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
|
@ -189,10 +190,7 @@ public final class ToHtml {
|
|||
return;
|
||||
}
|
||||
|
||||
try (
|
||||
FileWriter fw = new FileWriter(args[1]);
|
||||
PrintWriter pw = new PrintWriter(fw)
|
||||
) {
|
||||
try (PrintWriter pw = new PrintWriter(args[1], "UTF-8")) {
|
||||
ToHtml toHtml = create(args[0], pw);
|
||||
toHtml.setCompleteHTML(true);
|
||||
toHtml.printPage();
|
||||
|
@ -243,7 +241,7 @@ public final class ToHtml {
|
|||
|
||||
private void ensureOut() {
|
||||
if (out == null) {
|
||||
out = new Formatter(output);
|
||||
out = new Formatter(output, Locale.ROOT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -252,7 +250,7 @@ public final class ToHtml {
|
|||
|
||||
// First, copy the base css
|
||||
try (BufferedReader in = new BufferedReader(new InputStreamReader(
|
||||
getClass().getResourceAsStream("excelStyle.css")))){
|
||||
getClass().getResourceAsStream("excelStyle.css"), StandardCharsets.ISO_8859_1))){
|
||||
String line;
|
||||
while ((line = in.readLine()) != null) {
|
||||
out.format("%s%n", line);
|
||||
|
@ -325,7 +323,7 @@ public final class ToHtml {
|
|||
style = wb.getCellStyleAt((short) 0);
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
try (Formatter fmt = new Formatter(sb)) {
|
||||
try (Formatter fmt = new Formatter(sb, Locale.ROOT)) {
|
||||
fmt.format("style_%02x", style.getIndex());
|
||||
return fmt.toString();
|
||||
}
|
||||
|
|
|
@ -22,8 +22,10 @@ package org.apache.poi.examples.xslf;
|
|||
import java.io.BufferedReader;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -62,7 +64,7 @@ public final class BarChartDemo {
|
|||
}
|
||||
|
||||
try (FileInputStream argIS = new FileInputStream(args[0]);
|
||||
BufferedReader modelReader = new BufferedReader(new FileReader(args[1]))) {
|
||||
BufferedReader modelReader = Files.newBufferedReader(Paths.get(args[1]), StandardCharsets.ISO_8859_1)) {
|
||||
|
||||
String chartTitle = modelReader.readLine(); // first line is chart title
|
||||
String[] series = modelReader.readLine().split(",");
|
||||
|
|
|
@ -23,8 +23,10 @@ import java.awt.geom.Rectangle2D;
|
|||
import java.io.BufferedReader;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -70,7 +72,7 @@ public final class ChartFromScratch {
|
|||
return;
|
||||
}
|
||||
|
||||
try (BufferedReader modelReader = new BufferedReader(new FileReader(args[0]))) {
|
||||
try (BufferedReader modelReader = Files.newBufferedReader(Paths.get(args[0]), StandardCharsets.ISO_8859_1)) {
|
||||
|
||||
String chartTitle = modelReader.readLine(); // first line is chart title
|
||||
String[] series = modelReader.readLine().split(",");
|
||||
|
|
|
@ -22,8 +22,10 @@ package org.apache.poi.examples.xslf;
|
|||
import java.io.BufferedReader;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -59,7 +61,7 @@ public final class PieChartDemo {
|
|||
}
|
||||
|
||||
try (FileInputStream argIS = new FileInputStream(args[0]);
|
||||
BufferedReader modelReader = new BufferedReader(new FileReader(args[1]))) {
|
||||
BufferedReader modelReader = Files.newBufferedReader(Paths.get(args[1]), StandardCharsets.ISO_8859_1)) {
|
||||
String chartTitle = modelReader.readLine(); // first line is chart title
|
||||
|
||||
try (XMLSlideShow pptx = new XMLSlideShow(argIS)) {
|
||||
|
|
|
@ -40,6 +40,7 @@ import org.apache.poi.ss.usermodel.FillPatternType;
|
|||
import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
||||
import org.apache.poi.ss.usermodel.IndexedColors;
|
||||
import org.apache.poi.ss.util.CellReference;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
|
||||
import org.apache.poi.xssf.usermodel.XSSFDataFormat;
|
||||
import org.apache.poi.xssf.usermodel.XSSFFont;
|
||||
|
@ -155,7 +156,7 @@ public final class BigGridDemo {
|
|||
|
||||
private static void generate(Writer out, Map<String, XSSFCellStyle> styles) throws Exception {
|
||||
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
Calendar calendar = LocaleUtil.getLocaleCalendar();
|
||||
|
||||
SpreadsheetWriter sw = new SpreadsheetWriter(out);
|
||||
sw.beginSheet();
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
|||
import org.apache.poi.ss.usermodel.PrintOrientation;
|
||||
import org.apache.poi.ss.usermodel.VerticalAlignment;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.xssf.usermodel.XSSFCell;
|
||||
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
|
||||
import org.apache.poi.xssf.usermodel.XSSFColor;
|
||||
|
@ -61,7 +62,7 @@ public class CalendarDemo {
|
|||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
Calendar calendar = LocaleUtil.getLocaleCalendar();
|
||||
if(args.length > 0) calendar.set(Calendar.YEAR, Integer.parseInt(args[0]));
|
||||
|
||||
int year = calendar.get(Calendar.YEAR);
|
||||
|
|
|
@ -31,6 +31,7 @@ import org.apache.poi.ss.usermodel.DataFormat;
|
|||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.util.AreaReference;
|
||||
import org.apache.poi.ss.util.CellReference;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.xssf.usermodel.XSSFPivotTable;
|
||||
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
@ -67,9 +68,9 @@ public class CreatePivotTable2 {
|
|||
}
|
||||
|
||||
public static void setCellData(XSSFSheet sheet){
|
||||
Calendar cal1 = Calendar.getInstance();
|
||||
Calendar cal1 = LocaleUtil.getLocaleCalendar();
|
||||
cal1.set(2017, 0, 1, 0, 0, 0);
|
||||
Calendar cal2 = Calendar.getInstance();
|
||||
Calendar cal2 = LocaleUtil.getLocaleCalendar();
|
||||
cal2.set(2017, 1, 1, 0, 0, 0);
|
||||
Row row1 = sheet.createRow(0);
|
||||
// Create a cell and put a value in it.
|
||||
|
|
|
@ -23,8 +23,10 @@ package org.apache.poi.examples.xwpf.usermodel;
|
|||
import java.io.BufferedReader;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -61,7 +63,7 @@ public final class BarChartExample {
|
|||
}
|
||||
|
||||
try (FileInputStream argIS = new FileInputStream(args[0]);
|
||||
BufferedReader modelReader = new BufferedReader(new FileReader(args[1]))) {
|
||||
BufferedReader modelReader = Files.newBufferedReader(Paths.get(args[1]), StandardCharsets.ISO_8859_1)) {
|
||||
|
||||
String chartTitle = modelReader.readLine(); // first line is chart title
|
||||
String[] series = modelReader.readLine().split(",");
|
||||
|
|
|
@ -21,8 +21,10 @@ package org.apache.poi.examples.xwpf.usermodel;
|
|||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -65,7 +67,7 @@ public final class ChartFromScratch {
|
|||
return;
|
||||
}
|
||||
|
||||
try (BufferedReader modelReader = new BufferedReader(new FileReader(args[0]))) {
|
||||
try (BufferedReader modelReader = Files.newBufferedReader(Paths.get(args[0]), StandardCharsets.ISO_8859_1)) {
|
||||
|
||||
String chartTitle = modelReader.readLine(); // first line is chart title
|
||||
String[] series = modelReader.readLine().split(",");
|
||||
|
|
|
@ -28,6 +28,7 @@ import java.io.File;
|
|||
import java.io.PrintStream;
|
||||
|
||||
import org.apache.poi.POIDataSamples;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.apache.tools.ant.BuildEvent;
|
||||
import org.apache.tools.ant.BuildException;
|
||||
import org.apache.tools.ant.BuildListener;
|
||||
|
@ -140,12 +141,8 @@ public class TestBuildFile {
|
|||
try {
|
||||
sysOut.flush();
|
||||
sysErr.flush();
|
||||
StringBuilder outBuffer = new StringBuilder();
|
||||
PrintStream out = new PrintStream(new AntOutputStream(outBuffer));
|
||||
System.setOut(out);
|
||||
StringBuilder errBuffer = new StringBuilder();
|
||||
PrintStream err = new PrintStream(new AntOutputStream(errBuffer));
|
||||
System.setErr(err);
|
||||
System.setOut(new NullPrintStream());
|
||||
System.setErr(new NullPrintStream());
|
||||
logBuffer = new StringBuilder();
|
||||
fullLogBuffer = new StringBuilder();
|
||||
buildException = null;
|
||||
|
|
|
@ -104,7 +104,7 @@ public class HPSFFileHandler extends POIFSFileHandler {
|
|||
}
|
||||
|
||||
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||
PrintStream psNew = new PrintStream(bos);
|
||||
PrintStream psNew = new PrintStream(bos, true, "ISO-8859-1");
|
||||
PrintStream ps = System.out;
|
||||
try {
|
||||
System.setOut(psNew);
|
||||
|
|
|
@ -22,7 +22,6 @@ import static org.junit.Assert.assertNotNull;
|
|||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
@ -34,6 +33,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.junit.Test;
|
||||
|
||||
public class HSSFFileHandler extends SpreadsheetHandler {
|
||||
|
@ -88,11 +88,7 @@ public class HSSFFileHandler extends SpreadsheetHandler {
|
|||
PrintStream oldOut = System.out;
|
||||
String fileWithParent = file.getParentFile().getName() + "/" + file.getName();
|
||||
try {
|
||||
System.setOut(new PrintStream(new OutputStream() {
|
||||
@Override
|
||||
public void write(int b) {
|
||||
}
|
||||
}));
|
||||
System.setOut(new NullPrintStream());
|
||||
|
||||
BiffViewer.main(new String[]{file.getAbsolutePath()});
|
||||
|
||||
|
|
|
@ -20,7 +20,9 @@ import java.io.IOException;
|
|||
import java.lang.management.ManagementFactory;
|
||||
|
||||
import com.sun.management.HotSpotDiagnosticMXBean;
|
||||
import org.apache.poi.util.SuppressForbidden;
|
||||
|
||||
@SuppressForbidden("class only exists for manual tests in XSSFFileHandler")
|
||||
public class HeapDump {
|
||||
// This is the name of the HotSpot Diagnostic MBean
|
||||
private static final String HOTSPOT_BEAN_NAME =
|
||||
|
|
|
@ -28,11 +28,9 @@ import java.io.File;
|
|||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.transform.TransformerException;
|
||||
|
@ -51,6 +49,7 @@ import org.apache.poi.poifs.crypt.Decryptor;
|
|||
import org.apache.poi.poifs.crypt.EncryptionInfo;
|
||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.apache.poi.xssf.eventusermodel.XSSFReader;
|
||||
import org.apache.poi.xssf.extractor.XSSFExportToXml;
|
||||
import org.apache.poi.xssf.usermodel.XSSFMap;
|
||||
|
@ -221,77 +220,4 @@ public class XSSFFileHandler extends SpreadsheetHandler {
|
|||
public void testAdditional() throws Exception {
|
||||
handleAdditional(new File("test-data/spreadsheet/poc-xmlbomb.xlsx"));
|
||||
}
|
||||
|
||||
// need to override all methods to omit calls to UTF-handling methods
|
||||
static class NullPrintStream extends PrintStream {
|
||||
@SuppressWarnings("resource")
|
||||
NullPrintStream() {
|
||||
super(new OutputStream() {
|
||||
@Override
|
||||
public void write(int b) {}
|
||||
@Override
|
||||
public void write(byte[] b) {}
|
||||
@Override
|
||||
public void write(byte[] b, int off, int len) {}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void write(int b) {}
|
||||
@Override
|
||||
public void write(byte[] buf, int off, int len) {}
|
||||
@Override
|
||||
public void print(boolean b) {}
|
||||
@Override
|
||||
public void print(char c) {}
|
||||
@Override
|
||||
public void print(int i) {}
|
||||
@Override
|
||||
public void print(long l) {}
|
||||
@Override
|
||||
public void print(float f) {}
|
||||
@Override
|
||||
public void print(double d) {}
|
||||
@Override
|
||||
public void print(char[] s) {}
|
||||
@Override
|
||||
public void print(String s) {}
|
||||
@Override
|
||||
public void print(Object obj) {}
|
||||
@Override
|
||||
public void println() {}
|
||||
@Override
|
||||
public void println(boolean x) {}
|
||||
@Override
|
||||
public void println(char x) {}
|
||||
@Override
|
||||
public void println(int x) {}
|
||||
@Override
|
||||
public void println(long x) {}
|
||||
@Override
|
||||
public void println(float x) {}
|
||||
@Override
|
||||
public void println(double x) {}
|
||||
@Override
|
||||
public void println(char[] x) {}
|
||||
@Override
|
||||
public void println(String x) {}
|
||||
@Override
|
||||
public void println(Object x) {}
|
||||
@Override
|
||||
public PrintStream printf(String format, Object... args) { return this; }
|
||||
@Override
|
||||
public PrintStream printf(Locale l, String format, Object... args) { return this; }
|
||||
@Override
|
||||
public PrintStream format(String format, Object... args) { return this; }
|
||||
@Override
|
||||
public PrintStream format(Locale l, String format, Object... args) { return this; }
|
||||
@Override
|
||||
public PrintStream append(CharSequence csq) { return this; }
|
||||
@Override
|
||||
public PrintStream append(CharSequence csq, int start, int end) { return this; }
|
||||
@Override
|
||||
public PrintStream append(char c) { return this; }
|
||||
@Override
|
||||
public void write(byte[] b) {}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -417,10 +417,8 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook {
|
|||
|
||||
private static void saveTwice(Workbook wb) throws Exception {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
try {
|
||||
NullOutputStream out = new NullOutputStream();
|
||||
try (NullOutputStream out = new NullOutputStream()) {
|
||||
wb.write(out);
|
||||
out.close();
|
||||
} catch (Exception e) {
|
||||
throw new Exception("ERROR: failed on " + (i + 1)
|
||||
+ "th time calling " + wb.getClass().getName()
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
# This file contains API signatures which are specific to POI.
|
||||
# The goal is to minimize implicit defaults
|
||||
|
||||
@defaultMessage POI forbidden APIs which are tolerated in non-production code, e.g. in tests and examples
|
||||
@defaultMessage POI forbidden APIs which are not tolerated in production code
|
||||
|
||||
# We have applications which use this to return error codes on invalid commandline parameters...
|
||||
#@defaultMessage Please do not terminate the application
|
||||
|
|
|
@ -24,7 +24,7 @@ import java.io.File;
|
|||
import java.io.PrintStream;
|
||||
|
||||
import org.apache.poi.POIDataSamples;
|
||||
import org.apache.poi.util.NullOutputStream;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.junit.Test;
|
||||
|
||||
public class TestHMEFDumper {
|
||||
|
@ -48,7 +48,7 @@ public class TestHMEFDumper {
|
|||
private static void doMain(String... args) throws Exception {
|
||||
PrintStream ps = System.out;
|
||||
try {
|
||||
System.setOut(new PrintStream(new NullOutputStream(), true, "UTF-8"));
|
||||
System.setOut(new NullPrintStream());
|
||||
HMEFDumper.main(args);
|
||||
} finally {
|
||||
System.setOut(ps);
|
||||
|
|
|
@ -16,22 +16,9 @@
|
|||
==================================================================== */
|
||||
package org.apache.poi.hslf.dev;
|
||||
|
||||
import org.apache.poi.POIDataSamples;
|
||||
import org.apache.poi.hslf.exceptions.EncryptedPowerPointFileException;
|
||||
import org.apache.poi.hslf.exceptions.OldPowerPointFormatException;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.util.NullOutputStream;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.ArrayList;
|
||||
|
@ -42,12 +29,21 @@ import java.util.Locale;
|
|||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import org.apache.poi.POIDataSamples;
|
||||
import org.apache.poi.hslf.exceptions.EncryptedPowerPointFileException;
|
||||
import org.apache.poi.hslf.exceptions.OldPowerPointFormatException;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
|
||||
@RunWith(Parameterized.class)
|
||||
public abstract class BasePPTIteratingTest {
|
||||
protected static final OutputStream NULL_OUTPUT_STREAM = new NullOutputStream();
|
||||
|
||||
protected static final Set<String> OLD_FILES = new HashSet<>();
|
||||
static {
|
||||
OLD_FILES.add("PPT95.ppt");
|
||||
|
@ -89,7 +85,7 @@ public abstract class BasePPTIteratingTest {
|
|||
IOUtils.setByteArrayMaxOverride(5*1024*1024);
|
||||
|
||||
// redirect standard out during the test to avoid spamming the console with output
|
||||
System.setOut(new PrintStream(NULL_OUTPUT_STREAM, true, LocaleUtil.CHARSET_1252.name()));
|
||||
System.setOut(new NullPrintStream());
|
||||
}
|
||||
|
||||
@After
|
||||
|
|
|
@ -35,16 +35,17 @@ import java.io.File;
|
|||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.text.AttributedCharacterIterator;
|
||||
import java.text.AttributedCharacterIterator.Attribute;
|
||||
import java.text.CharacterIterator;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -59,7 +60,6 @@ import org.apache.poi.hslf.exceptions.OldPowerPointFormatException;
|
|||
import org.apache.poi.hslf.model.HeadersFooters;
|
||||
import org.apache.poi.hslf.record.DocInfoListContainer;
|
||||
import org.apache.poi.hslf.record.Document;
|
||||
import org.apache.poi.hslf.record.Record;
|
||||
import org.apache.poi.hslf.record.RecordTypes;
|
||||
import org.apache.poi.hslf.record.SlideListWithText;
|
||||
import org.apache.poi.hslf.record.SlideListWithText.SlideAtomsSet;
|
||||
|
@ -88,6 +88,7 @@ import org.apache.poi.sl.usermodel.TextParagraph.TextAlign;
|
|||
import org.apache.poi.sl.usermodel.TextRun;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.util.LittleEndian;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.apache.poi.util.StringUtil;
|
||||
import org.apache.poi.util.Units;
|
||||
import org.junit.Test;
|
||||
|
@ -291,7 +292,7 @@ public final class TestBugs {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
|
@ -375,7 +376,7 @@ public final class TestBugs {
|
|||
HSLFPictureData pict = f.getPictureData();
|
||||
assertNotNull(pict);
|
||||
assertEquals(PictureType.JPEG, pict.getType());
|
||||
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
|
@ -405,7 +406,7 @@ public final class TestBugs {
|
|||
List<List<HSLFTextParagraph>> run = slide.getTextParagraphs();
|
||||
assertEquals(3, run.size());
|
||||
assertEquals("Fundera, planera och involvera.", HSLFTextParagraph.getRawText(run.get(2)));
|
||||
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
|
@ -445,7 +446,7 @@ public final class TestBugs {
|
|||
HSLFSlideShow ppt = open("41246-1.ppt");
|
||||
|
||||
HSLFTestDataSamples.writeOutAndReadBack(ppt).close();
|
||||
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
|
@ -454,7 +455,7 @@ public final class TestBugs {
|
|||
HSLFSlideShow ppt = open("41246-2.ppt");
|
||||
|
||||
HSLFTestDataSamples.writeOutAndReadBack(ppt).close();
|
||||
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
|
@ -463,31 +464,32 @@ public final class TestBugs {
|
|||
*/
|
||||
@Test
|
||||
public void bug45776() throws IOException {
|
||||
HSLFSlideShow ppt = open("45776.ppt");
|
||||
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ROOT);
|
||||
try (HSLFSlideShow ppt = open("45776.ppt")) {
|
||||
|
||||
// get slides
|
||||
for (HSLFSlide slide : ppt.getSlides()) {
|
||||
for (HSLFShape shape : slide.getShapes()) {
|
||||
if (!(shape instanceof HSLFTextBox)) {
|
||||
continue;
|
||||
// get slides
|
||||
for (HSLFSlide slide : ppt.getSlides()) {
|
||||
for (HSLFShape shape : slide.getShapes()) {
|
||||
if (!(shape instanceof HSLFTextBox)) {
|
||||
continue;
|
||||
}
|
||||
HSLFTextBox tb = (HSLFTextBox) shape;
|
||||
// work with TextBox
|
||||
String str = tb.getText();
|
||||
|
||||
if (!str.contains("$$DATE$$")) {
|
||||
continue;
|
||||
}
|
||||
str = str.replace("$$DATE$$", df.format(new Date()));
|
||||
tb.setText(str);
|
||||
|
||||
List<HSLFTextParagraph> tr = tb.getTextParagraphs();
|
||||
assertEquals(str.length() + 1, tr.get(0).getParagraphStyle().getCharactersCovered());
|
||||
assertEquals(str.length() + 1, tr.get(0).getTextRuns().get(0).getCharacterStyle().getCharactersCovered());
|
||||
}
|
||||
HSLFTextBox tb = (HSLFTextBox) shape;
|
||||
// work with TextBox
|
||||
String str = tb.getText();
|
||||
|
||||
if (!str.contains("$$DATE$$")) {
|
||||
continue;
|
||||
}
|
||||
str = str.replace("$$DATE$$", new Date().toString());
|
||||
tb.setText(str);
|
||||
|
||||
List<HSLFTextParagraph> tr = tb.getTextParagraphs();
|
||||
assertEquals(str.length()+1,tr.get(0).getParagraphStyle().getCharactersCovered());
|
||||
assertEquals(str.length()+1,tr.get(0).getTextRuns().get(0).getCharacterStyle().getCharactersCovered());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -501,7 +503,7 @@ public final class TestBugs {
|
|||
HeadersFooters hf = slide.getHeadersFooters();
|
||||
/*boolean visible =*/ hf.isHeaderVisible(); // exception happens here
|
||||
}
|
||||
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
|
@ -538,7 +540,7 @@ public final class TestBugs {
|
|||
}
|
||||
}
|
||||
assertEquals(2, str);
|
||||
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
|
@ -781,7 +783,7 @@ public final class TestBugs {
|
|||
|
||||
HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1);
|
||||
ppt1.close();
|
||||
|
||||
|
||||
HSLFTextShape ts = (HSLFTextShape)ppt2.getSlides().get(0).getShapes().get(0);
|
||||
tp = ts.getTextParagraphs().get(0);
|
||||
tr = tp.getTextRuns().get(0);
|
||||
|
@ -841,9 +843,9 @@ public final class TestBugs {
|
|||
@Test
|
||||
public void bug55030() throws IOException {
|
||||
HSLFSlideShow ppt = open("bug55030.ppt");
|
||||
|
||||
|
||||
String expFamily = "\u96b6\u4e66";
|
||||
|
||||
|
||||
HSLFSlide sl = ppt.getSlides().get(0);
|
||||
for (List<HSLFTextParagraph> paraList : sl.getTextParagraphs()) {
|
||||
for (HSLFTextParagraph htp : paraList) {
|
||||
|
@ -853,7 +855,7 @@ public final class TestBugs {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
|
@ -873,27 +875,22 @@ public final class TestBugs {
|
|||
assertEquals(hlRun.getStartIndex(), hlShape.getStartIndex());
|
||||
assertEquals(hlRun.getEndIndex(), hlShape.getEndIndex());
|
||||
|
||||
OutputStream nullOutput = new OutputStream(){
|
||||
@Override
|
||||
public void write(int b) throws IOException {}
|
||||
};
|
||||
|
||||
final boolean[] found = {false};
|
||||
DummyGraphics2d dgfx = new DummyGraphics2d(new PrintStream(nullOutput)){
|
||||
DummyGraphics2d dgfx = new DummyGraphics2d(new NullPrintStream()){
|
||||
@Override
|
||||
public void drawString(AttributedCharacterIterator iterator, float x, float y) {
|
||||
// For the test file, common sl draws textruns one by one and not mixed
|
||||
// so we evaluate the whole iterator
|
||||
Map<Attribute, Object> attributes = null;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
|
||||
for (char c = iterator.first();
|
||||
c != CharacterIterator.DONE;
|
||||
c = iterator.next()) {
|
||||
sb.append(c);
|
||||
attributes = iterator.getAttributes();
|
||||
}
|
||||
|
||||
|
||||
if ("Jakarta HSSF".equals(sb.toString())) {
|
||||
// this is a test for a manually modified ppt, for real hyperlink label
|
||||
// one would need to access the screen tip record
|
||||
|
@ -905,17 +902,17 @@ public final class TestBugs {
|
|||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
ppt.getSlides().get(1).draw(dgfx);
|
||||
assertTrue(found[0]);
|
||||
|
||||
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bug59056() throws IOException {
|
||||
HSLFSlideShow ppt = open("54541_cropped_bitmap.ppt");
|
||||
|
||||
|
||||
for (HSLFShape shape : ppt.getSlides().get(0).getShapes()) {
|
||||
BufferedImage img = new BufferedImage(500, 300, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D graphics = img.createGraphics();
|
||||
|
@ -927,11 +924,11 @@ public final class TestBugs {
|
|||
graphics.dispose();
|
||||
// ImageIO.write(img, "png", new File("bla"+shape.getShapeId()+".png"));
|
||||
}
|
||||
|
||||
|
||||
ppt.close();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static HSLFSlideShow open(String fileName) throws IOException {
|
||||
File sample = HSLFTestDataSamples.getSampleFile(fileName);
|
||||
// Note: don't change the code here, it is required for Eclipse to compile the code
|
||||
|
@ -950,10 +947,10 @@ public final class TestBugs {
|
|||
fs.setPath(new Path2D.Double(el));
|
||||
Color cExp = new Color(50,100,150,200);
|
||||
fs.setFillColor(cExp);
|
||||
|
||||
|
||||
HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1);
|
||||
ppt1.close();
|
||||
|
||||
|
||||
sl = ppt2.getSlides().get(0);
|
||||
fs = (HSLFFreeformShape)sl.getShapes().get(0);
|
||||
Color cAct = fs.getFillColor();
|
||||
|
@ -961,7 +958,7 @@ public final class TestBugs {
|
|||
assertEquals(cExp.getGreen(), cAct.getGreen());
|
||||
assertEquals(cExp.getBlue(), cAct.getBlue());
|
||||
assertEquals(cExp.getAlpha(), cAct.getAlpha(), 1);
|
||||
|
||||
|
||||
PaintStyle ps = fs.getFillStyle().getPaint();
|
||||
assertTrue(ps instanceof SolidPaint);
|
||||
ColorStyle cs = ((SolidPaint)ps).getSolidColor();
|
||||
|
@ -971,7 +968,7 @@ public final class TestBugs {
|
|||
assertEquals(cExp.getBlue(), cAct.getBlue());
|
||||
assertEquals(255, cAct.getAlpha());
|
||||
assertEquals(cExp.getAlpha()*100000./255., cs.getAlpha(), 1);
|
||||
|
||||
|
||||
ppt2.close();
|
||||
}
|
||||
|
||||
|
@ -1016,7 +1013,7 @@ public final class TestBugs {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ppt.close();
|
||||
|
||||
} finally {
|
||||
|
|
|
@ -44,6 +44,7 @@ import org.apache.poi.poifs.filesystem.DirectoryEntry;
|
|||
import org.apache.poi.poifs.filesystem.Entry;
|
||||
import org.apache.poi.poifs.filesystem.EntryUtils;
|
||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
@ -53,7 +54,7 @@ public class TestExtractEmbeddedMSG {
|
|||
|
||||
/**
|
||||
* Initialize this test, load up the attachment_msg_pdf.msg mapi message.
|
||||
*
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@BeforeClass
|
||||
|
@ -70,9 +71,9 @@ public class TestExtractEmbeddedMSG {
|
|||
/**
|
||||
* Test to see if embedded message properties can be read, extracted, and
|
||||
* re-parsed
|
||||
*
|
||||
*
|
||||
* @throws ChunkNotFoundException
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void testEmbeddedMSGProperties() throws IOException, ChunkNotFoundException {
|
||||
|
@ -102,7 +103,7 @@ public class TestExtractEmbeddedMSG {
|
|||
msg.setReturnNullOnMissingChunk(true);
|
||||
Calendar messageDate = msg.getMessageDate();
|
||||
assertNotNull(messageDate);
|
||||
Calendar expectedMessageDate = Calendar.getInstance();
|
||||
Calendar expectedMessageDate = LocaleUtil.getLocaleCalendar();
|
||||
expectedMessageDate.set(2010, 05, 17, 23, 52, 19); // 2010/06/17 23:52:19 GMT
|
||||
expectedMessageDate.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||
expectedMessageDate.set(Calendar.MILLISECOND, 0);
|
||||
|
|
|
@ -168,7 +168,7 @@ public final class TestFixedSizedProperties {
|
|||
*/
|
||||
@Test
|
||||
public void testReadMessageDateSucceedsWithHSMFDump() throws IOException {
|
||||
PrintStream stream = new PrintStream(new ByteArrayOutputStream());
|
||||
PrintStream stream = new PrintStream(new ByteArrayOutputStream(), true, "ISO-8859-1");
|
||||
HSMFDump dump = new HSMFDump(fsMessageSucceeds);
|
||||
dump.dump(stream);
|
||||
}
|
||||
|
@ -178,7 +178,7 @@ public final class TestFixedSizedProperties {
|
|||
*/
|
||||
@Test
|
||||
public void testReadMessageDateFailsWithHSMFDump() throws Exception {
|
||||
PrintStream stream = new PrintStream(new ByteArrayOutputStream());
|
||||
PrintStream stream = new PrintStream(new ByteArrayOutputStream(), true, "ISO-8859-1");
|
||||
HSMFDump dump = new HSMFDump(fsMessageFails);
|
||||
dump.dump(stream);
|
||||
}
|
||||
|
|
|
@ -20,7 +20,6 @@ import static org.junit.Assert.assertNotNull;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
@ -29,7 +28,6 @@ import java.util.Map;
|
|||
|
||||
import org.apache.poi.POIDataSamples;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.util.NullOutputStream;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
|
@ -46,8 +44,6 @@ import org.junit.runners.Parameterized.Parameters;
|
|||
*/
|
||||
@RunWith(Parameterized.class)
|
||||
public abstract class BaseTestIteratingXLS {
|
||||
protected static final OutputStream NULL_OUTPUT_STREAM = new NullOutputStream();
|
||||
|
||||
@Rule
|
||||
public ExpectedException thrown = ExpectedException.none();
|
||||
|
||||
|
@ -74,9 +70,9 @@ public abstract class BaseTestIteratingXLS {
|
|||
assertNotNull("Did not find any xls files in directory " + dir, files);
|
||||
|
||||
for(String file : files) {
|
||||
list.add(new Object[] { new File(dir, file) });
|
||||
list.add(new Object[]{new File(dir, file)});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Parameter
|
||||
public File file;
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.io.InputStream;
|
|||
import org.apache.poi.EncryptedDocumentException;
|
||||
import org.apache.poi.hssf.OldExcelFormatException;
|
||||
import org.apache.poi.hssf.record.RecordInputStream;
|
||||
import org.apache.poi.util.NullOutputStream;
|
||||
import org.apache.poi.util.RecordFormatException;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
|
@ -30,10 +31,10 @@ public class TestBiffDrawingToXml extends BaseTestIteratingXLS {
|
|||
@BeforeClass
|
||||
public static void setup() {
|
||||
EXCLUDED.clear();
|
||||
EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
|
||||
EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
|
||||
EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("password.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("password.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("46904.xls", OldExcelFormatException.class);
|
||||
EXCLUDED.put("59074.xls", OldExcelFormatException.class);
|
||||
EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class); // Biff 2 / Excel 2, pre-OLE2
|
||||
|
@ -47,11 +48,11 @@ public class TestBiffDrawingToXml extends BaseTestIteratingXLS {
|
|||
EXCLUDED.put("61300.xls", RecordFormatException.class);
|
||||
EXCLUDED.put("64130.xls", OldExcelFormatException.class); // BIFF 5
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
void runOneFile(File pFile) throws Exception {
|
||||
try (InputStream wb = new FileInputStream(pFile)) {
|
||||
BiffDrawingToXml.writeToFile(NULL_OUTPUT_STREAM, wb, false, new String[0]);
|
||||
BiffDrawingToXml.writeToFile(new NullOutputStream(), wb, false, new String[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.apache.poi.hssf.OldExcelFormatException;
|
|||
import org.apache.poi.hssf.record.RecordInputStream;
|
||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.util.NullOutputStream;
|
||||
import org.apache.poi.util.RecordFormatException;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Ignore;
|
||||
|
@ -62,7 +63,7 @@ public class TestBiffViewer extends BaseTestIteratingXLS {
|
|||
try (POIFSFileSystem fs = new POIFSFileSystem(fileIn, true);
|
||||
InputStream is = BiffViewer.getPOIFSInputStream(fs)) {
|
||||
// use a NullOutputStream to not write the bytes anywhere for best runtime
|
||||
PrintWriter dummy = new PrintWriter(new OutputStreamWriter(NULL_OUTPUT_STREAM, LocaleUtil.CHARSET_1252));
|
||||
PrintWriter dummy = new PrintWriter(new OutputStreamWriter(new NullOutputStream(), LocaleUtil.CHARSET_1252));
|
||||
BiffViewer.runBiffViewer(dummy, is, true, true, true, false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ import java.io.PrintStream;
|
|||
import org.apache.poi.EncryptedDocumentException;
|
||||
import org.apache.poi.hssf.OldExcelFormatException;
|
||||
import org.apache.poi.hssf.record.RecordInputStream;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.apache.poi.util.RecordFormatException;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
|
@ -31,10 +31,10 @@ public class TestEFBiffViewer extends BaseTestIteratingXLS {
|
|||
@BeforeClass
|
||||
public static void setup() {
|
||||
EXCLUDED.clear();
|
||||
EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
|
||||
EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
|
||||
EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("password.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("password.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("46904.xls", OldExcelFormatException.class);
|
||||
EXCLUDED.put("59074.xls", OldExcelFormatException.class);
|
||||
EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class); // Biff 2 / Excel 2, pre-OLE2
|
||||
|
@ -45,17 +45,17 @@ public class TestEFBiffViewer extends BaseTestIteratingXLS {
|
|||
EXCLUDED.put("testEXCEL_95.xls", OldExcelFormatException.class); // Biff 5 / Excel 95
|
||||
EXCLUDED.put("43493.xls", RecordInputStream.LeftoverDataException.class); // HSSFWorkbook cannot open it as well
|
||||
EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
|
||||
EXCLUDED.put("XRefCalc.xls", RuntimeException.class); // "Buffer overrun"
|
||||
// EXCLUDED.put("XRefCalc.xls", RuntimeException.class); // "Buffer overrun"
|
||||
EXCLUDED.put("61300.xls", RecordFormatException.class);
|
||||
EXCLUDED.put("64130.xls", OldExcelFormatException.class); //Biff 5
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
void runOneFile(File fileIn) throws IOException {
|
||||
PrintStream save = System.out;
|
||||
try {
|
||||
// redirect standard out during the test to avoid spamming the console with output
|
||||
System.setOut(new PrintStream(NULL_OUTPUT_STREAM,true,LocaleUtil.CHARSET_1252.name()));
|
||||
System.setOut(new NullPrintStream());
|
||||
|
||||
EFBiffViewer.main(new String[] { fileIn.getAbsolutePath() });
|
||||
} finally {
|
||||
|
|
|
@ -24,7 +24,7 @@ import java.io.PrintStream;
|
|||
import org.apache.poi.EncryptedDocumentException;
|
||||
import org.apache.poi.hssf.OldExcelFormatException;
|
||||
import org.apache.poi.hssf.record.RecordInputStream;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.apache.poi.util.RecordFormatException;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
|
@ -32,10 +32,10 @@ public class TestFormulaViewer extends BaseTestIteratingXLS {
|
|||
@BeforeClass
|
||||
public static void setup() {
|
||||
EXCLUDED.clear();
|
||||
EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
|
||||
EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
|
||||
EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("password.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("password.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("46904.xls", OldExcelFormatException.class);
|
||||
EXCLUDED.put("59074.xls", OldExcelFormatException.class);
|
||||
EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class); // Biff 2 / Excel 2, pre-OLE2
|
||||
|
@ -49,13 +49,13 @@ public class TestFormulaViewer extends BaseTestIteratingXLS {
|
|||
EXCLUDED.put("61300.xls", RecordFormatException.class);
|
||||
EXCLUDED.put("64130.xls", OldExcelFormatException.class); //Biff 5
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
void runOneFile(File fileIn) throws Exception {
|
||||
PrintStream save = System.out;
|
||||
try {
|
||||
// redirect standard out during the test to avoid spamming the console with output
|
||||
System.setOut(new PrintStream(NULL_OUTPUT_STREAM,true,LocaleUtil.CHARSET_1252.name()));
|
||||
System.setOut(new NullPrintStream());
|
||||
|
||||
FormulaViewer viewer = new FormulaViewer();
|
||||
viewer.setFile(fileIn.getAbsolutePath());
|
||||
|
|
|
@ -25,7 +25,7 @@ import org.apache.poi.EncryptedDocumentException;
|
|||
import org.apache.poi.POIDataSamples;
|
||||
import org.apache.poi.hssf.OldExcelFormatException;
|
||||
import org.apache.poi.hssf.record.RecordInputStream;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.apache.poi.util.RecordFormatException;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Ignore;
|
||||
|
@ -35,10 +35,10 @@ public class TestReSave extends BaseTestIteratingXLS {
|
|||
@BeforeClass
|
||||
public static void setup() {
|
||||
EXCLUDED.clear();
|
||||
EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
|
||||
EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header
|
||||
EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("password.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("password.xls", EncryptedDocumentException.class);
|
||||
EXCLUDED.put("46904.xls", OldExcelFormatException.class);
|
||||
EXCLUDED.put("59074.xls", OldExcelFormatException.class);
|
||||
EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class); // Biff 2 / Excel 2, pre-OLE2
|
||||
|
@ -64,12 +64,12 @@ public class TestReSave extends BaseTestIteratingXLS {
|
|||
PrintStream save = System.out;
|
||||
try {
|
||||
// redirect standard out during the test to avoid spamming the console with output
|
||||
System.setOut(new PrintStream(NULL_OUTPUT_STREAM,true,LocaleUtil.CHARSET_1252.name()));
|
||||
System.setOut(new NullPrintStream());
|
||||
|
||||
File reSavedFile = new File(fileIn.getParentFile(), fileIn.getName().replace(".xls", "-saved.xls"));
|
||||
try {
|
||||
ReSave.main(new String[] { fileIn.getAbsolutePath() });
|
||||
|
||||
|
||||
// also try BiffViewer on the saved file
|
||||
new TestBiffViewer().runOneFile(reSavedFile);
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ import java.io.IOException;
|
|||
import java.io.PrintStream;
|
||||
|
||||
import org.apache.poi.hssf.OldExcelFormatException;
|
||||
import org.apache.poi.util.LocaleUtil;
|
||||
import org.apache.poi.util.NullPrintStream;
|
||||
import org.apache.poi.util.RecordFormatException;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
|
@ -46,7 +46,7 @@ public class TestRecordLister extends BaseTestIteratingXLS {
|
|||
PrintStream save = System.out;
|
||||
try {
|
||||
// redirect standard out during the test to avoid spamming the console with output
|
||||
System.setOut(new PrintStream(NULL_OUTPUT_STREAM,true,LocaleUtil.CHARSET_1252.name()));
|
||||
System.setOut(new NullPrintStream());
|
||||
|
||||
RecordLister viewer = new RecordLister();
|
||||
viewer.setFile(fileIn.getAbsolutePath());
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,88 @@
|
|||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
|
||||
package org.apache.poi.util;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.util.Locale;
|
||||
|
||||
// need to override all methods to omit calls to UTF-handling methods
|
||||
@SuppressForbidden("ignore super constructor with charset - omits declaring UnsupportedEncodingException")
|
||||
public class NullPrintStream extends PrintStream {
|
||||
@SuppressWarnings("resource")
|
||||
public NullPrintStream() {
|
||||
super(new NullOutputStream(), true);
|
||||
}
|
||||
@Override
|
||||
public void write(int b) {}
|
||||
@Override
|
||||
public void write(byte[] buf, int off, int len) {}
|
||||
@Override
|
||||
public void print(boolean b) {}
|
||||
@Override
|
||||
public void print(char c) {}
|
||||
@Override
|
||||
public void print(int i) {}
|
||||
@Override
|
||||
public void print(long l) {}
|
||||
@Override
|
||||
public void print(float f) {}
|
||||
@Override
|
||||
public void print(double d) {}
|
||||
@Override
|
||||
public void print(char[] s) {}
|
||||
@Override
|
||||
public void print(String s) {}
|
||||
@Override
|
||||
public void print(Object obj) {}
|
||||
@Override
|
||||
public void println() {}
|
||||
@Override
|
||||
public void println(boolean x) {}
|
||||
@Override
|
||||
public void println(char x) {}
|
||||
@Override
|
||||
public void println(int x) {}
|
||||
@Override
|
||||
public void println(long x) {}
|
||||
@Override
|
||||
public void println(float x) {}
|
||||
@Override
|
||||
public void println(double x) {}
|
||||
@Override
|
||||
public void println(char[] x) {}
|
||||
@Override
|
||||
public void println(String x) {}
|
||||
@Override
|
||||
public void println(Object x) {}
|
||||
@Override
|
||||
public PrintStream printf(String format, Object... args) { return this; }
|
||||
@Override
|
||||
public PrintStream printf(Locale l, String format, Object... args) { return this; }
|
||||
@Override
|
||||
public PrintStream format(String format, Object... args) { return this; }
|
||||
@Override
|
||||
public PrintStream format(Locale l, String format, Object... args) { return this; }
|
||||
@Override
|
||||
public PrintStream append(CharSequence csq) { return this; }
|
||||
@Override
|
||||
public PrintStream append(CharSequence csq, int start, int end) { return this; }
|
||||
@Override
|
||||
public PrintStream append(char c) { return this; }
|
||||
@Override
|
||||
public void write(byte[] b) {}
|
||||
}
|
Loading…
Reference in New Issue