mirror of https://github.com/apache/lucene.git
LUCENE-9730: cleaned up temp. folder management in hunspell.
This commit is contained in:
parent
04167b27f5
commit
894d0bbb59
|
@ -87,15 +87,22 @@ public class Dictionary {
|
||||||
FST<IntsRef> suffixes;
|
FST<IntsRef> suffixes;
|
||||||
Breaks breaks = Breaks.DEFAULT;
|
Breaks breaks = Breaks.DEFAULT;
|
||||||
|
|
||||||
// all condition checks used by prefixes and suffixes. these are typically re-used across
|
/**
|
||||||
// many affix stripping rules. so these are deduplicated, to save RAM.
|
* All condition checks used by prefixes and suffixes. these are typically re-used across many
|
||||||
|
* affix stripping rules. so these are deduplicated, to save RAM.
|
||||||
|
*/
|
||||||
ArrayList<CharacterRunAutomaton> patterns = new ArrayList<>();
|
ArrayList<CharacterRunAutomaton> patterns = new ArrayList<>();
|
||||||
|
|
||||||
// the entries in the .dic file, mapping to their set of flags.
|
/**
|
||||||
// the fst output is the ordinal list for flagLookup
|
* The entries in the .dic file, mapping to their set of flags. the fst output is the ordinal list
|
||||||
|
* for flagLookup.
|
||||||
|
*/
|
||||||
FST<IntsRef> words;
|
FST<IntsRef> words;
|
||||||
// the list of unique flagsets (wordforms). theoretically huge, but practically
|
|
||||||
// small (e.g. for polish this is 756), otherwise humans wouldn't be able to deal with it either.
|
/**
|
||||||
|
* The list of unique flagsets (wordforms). theoretically huge, but practically small (for Polish
|
||||||
|
* this is 756), otherwise humans wouldn't be able to deal with it either.
|
||||||
|
*/
|
||||||
BytesRefHash flagLookup = new BytesRefHash();
|
BytesRefHash flagLookup = new BytesRefHash();
|
||||||
|
|
||||||
// the list of unique strip affixes.
|
// the list of unique strip affixes.
|
||||||
|
@ -126,8 +133,11 @@ public class Dictionary {
|
||||||
// st: morphological entries (either directly, or aliased from AM)
|
// st: morphological entries (either directly, or aliased from AM)
|
||||||
private String[] stemExceptions = new String[8];
|
private String[] stemExceptions = new String[8];
|
||||||
private int stemExceptionCount = 0;
|
private int stemExceptionCount = 0;
|
||||||
// we set this during sorting, so we know to add an extra FST output.
|
|
||||||
// when set, some words have exceptional stems, and the last entry is a pointer to stemExceptions
|
/**
|
||||||
|
* we set this during sorting, so we know to add an extra FST output. when set, some words have
|
||||||
|
* exceptional stems, and the last entry is a pointer to stemExceptions
|
||||||
|
*/
|
||||||
boolean hasStemExceptions;
|
boolean hasStemExceptions;
|
||||||
|
|
||||||
boolean ignoreCase;
|
boolean ignoreCase;
|
||||||
|
@ -1481,34 +1491,21 @@ public class Dictionary {
|
||||||
return ignoreCase;
|
return ignoreCase;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Path DEFAULT_TEMP_DIR;
|
|
||||||
|
|
||||||
/** Used by test framework */
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public static void setDefaultTempDir(Path tempDir) {
|
|
||||||
DEFAULT_TEMP_DIR = tempDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the default temporary directory. By default, java.io.tmpdir. If not accessible or not
|
* Returns the default temporary directory pointed to by {@code java.io.tmpdir}. If not accessible
|
||||||
* available, an IOException is thrown
|
* or not available, an IOException is thrown.
|
||||||
*/
|
*/
|
||||||
static synchronized Path getDefaultTempDir() throws IOException {
|
static Path getDefaultTempDir() throws IOException {
|
||||||
if (DEFAULT_TEMP_DIR == null) {
|
String tmpDir = System.getProperty("java.io.tmpdir");
|
||||||
// Lazy init
|
if (tmpDir == null) {
|
||||||
String tempDirPath = System.getProperty("java.io.tmpdir");
|
throw new IOException("No temporary path (java.io.tmpdir)?");
|
||||||
if (tempDirPath == null) {
|
|
||||||
throw new IOException("Java has no temporary folder property (java.io.tmpdir)?");
|
|
||||||
}
|
}
|
||||||
Path tempDirectory = Paths.get(tempDirPath);
|
Path tmpPath = Paths.get(tmpDir);
|
||||||
if (!Files.isWritable(tempDirectory)) {
|
if (!Files.isWritable(tmpPath)) {
|
||||||
throw new IOException(
|
throw new IOException(
|
||||||
"Java's temporary folder not present or writeable?: " + tempDirectory.toAbsolutePath());
|
"Temporary path not present or writeable?: " + tmpPath.toAbsolutePath());
|
||||||
}
|
}
|
||||||
DEFAULT_TEMP_DIR = tempDirectory;
|
return tmpPath;
|
||||||
}
|
|
||||||
|
|
||||||
return DEFAULT_TEMP_DIR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Possible word breaks according to BREAK directives */
|
/** Possible word breaks according to BREAK directives */
|
||||||
|
|
Loading…
Reference in New Issue