Package org.passay.dictionary
Class MemoryMappedFileWordList
- java.lang.Object
-
- org.passay.dictionary.AbstractWordList
-
- org.passay.dictionary.AbstractFileWordList
-
- org.passay.dictionary.MemoryMappedFileWordList
-
- All Implemented Interfaces:
WordList
public class MemoryMappedFileWordList extends AbstractFileWordList
Provides an implementation of aWordList
that is backed by a file and leverages aMappedByteBuffer
. Each word is read from the file for every get, though the implementation supports a simple memory cache to improve read performance. This implementation does not support files greater than 2GB in size. Use this implementation when the initialization cost ofFileWordList
is too high.- Author:
- Middleware Services
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.passay.dictionary.AbstractFileWordList
AbstractFileWordList.FileWord
-
-
Field Summary
-
Fields inherited from class org.passay.dictionary.AbstractFileWordList
DEFAULT_CACHE_PERCENT, file, size
-
Fields inherited from class org.passay.dictionary.AbstractWordList
comparator
-
-
Constructor Summary
Constructors Constructor Description MemoryMappedFileWordList(RandomAccessFile raf)
Creates a new case-sensitive word list from the supplied file.MemoryMappedFileWordList(RandomAccessFile raf, boolean caseSensitive)
Creates a new word list from the supplied file.MemoryMappedFileWordList(RandomAccessFile raf, boolean caseSensitive, int cachePercent)
Creates a new word list from the supplied file.MemoryMappedFileWordList(RandomAccessFile raf, boolean caseSensitive, int cachePercent, CharsetDecoder decoder)
Creates a new word list from the supplied file.MemoryMappedFileWordList(RandomAccessFile raf, boolean caseSensitive, int cachePercent, CharsetDecoder decoder, boolean allocateDirect)
Creates a new word list from the supplied file.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ByteBuffer
buffer()
Returns the buffer providing the backing file data.protected void
fill()
Fills the buffer from the backing file.protected void
seek(long offset)
Positions the read head of the backing file at the given byte offset.-
Methods inherited from class org.passay.dictionary.AbstractFileWordList
close, get, getFile, initialize, readWord, size, toString
-
Methods inherited from class org.passay.dictionary.AbstractWordList
checkIsString, checkRange, getComparator, iterator, medianIterator
-
-
-
-
Constructor Detail
-
MemoryMappedFileWordList
public MemoryMappedFileWordList(RandomAccessFile raf) throws IOException
Creates a new case-sensitive word list from the supplied file. The input file is read on initialization and is maintained by this class.NOTE Attempts to close the source file will cause
IOException
whenAbstractFileWordList.get(int)
is called subsequently.- Parameters:
raf
- File containing words, one per line.- Throws:
IOException
- if an error occurs reading the supplied file
-
MemoryMappedFileWordList
public MemoryMappedFileWordList(RandomAccessFile raf, boolean caseSensitive) throws IOException
Creates a new word list from the supplied file. The input file is read on initialization and is maintained by this class.NOTE Attempts to close the source file will cause
IOException
whenAbstractFileWordList.get(int)
is called subsequently.- Parameters:
raf
- File containing words, one per line.caseSensitive
- Set to true to create case-sensitive word list, false otherwise.- Throws:
IOException
- if an error occurs reading the supplied file
-
MemoryMappedFileWordList
public MemoryMappedFileWordList(RandomAccessFile raf, boolean caseSensitive, int cachePercent) throws IOException
Creates a new word list from the supplied file. The input file is read on initialization and is maintained by this class. cachePercent is a percentage of the file size in bytes.NOTE Attempts to close the source file will cause
IOException
whenAbstractFileWordList.get(int)
is called subsequently.- Parameters:
raf
- File containing words, one per line.caseSensitive
- Set to true to create case-sensitive word list, false otherwise.cachePercent
- Percent (0-100) of file to cache in memory for improved read performance.- Throws:
IllegalArgumentException
- if cache percent is out of range.IOException
- if an error occurs reading the supplied file
-
MemoryMappedFileWordList
public MemoryMappedFileWordList(RandomAccessFile raf, boolean caseSensitive, int cachePercent, CharsetDecoder decoder) throws IOException
Creates a new word list from the supplied file. The input file is read on initialization and is maintained by this class. cachePercent is a percentage of the file size in bytes.NOTE Attempts to close the source file will cause
IOException
whenAbstractFileWordList.get(int)
is called subsequently.- Parameters:
raf
- File containing words, one per line.caseSensitive
- Set to true to create case-sensitive word list, false otherwise.cachePercent
- Percent (0-100) of file to cache in memory for improved read performance.decoder
- Charset decoder for converting file bytes to characters- Throws:
IllegalArgumentException
- if cache percent is out of range.IOException
- if an error occurs reading the supplied file
-
MemoryMappedFileWordList
public MemoryMappedFileWordList(RandomAccessFile raf, boolean caseSensitive, int cachePercent, CharsetDecoder decoder, boolean allocateDirect) throws IOException
Creates a new word list from the supplied file. The input file is read on initialization and is maintained by this class. cachePercent is a percentage of the file size in bytes.NOTE Attempts to close the source file will cause
IOException
whenAbstractFileWordList.get(int)
is called subsequently.- Parameters:
raf
- File containing words, one per line.caseSensitive
- Set to true to create case-sensitive word list, false otherwise.cachePercent
- Percent (0-100) of file to cache in memory for improved read performance.decoder
- Charset decoder for converting file bytes to charactersallocateDirect
- whether buffers should be allocated withByteBuffer.allocateDirect(int)
- Throws:
IllegalArgumentException
- if cache percent is out of range.IOException
- if an error occurs reading the supplied file
-
-
Method Detail
-
seek
protected void seek(long offset)
Description copied from class:AbstractFileWordList
Positions the read head of the backing file at the given byte offset.- Specified by:
seek
in classAbstractFileWordList
- Parameters:
offset
- byte offset into file.
-
buffer
protected ByteBuffer buffer()
Description copied from class:AbstractFileWordList
Returns the buffer providing the backing file data.- Specified by:
buffer
in classAbstractFileWordList
- Returns:
- Buffer around backing file.
-
fill
protected void fill()
Description copied from class:AbstractFileWordList
Fills the buffer from the backing file. This method may be a no-op if the buffer contains all file contents.- Specified by:
fill
in classAbstractFileWordList
-
-