reverted changes of r1747942 and deprecated instead

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1748313 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2016-06-13 21:18:50 +00:00
parent efc5404731
commit 821f94a3dc
8 changed files with 31 additions and 16 deletions

View File

@ -48,7 +48,7 @@ public class SettingExternalFunction {
/** /**
* wrap external functions in a plugin * wrap external functions in a plugin
*/ */
public static class BloombergAddIn extends UDFFinder { public static class BloombergAddIn implements UDFFinder {
private final Map<String, FreeRefFunction> _functionsByName; private final Map<String, FreeRefFunction> _functionsByName;
public BloombergAddIn() { public BloombergAddIn() {
@ -89,7 +89,6 @@ public class SettingExternalFunction {
wb.write(out); wb.write(out);
out.close(); out.close();
wb.close();
} }
} }

View File

@ -31,6 +31,7 @@ import java.io.PrintWriter;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Iterator; import java.util.Iterator;
@ -38,7 +39,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.Collections;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.poi.EncryptedDocumentException; import org.apache.poi.EncryptedDocumentException;
@ -181,7 +181,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss
* The locator of user-defined functions. * The locator of user-defined functions.
* By default includes functions from the Excel Analysis Toolpack * By default includes functions from the Excel Analysis Toolpack
*/ */
private UDFFinder _udfFinder = new IndexedUDFFinder(UDFFinder.getDefault()); private UDFFinder _udfFinder = new IndexedUDFFinder(AggregatingUDFFinder.DEFAULT);
public static HSSFWorkbook create(InternalWorkbook book) { public static HSSFWorkbook create(InternalWorkbook book) {
return new HSSFWorkbook(book); return new HSSFWorkbook(book);

View File

@ -44,7 +44,7 @@ import org.apache.poi.ss.formula.udf.UDFFinder;
/** /**
* Analysis Toolpack Function Definitions * Analysis Toolpack Function Definitions
*/ */
public final class AnalysisToolPak extends UDFFinder { public final class AnalysisToolPak implements UDFFinder {
public static final UDFFinder instance = new AnalysisToolPak(); public static final UDFFinder instance = new AnalysisToolPak();

View File

@ -17,6 +17,7 @@
package org.apache.poi.ss.formula.udf; package org.apache.poi.ss.formula.udf;
import org.apache.poi.ss.formula.atp.AnalysisToolPak;
import org.apache.poi.ss.formula.functions.FreeRefFunction; import org.apache.poi.ss.formula.functions.FreeRefFunction;
import java.util.ArrayList; import java.util.ArrayList;
@ -25,8 +26,15 @@ import java.util.Collection;
/** /**
* Collects add-in libraries and VB macro functions together into one UDF finder * Collects add-in libraries and VB macro functions together into one UDF finder
*
* @author PUdalau
*/ */
public class AggregatingUDFFinder extends UDFFinder { public class AggregatingUDFFinder implements UDFFinder {
/**
* Default UDFFinder implementation
*/
public static final UDFFinder DEFAULT = new AggregatingUDFFinder(AnalysisToolPak.instance);
private final Collection<UDFFinder> _usedToolPacks; private final Collection<UDFFinder> _usedToolPacks;

View File

@ -25,8 +25,10 @@ import org.apache.poi.ss.formula.functions.FreeRefFunction;
/** /**
* Default UDF finder - for adding your own user defined functions. * Default UDF finder - for adding your own user defined functions.
*
* @author PUdalau
*/ */
public final class DefaultUDFFinder extends UDFFinder { public final class DefaultUDFFinder implements UDFFinder {
private final Map<String, FreeRefFunction> _functionsByName; private final Map<String, FreeRefFunction> _functionsByName;
public DefaultUDFFinder(String[] functionNames, FreeRefFunction[] functionImpls) { public DefaultUDFFinder(String[] functionNames, FreeRefFunction[] functionImpls) {

View File

@ -21,12 +21,18 @@ import org.apache.poi.ss.formula.atp.AnalysisToolPak;
import org.apache.poi.ss.formula.functions.FreeRefFunction; import org.apache.poi.ss.formula.functions.FreeRefFunction;
/** /**
* Common abstract class for "Add-in" libraries and user defined function libraries. * Common interface for "Add-in" libraries and user defined function libraries.
*/ */
public abstract class UDFFinder { public interface UDFFinder {
public static UDFFinder getDefault() { // FIXME: Findbugs error: IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION
return new AggregatingUDFFinder(AnalysisToolPak.instance); /**
} * Default UDFFinder implementation
*
* @deprecated use AggregatingUDFFinder.DEFAULT instead, deprecated in POI 3.15,
* scheduled for removable in POI 3.17
*/
@Deprecated
public static final UDFFinder DEFAULT = new AggregatingUDFFinder(AnalysisToolPak.instance);
/** /**
* Returns executor by specified name. Returns <code>null</code> if the function name is unknown. * Returns executor by specified name. Returns <code>null</code> if the function name is unknown.
@ -34,5 +40,5 @@ public abstract class UDFFinder {
* @param name Name of function. * @param name Name of function.
* @return Function executor. * @return Function executor.
*/ */
public abstract FreeRefFunction findFunction(String name); FreeRefFunction findFunction(String name);
} }

View File

@ -33,7 +33,6 @@ import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -57,6 +56,7 @@ import org.apache.poi.openxml4j.opc.TargetMode;
import org.apache.poi.poifs.crypt.HashAlgorithm; import org.apache.poi.poifs.crypt.HashAlgorithm;
import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.SheetNameFormatter; import org.apache.poi.ss.formula.SheetNameFormatter;
import org.apache.poi.ss.formula.udf.AggregatingUDFFinder;
import org.apache.poi.ss.formula.udf.IndexedUDFFinder; import org.apache.poi.ss.formula.udf.IndexedUDFFinder;
import org.apache.poi.ss.formula.udf.UDFFinder; import org.apache.poi.ss.formula.udf.UDFFinder;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
@ -160,7 +160,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
* The locator of user-defined functions. * The locator of user-defined functions.
* By default includes functions from the Excel Analysis Toolpack * By default includes functions from the Excel Analysis Toolpack
*/ */
private IndexedUDFFinder _udfFinder = new IndexedUDFFinder(UDFFinder.getDefault()); private IndexedUDFFinder _udfFinder = new IndexedUDFFinder(AggregatingUDFFinder.DEFAULT);
/** /**
* TODO * TODO

View File

@ -106,7 +106,7 @@ public final class TestWorkbook {
public void testAddNameX() throws IOException { public void testAddNameX() throws IOException {
HSSFWorkbook hwb = new HSSFWorkbook(); HSSFWorkbook hwb = new HSSFWorkbook();
InternalWorkbook wb = TestHSSFWorkbook.getInternalWorkbook(hwb); InternalWorkbook wb = TestHSSFWorkbook.getInternalWorkbook(hwb);
assertNotNull(wb.getNameXPtg("ISODD", UDFFinder.getDefault())); assertNotNull(wb.getNameXPtg("ISODD", AggregatingUDFFinder.DEFAULT));
FreeRefFunction NotImplemented = new FreeRefFunction() { FreeRefFunction NotImplemented = new FreeRefFunction() {
public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) { public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {