#62831 Fix WorkbookFactory.create with a subclass of File, eg from JFileChooser
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1844116 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ba71f90c32
commit
290e9c4087
@ -296,6 +296,11 @@ public class WorkbookFactory {
|
|||||||
return createWorkbook("org.apache.poi.xssf.usermodel.XSSFWorkbookFactory", args);
|
return createWorkbook("org.apache.poi.xssf.usermodel.XSSFWorkbookFactory", args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the actual call to HSSF or XSSF to do the creation.
|
||||||
|
* Uses reflection, so that this class can be in the Core non-OOXML
|
||||||
|
* POI jar without errors / broken references to the OOXML / XSSF code.
|
||||||
|
*/
|
||||||
private static Workbook createWorkbook(String factoryClass, Object args[]) throws IOException, EncryptedDocumentException {
|
private static Workbook createWorkbook(String factoryClass, Object args[]) throws IOException, EncryptedDocumentException {
|
||||||
try {
|
try {
|
||||||
Class<?> clazz = WorkbookFactory.class.getClassLoader().loadClass(factoryClass);
|
Class<?> clazz = WorkbookFactory.class.getClassLoader().loadClass(factoryClass);
|
||||||
@ -307,6 +312,8 @@ public class WorkbookFactory {
|
|||||||
c = boolean.class;
|
c = boolean.class;
|
||||||
} else if (InputStream.class.isAssignableFrom(c)) {
|
} else if (InputStream.class.isAssignableFrom(c)) {
|
||||||
c = InputStream.class;
|
c = InputStream.class;
|
||||||
|
} else if (File.class.isAssignableFrom(c)) {
|
||||||
|
c = File.class;
|
||||||
}
|
}
|
||||||
argsClz[i++] = c;
|
argsClz[i++] = c;
|
||||||
}
|
}
|
||||||
|
@ -17,18 +17,24 @@
|
|||||||
|
|
||||||
package org.apache.poi.ss;
|
package org.apache.poi.ss;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
|
|
||||||
import org.apache.poi.EmptyFileException;
|
import org.apache.poi.EmptyFileException;
|
||||||
import org.apache.poi.EncryptedDocumentException;
|
import org.apache.poi.EncryptedDocumentException;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
||||||
import org.apache.poi.hssf.HSSFTestDataSamples;
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
|
import org.apache.poi.openxml4j.opc.OPCPackage;
|
||||||
|
import org.apache.poi.openxml4j.opc.PackageAccess;
|
||||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||||
@ -36,10 +42,7 @@ import org.apache.poi.util.POILogFactory;
|
|||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
import org.apache.poi.util.TempFile;
|
import org.apache.poi.util.TempFile;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.apache.poi.openxml4j.opc.OPCPackage;
|
|
||||||
import org.apache.poi.openxml4j.opc.PackageAccess;
|
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbookFactory;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbookFactory;
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public final class TestWorkbookFactory {
|
public final class TestWorkbookFactory {
|
||||||
@ -393,7 +396,6 @@ public final class TestWorkbookFactory {
|
|||||||
* to work for sub-classes of File too, eg JFileChooser
|
* to work for sub-classes of File too, eg JFileChooser
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void testFileSubclass() throws Exception {
|
public void testFileSubclass() throws Exception {
|
||||||
Workbook wb;
|
Workbook wb;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user