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:
Andreas Beeker 2020-08-17 20:25:08 +00:00
parent f8040e5f8c
commit b7b0a0c215
37 changed files with 802 additions and 818 deletions

View File

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

View File

@ -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);

View File

@ -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"));

View File

@ -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) == '-') {

View File

@ -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));
}
}

View File

@ -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));

View File

@ -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() + "]");

View File

@ -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();
}

View File

@ -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(",");

View File

@ -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(",");

View File

@ -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)) {

View File

@ -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();

View File

@ -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);

View File

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

View File

@ -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(",");

View File

@ -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(",");

View File

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

View File

@ -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);

View File

@ -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()});

View File

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

View File

@ -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) {}
}
}

View File

@ -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()

View File

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

View File

@ -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);

View File

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

View File

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

View File

@ -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);

View File

@ -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);
}

View File

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

View 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]);
}
}
}

View File

@ -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);
}
}

View File

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

View File

@ -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());

View File

@ -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);

View File

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

View File

@ -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) {}
}