Skip to content

Latest commit

 

History

History
204 lines (167 loc) · 9.1 KB

File metadata and controls

204 lines (167 loc) · 9.1 KB

Changelog

All notable changes to this project are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

7.0.0 - 2026-07-13

Changed

  • Breaking: migrate from Jackson 2 to Jackson 3 (tools.jackson.core:jackson-databind 3.1.2). Model annotations keep the stable com.fasterxml.jackson.annotation package, so the data classes remain readable by both Jackson generations, but parsing now uses Jackson 3: the DefaultRequestHandler constructors accept a tools.jackson.databind.ObjectMapper and JsonProcessingException is replaced by the unchecked tools.jackson.core.JacksonException.

6.1.0 - 2026-07-02

Added

  • Asynchronous API: lookupAsync/parseAsync methods on IpregistryClient return a CompletableFuture and are backed by a virtual-thread-per-task executor by default. The executor is configurable via IpregistryConfig#executor (a caller-provided executor is not shut down by the client).
  • Support for a caller-provided CloseableHttpClient via new IpregistryClient and DefaultRequestHandler constructors, allowing full control over connection pooling, proxying, TLS, and metrics. An injected client is not closed by the Ipregistry client (the caller retains ownership).
  • Typed error codes: ApiException#getErrorCode() (and Error#getErrorCode()) now return a strongly typed ErrorCode enum in addition to the raw string code, allowing callers to branch on error conditions without string matching. Unrecognized codes return null while the raw code remains available.
  • Automatic retries with exponential backoff for transient network errors and 5xx server responses, configurable via IpregistryConfig (retryMaxAttempts, retryInterval, retryOnServerError, retryOnTooManyRequests). Retries on 429 Too Many Requests are disabled by default and honor the Retry-After header when enabled.
  • IpregistryClient now implements Closeable to release the underlying HTTP connection pool.

Fixed

  • Escape JSON request bodies so that user-agent and IP values containing special characters (quotes, backslashes, control characters) no longer produce malformed requests.
  • Skip the remote API call in batch lookups when every requested IP is already served from the cache.
  • Bypass the cache for origin (requester) IP lookups to avoid returning data associated with a different IP.
  • Replace deprecated Guava CacheBuilder#expireAfterWrite(long, TimeUnit) usage with the Duration variant.

Changed

  • Upgrade dependencies: Jackson 2.22.0, Guava 33.6.0-jre, Apache HttpClient5 5.6.2, MaxMind DB 4.1.0, JUnit 6.1.1, Mockito 5.23.0, REST-assured 6.0.0, Lombok 1.18.46, and the Gradle wrapper to 9.6.1.

6.0.0 - 2025-11-26

Changed

  • BREAKING: Require Java 25+.

5.0.1 - 2025-07-22

Minor release to fix an issue in the new automated workflow.

5.0.0 - 2025-07-22

Changed

  • BREAKING: Require Java 21+.
  • Fixed deprecated Gradle configurations.

Improved

  • Added professional, comprehensive javadoc documentation to all API model classes.

Removed

  • Remove deprecated IpregistryConfig#apiUrl. Use IpregistryConfig#baseUrl instead.

4.0.0 - 2023-05-08

Added

  • Add new IpregistryGeolocationDataset class for easy loading and query an Ipregistry Geolocation dataset offline.

Changed

  • Updated required Java version to Java 11 from Java 8.

3.7.0 - 2022-06-10

Added

  • Add new parse method to IpregistryClient to parse one or more user-agent values.

3.6.0 - 2022-04-15

Added

  • New vpn field in security object.

3.5.0 - 2021-12-21

Added

  • New relay field in security object.

Deprecated

  • Deprecate IpregistryConfigBuilder.apiUrl in favor of IpregistryConfigBuilder.baseUrl.

3.4.0 - 2021-11-07

Added

  • Support for usage in native images with GraalVM.

3.3.0 - 2021-10-26

Added

  • IpInfo responses has a new company field.
  • The enum ConnectionType includes a new value of INACTIVE.
  • The class DefaultRequestHandler accepts a custom ObjectMapper.

Changed

  • A single ObjectMapper instance is created and reused in DefaultRequestHandler.
  • The API key is no longer passed as a query parameter but as a header when a request is sent.

3.2.1 - 2021-07-26

Changed

  • Restore missing getters in Region model class.

3.2.0 - 2021-07-26

Added

  • Add setters to all model classes.
  • New connection type GOVERNMENT.

Changed

  • Improve utility method to detect bots/crawlers/spiders based on user-agent value.
  • Parsing of unknown connection type values fallbacks to BUSINESS.
  • Upgrade dependencies.

Removed

  • Merge connection type CDN with HOSTING.

3.1.2 - 2021-04-08

Changed

  • Upgrade dependencies

3.1.1 - 2020-09-03

Changed

  • Compatibility level is set to Java 8.

Fixed

  • Fix broken lookup when InetAddress is used as input parameter.

3.1.0 - 2020-07-05

Changed

  • Upgrade dependencies.
  • Increase default timeout values to 15s from 2s.

3.0.0 - 2020-04-16

Changed

  • [BREAKING] Rename DefaultCache to InMemoryCache.
  • Upgrade dependencies

Fixed

  • Fix a ClassCastException that was raised when a valid remote resource is used as lookup input (e.g. robots.txt).

2.3.0 - 2020-01-12

Added

  • New field connection.route in response model.
  • Introduce new value cdn for field connection.type.

Fixed

  • Change type Integer to Long for Autonomous System number associated with field connection.asn.

2.2.0 - 2019-10-27

Added

  • New currency fields name_native and plural_native.

Changed

2.1.1 - 2019-08-08

Fixed

  • Lombok warnings (equals not calling super and builder ignoring default value).

2.1.0 - 2019-08-08

Added

  • Error code FORBIDDEN_IP_ORIGIN.
  • Carrier class and field.
  • Connection domain field.
  • Connection type field and enum.
  • Security is_cloud_provider field.

Changed

  • Implement equals/hashCode in all IpInfo subfield classes.
  • Default cache implementation will expire entries older than 24 hours by default.
  • Allow passing any int value to expireAfter and maximumSize parameters of DefaultCache constructor.

2.0.0 - 2019-07-19

Added

  • Changelog file.
  • Manifest file with build information on generated JAR.
  • Missing file headers.
  • Unknown IP type.
  • Utility class IpregistryOptions.

Changed

  • Rename EmptyCache class to NoCache.
  • Rename IpData* classes to IpInfo*.
  • Rename Ipregistry class to IpregistryClient.
  • Use all lookup parameters (including options) to cache results.

Removed

  • Remove docs/ folder.

Fixed

  • Fix NPE with origin lookup.

1.1.0 - 2019-07-03

  • Increased version number for testing purposes.

1.0.0 - 2019-07-03

  • First public release.