Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.URI;
import java.nio.charset.Charset;
import java.util.Currency;
import java.util.IdentityHashMap;
Expand Down Expand Up @@ -592,6 +593,23 @@ public T read(MemoryBuffer buffer) {
}
}

public static final class URISerializer extends Serializer<java.net.URI> {

public URISerializer(Fury fury) {
super(fury, URI.class);
}

@Override
public void write(MemoryBuffer buffer, final URI uri) {
fury.writeString(buffer, uri.toString());
}

@Override
public URI read(MemoryBuffer buffer) {
return URI.create(fury.readString(buffer));
}
}

public static final class ClassSerializer extends Serializer<Class> {
private static final byte USE_CLASS_ID = 0;
private static final byte USE_CLASSNAME = 1;
Expand Down Expand Up @@ -648,5 +666,6 @@ public static void registerDefaultSerializers(Fury fury) {
fury.registerSerializer(AtomicLong.class, new AtomicLongSerializer(fury));
fury.registerSerializer(AtomicReference.class, new AtomicReferenceSerializer(fury));
fury.registerSerializer(Currency.class, new CurrencySerializer(fury));
fury.registerSerializer(URI.class, new URISerializer(fury));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
import io.fury.memory.MemoryBuffer;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
import java.util.Currency;
import java.util.concurrent.atomic.AtomicBoolean;
Expand Down Expand Up @@ -158,4 +160,11 @@ public void testCharset() {
Assert.assertEquals(
serDeCheckSerializer(fury, Charset.defaultCharset(), "Charset"), Charset.defaultCharset());
}

@Test
public void testURI() throws URISyntaxException {
Fury fury = Fury.builder().withLanguage(Language.JAVA).build();
Assert.assertEquals(serDeCheckSerializer(fury, new URI(""), "URI"), new URI(""));
Assert.assertEquals(serDeCheckSerializer(fury, new URI("abc"), "URI"), new URI("abc"));
}
}