Skip to content

Commit 58ab3d1

Browse files
committed
Add InetAddressAdapter for serialization of all InetAddress variations
Perhaps adding a usage for valid IPv4 and IPv6 serialization/de-serialization, in blackbox-test, would be desired. Signed-off-by: Mechite <[email protected]>
1 parent 2091198 commit 58ab3d1

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

jsonb/src/main/java/io/avaje/jsonb/core/BasicTypeAdapters.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@
1818
import io.avaje.jsonb.*;
1919

2020
import java.lang.reflect.Type;
21-
import java.net.MalformedURLException;
22-
import java.net.URI;
23-
import java.net.URISyntaxException;
24-
import java.net.URL;
21+
import java.net.*;
2522
import java.util.*;
2623

2724
import static java.util.Objects.requireNonNull;
@@ -51,6 +48,7 @@ final class BasicTypeAdapters {
5148
if (type == UUID.class) return new UuidAdapter().nullSafe();
5249
if (type == URL.class) return new UrlAdapter().nullSafe();
5350
if (type == URI.class) return new UriAdapter().nullSafe();
51+
if (type == InetAddress.class) return new InetAddressAdapter().nullSafe();
5452
if (type == StackTraceElement.class) return new StackTraceElementAdapter().nullSafe();
5553
if (type == Object.class) return new ObjectJsonAdapter(jsonb).nullSafe();
5654
if (type == Throwable.class) return new ThrowableAdapter(jsonb).nullSafe();
@@ -117,6 +115,27 @@ public String toString() {
117115
}
118116
}
119117

118+
private static final class InetAddressAdapter implements JsonAdapter<InetAddress> {
119+
@Override
120+
public InetAddress fromJson(JsonReader reader) {
121+
try {
122+
return InetAddress.getByName(reader.readString());
123+
} catch (UnknownHostException e) {
124+
throw new JsonDataException(e);
125+
}
126+
}
127+
128+
@Override
129+
public void toJson(JsonWriter writer, InetAddress value) {
130+
writer.value(value.getHostAddress());
131+
}
132+
133+
@Override
134+
public String toString() {
135+
return "JsonAdapter(InetAddress)";
136+
}
137+
}
138+
120139
private static final class StackTraceElementAdapter implements JsonAdapter<StackTraceElement> {
121140
@Override
122141
public StackTraceElement fromJson(JsonReader reader) {

0 commit comments

Comments
 (0)