Skip to content

Releases: maxmind/GeoIP2-java

5.0.2

08 Dec 16:14
Immutable release. Only release title and notes can be modified.
f2d48a5

Choose a tag to compare

  • Fixed an issue where decoding IpRiskResponse from the IP Risk database would
    fail when the ip_risk field was not present in the database record. The
    ipRisk field now defaults to 0.0 when not present. A value of 0.0 indicates
    that the risk score was not set in the database. In a future major release,
    this field may be changed to a nullable Double to better distinguish between
    "no data" and "zero risk". Reported by Fabrice Bacchella. GitHub #644.
  • Updated maxmind-db dependency to 4.0.2. This fixes a bug where enums with
    @MaxMindDbCreator would throw ConstructorNotFoundException when the data
    was stored via a pointer in the database, commonly occurring with deduplicated
    data in larger databases. It also improves error messages when constructor
    invocation fails. Reported by Fabrice Bacchella. GitHub #644.

5.0.1

02 Dec 18:40
Immutable release. Only release title and notes can be modified.
ed9b34b

Choose a tag to compare

  • Updated maxmind-db dependency to 4.0.1. This makes DecodedValue public
    again, allowing custom NodeCache implementations to be created. GitHub
    #636.

5.0.0

20 Nov 17:27
de16459

Choose a tag to compare

  • BREAKING: All model and record classes have been converted to Java records.
    This provides a more modern, immutable data model with automatic implementations
    of equals(), hashCode(), and toString(). The abstract classes
    AbstractRecord, AbstractNamedRecord, AbstractResponse,
    AbstractCountryResponse, AbstractCityResponse, and IpBaseResponse have
    been removed. Record components can be accessed using the new accessor methods
    (e.g., city(), country(), location()). The traditional getter methods
    (e.g., getCity(), getCountry(), getLocation()) are still available but
    have been deprecated and will be removed in version 6.0.0.
  • BREAKING: RepresentedCountry is now a separate record type instead of
    extending Country. It shares the same fields as Country but adds a type
    field.
  • The deprecation notices for IP Risk database support have been removed.
    IP Risk database support will continue to be maintained.
  • A new Anonymizer record has been added to the InsightsResponse model. This
    record consolidates anonymizer information including VPN confidence scores,
    network last seen dates, and provider names. It includes the following fields:
    confidence, isAnonymous, isAnonymousVpn, isHostingProvider,
    isPublicProxy, isResidentialProxy, isTorExitNode, networkLastSeen, and
    providerName.
  • A new ipRiskSnapshot field has been added to the Traits record. This field
    provides a static risk score (ranging from 0.01 to 99) associated with the IP
    address. This is available from the GeoIP2 Precision Insights web service.
  • The anonymous IP flags in the Traits record (isAnonymous, isAnonymousVpn,
    isHostingProvider, isPublicProxy, isResidentialProxy, and isTorExitNode)
    have been deprecated in favor of using the new Anonymizer record in the
    InsightsResponse. These fields will continue to work but will be removed in
    version 6.0.0.
  • BREAKING: The deprecated WebServiceClient.Builder methods
    connectTimeout(int), readTimeout(int), and proxy(Proxy) have been
    removed. Use connectTimeout(Duration), requestTimeout(Duration), and
    proxy(ProxySelector) respectively.
  • BREAKING: The deprecated WebServiceClient.close() method has been
    removed along with the Closeable interface implementation.
  • BREAKING: The deprecated getUrl() methods in HttpException and
    InvalidRequestException have been removed. Use getUri() instead.
  • BREAKING: The deprecated Traits constructors and methods
    isAnonymousProxy() and isSatelliteProvider() have been removed. Use the
    GeoIP2 Anonymous IP database for anonymous proxy detection instead.
  • BREAKING: The deprecated Location.getMetroCode() method has been
    removed. Metro code values are no longer maintained.
  • BREAKING: Java 11 support has been dropped. Java 17 or later is now required.
  • BREAKING: Removed explicit serialVersionUID from all exception classes.
    Java will auto-generate serialVersionUID when needed, following modern practices.
  • BREAKING: Removed no longer necessary JacksonInject annotations for
    ip_address, network, and traits from several classes. The
    JsonInjector class was removed.
  • Public getter methods in non-record classes (e.g., DatabaseReader,
    exception classes) have been renamed to follow the same naming convention as
    records (e.g., metadata() instead of getMetadata()). The old getter
    methods are still available but have been deprecated and will be removed in
    version 6.0.0.

4.4.0

28 Aug 14:38
e96a784

Choose a tag to compare

  • WebServiceClient.Builder now has an httpClient() method to allow
    passing in a custom HttpClient.

4.3.1

28 May 21:27
3fc3ac5

Choose a tag to compare

  • First release using Central Portal instead of Legacy OSSRH.
  • Dependency updates.

4.3.0

05 May 19:50
2c404af

Choose a tag to compare

  • Support for the GeoIP Anonymous Plus database has been added. To do a
    lookup in this database, use the anonymousPlus method on
    DatabaseReader.
  • getMetroCode in the Location model has been deprecated. The code
    values are no longer being maintained.

4.2.1

20 Sep 14:31
c228c56

Choose a tag to compare

  • Dependency updates:
    • maxmind-db was upgraded to 3.1.1.
    • Jackson was upgraded to 2.17.2.
  • Added missing API documentation.

4.2.0

05 Dec 18:51
5cecd76

Choose a tag to compare

  • A WebServiceProvider interface has been added to facilitate mocking of
    WebServiceClient. Requested by Evan Chrisinger. GitHub #359.
  • The GeoIP2 IP Risk database has been discontinued. Methods and classes
    related to it have been deprecated.
  • The fromString static method on the ConnectionType enum now has
    the JsonCreator annotation so that it is used when deserializing.
    This will prevent new additions in the future from causing a
    deserialization error.
  • The isAnycast() method was added to com.maxmind.geoip2.record.Traits.
    This returns true if the IP address belongs to an anycast
    network
    . This is available for the
    GeoIP2 Country, City Plus, and Insights web services and the GeoIP2 Country,
    City, and Enterprise databases.

2.17.0

21 Nov 18:10
a472a67

Choose a tag to compare

  • Updated model classes with non-breaking changes from the 4.2.0
    branch. In particular, this fixes an issue deserializing the
    new connection_type from the GeoIP2 web services.
  • Updated Jackson and maxmind-db dependencies.

4.1.0

28 Jul 14:39
e088488

Choose a tag to compare

  • Added SATELLITE to the ConnectionType enum.