- Java 17 or greater is now required.
- First release using Central Portal instead of Legacy OSSRH.
- Improve internal uses of types and other code cleanups. Pull requests by Philippe Marschall. GitHub #246, #247, #248, and #249.
- When handling a deserialization exception, the decoder now avoids
throwing a
NullPointerExceptionwhen one of the constructor arguments isnull. Reported by Keith Massey. GitHub #164.
- Reader supports iterating over the whole database or within a network.
- Java 11 or greater is now required.
- This library is now a Java module.
- Messages for
DeserializationExceptionhave been improved, and the cause is included, if any. Moreover, the message provides detail about the involved types, if the exception is caused by anIllegalArgumentException.
- No changes since 2.0.0-rc2.
- Build using the
--releasecommand-line option so linking when using Java 8 works.
- Significant API changes. The
get()andgetRecord()methods now take a class parameter specifying the type of object to deserialize into. You can either deserialize into aMapor to model classes that use theMaxMindDbConstructorandMaxMindDbParameterannotations to identify the constructors and parameters to deserialize into. jackson-databindis no longer a dependency.- The
Recordclass is now namedDatabaseRecord. This is to avoid a conflict withjava.lang.Recordin Java 14.
- IMPORTANT: Java 8 is now required. If you need Java 7 support, please continue using 1.3.1 or earlier.
- The decoder will now throw an
InvalidDatabaseExceptionon an invalid control byte in the data section rather than anArrayIndexOutOfBoundsException. Reported by Edwin Delgado H. GitHub #68. - In order to improve performance when lookups are done from multiple
threads, a use of
synchronizedhas been removed. GitHub #65 & #69. jackson-databindhas been upgraded to 2.11.0.
- Correctly decode strings that are between 157 and 288 bytes long. 1.3.0
introduced a regression when decoding these due to using a signed
byteas an unsigned value. Reported by Dongmin Yu. GitHub #181 in maxmind/GeoIP2-java. - Update
jackson-databinddependency.
- IMPORTANT: Java 7 is now required. If you need Java 6 support, please continue using 1.2.2 or earlier.
- The method
getRecordwas added tocom.maxmind.db.Reader. This method returns acom.maxmind.db.Recordobject that includes the data for the record as well as the network associated with the record.
- Remove the version range. As of today,
jackson-databindis no longer resolved correctly when a range is used. GitHub #28.
- Specify a hard minimum dependency for
jackson-databind. This API will not work with versions earlier than 2.7.0, and Maven's nearest-first resolution rule often pulled in older versions.
JsonNodecontainers returned by theget(ip)are now backed by unmodifiable collections. Any mutation done to them will fail with anUnsupportedOperationExceptionexception. This allows safe caching of the nodes to be done without doing a deep copy of the cached data. Pull request by Viktor Szathmáry. GitHub #24.
- The reader now supports pluggable caching of the decoded data. By default,
no caching is performed. Please see the
README.mdfile or the API docs for information on how to enable caching. Pull requests by Viktor Szathmáry. GitHub #21. - This release also includes several additional performance enhancements as well as code cleanup from Viktor Szathmáry. GitHub #18, #19, #20, #22,and #23.
- Several optimizations have been made to reduce allocations when decoding a record. Pull requests by Viktor Szathmáry. GitHub #16 & #17.
- First production release.
- Made
com.maxmind.db.Metadatapublic and added public getters for most of the interesting metadata. This is accessible through thegetMetadata()method on aReaderobject.
- Previously the Reader would hold onto the underlying file and FileChannel, not closing them until the Reader was closed. This was unnecessary; they are now closed immediately after they are used. Fix by Andrew Snare; GitHub issue #7.
- The Reader now discards the reference to the underlying buffer when
close()is called. This is done to help ensure that the buffer is garbage collected sooner, which may mitigate file locking issues that some users have experienced on Windows when updating the database. Patch by Andrew Snare; GitHub issue #8.
- A potential (small) resource leak when using this library with a thread pool was fixed.
- Added tests and documentation for multi-threaded use.
- An
InputStreamconstructor was added to theReaderclass. This reads the stream into memory as if it was usingFileMode.MEMORY. Patch by Matthew Daniel. - The source code is now attached during packaging. Patch by Matthew Daniel.
- The artifact ID was changed to
maxmind-dbin order to increase naming consistency.
- IMPORTANT: The package name was changed to
com.maxmind.db. TheMaxMindDbReaderclass was renamed toReader. - Improved error handling and test coverage.
- Performance improvements.
- The reader and database format now uses IEEE 754 doubles and floats.
- FileMode.IN_MEMORY was renamed to FileMode.MEMORY.
- Cache Type enum values array.
- Initial release