diff --git a/src/main/java/net/openhft/chronicle/hash/serialization/internal/DataValueBytesMarshallers.java b/src/main/java/net/openhft/chronicle/hash/serialization/internal/DataValueBytesMarshallers.java old mode 100644 new mode 100755 index 6c04d5d8b..cbee59339 --- a/src/main/java/net/openhft/chronicle/hash/serialization/internal/DataValueBytesMarshallers.java +++ b/src/main/java/net/openhft/chronicle/hash/serialization/internal/DataValueBytesMarshallers.java @@ -47,6 +47,8 @@ public final class DataValueBytesMarshallers { new ConcurrentHashMap<>(); public static BytesReader acquireBytesReader(Class tClass) { + if (tClass == CharSequence.class) + throw new IllegalArgumentException("CharSequence not supported as a Data Value model"); Class readerClass = acquireReaderClass(tClass); try { Field instanceField = readerClass.getDeclaredField("INSTANCE"); diff --git a/src/main/java/net/openhft/chronicle/hash/serialization/internal/SerializationBuilder.java b/src/main/java/net/openhft/chronicle/hash/serialization/internal/SerializationBuilder.java old mode 100644 new mode 100755 index e06c7975a..f2bd09d61 --- a/src/main/java/net/openhft/chronicle/hash/serialization/internal/SerializationBuilder.java +++ b/src/main/java/net/openhft/chronicle/hash/serialization/internal/SerializationBuilder.java @@ -41,9 +41,9 @@ import java.nio.ByteBuffer; import java.util.Arrays; import java.util.List; +import static net.openhft.chronicle.hash.impl.util.Objects.hash; import static net.openhft.chronicle.hash.serialization.internal.SizeMarshallers.constant; import static net.openhft.chronicle.hash.serialization.internal.SizeMarshallers.stopBit; -import static net.openhft.chronicle.hash.impl.util.Objects.hash; public final class SerializationBuilder implements Cloneable, Serializable { private static final long serialVersionUID = 0L; @@ -99,7 +99,7 @@ public final class SerializationBuilder implements Cloneable, Serializable { private void configureByDefault(Class eClass, Role role) { instancesAreMutable = instancesAreMutable(eClass); - if (eClass.isInterface()) { + if (eClass.isInterface() && eClass != CharSequence.class) { try { BytesReader reader = DataValueBytesMarshallers.acquireBytesReader(eClass); BytesWriter writer = DataValueBytesMarshallers.acquireBytesWriter(eClass); @@ -113,7 +113,7 @@ public final class SerializationBuilder implements Cloneable, Serializable { sizeMarshaller(constant((long) size)); serializesGeneratedClasses = true; return; - } catch (Exception e) { + } catch (IllegalArgumentException e) { try { eClass = DataValueClasses.directClassFor(eClass); serializesGeneratedClasses = true;