diff --git a/.gitignore b/.gitignore
index 828d6af0..3f1c943f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@
*.ear
*.sw?
*.classpath
+.claude
.gh-pages
.idea
.pmd
@@ -14,6 +15,7 @@
bin
doc
hs_err*.log
+pom.xml.versionsBackup
target
/sample/GeoLite2-City.mmdb
/sample/run.sh
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ddc15ff..8cbb2519 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,13 @@
CHANGELOG
=========
+4.0.1 (2025-12-02)
+------------------
+
+* `DecodedValue` is now a public class again, allowing custom `NodeCache`
+ implementations to be created. The class was inadvertently made
+ package-private in 4.0.0. Reported by Alexandros Leventakis. GitHub #321.
+
4.0.0 (2025-11-10)
------------------
diff --git a/README.md b/README.md
index 7197ef5c..707f5a7a 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ To do this, add the dependency to your pom.xml:
com.maxmind.db
maxmind-db
- 4.0.0
+ 4.0.1
```
@@ -29,7 +29,7 @@ repositories {
mavenCentral()
}
dependencies {
- compile 'com.maxmind.db:maxmind-db:4.0.0'
+ compile 'com.maxmind.db:maxmind-db:4.0.1'
}
```
diff --git a/pom.xml b/pom.xml
index 57f4494e..6b3de5ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.maxmind.db
maxmind-db
- 4.0.0
+ 4.0.1
jar
MaxMind DB Reader
Reader for MaxMind DB
diff --git a/src/main/java/com/maxmind/db/DecodedValue.java b/src/main/java/com/maxmind/db/DecodedValue.java
index c3174f69..5440a684 100644
--- a/src/main/java/com/maxmind/db/DecodedValue.java
+++ b/src/main/java/com/maxmind/db/DecodedValue.java
@@ -1,9 +1,16 @@
package com.maxmind.db;
/**
- * {@code DecodedValue} is a wrapper for the decoded value and the number of bytes used
- * to decode it.
- *
- * @param value the decoded value
+ * {@code DecodedValue} is a wrapper for the decoded value.
*/
-record DecodedValue(Object value) {}
+public final class DecodedValue {
+ final Object value;
+
+ DecodedValue(Object value) {
+ this.value = value;
+ }
+
+ Object value() {
+ return value;
+ }
+}