mirror of
https://github.com/OpenHFT/Chronicle-Map.git
synced 2021-09-13 01:26:12 +00:00
HCOLL-248 changed the ChronicleMap code and defaults regarding CharSequences/StringBuilders to fit CHMUseCases
This commit is contained in:
+23
-5
@@ -33,7 +33,16 @@ public final class CharSequenceReader<S extends CharSequence>
|
||||
implements BytesReader<S>, StatefulCopyable<CharSequenceReader<S>> {
|
||||
private static final long serialVersionUID = 0L;
|
||||
|
||||
private enum NoInterning implements CharSequenceInterner<String> {
|
||||
private enum NoInterningIdentity implements CharSequenceInterner<CharSequence> {
|
||||
INSTANCE;
|
||||
|
||||
@Override
|
||||
public CharSequence intern(CharSequence cs) {
|
||||
return cs;
|
||||
}
|
||||
}
|
||||
|
||||
private enum NoInterningToString implements CharSequenceInterner<String> {
|
||||
INSTANCE;
|
||||
@Override
|
||||
public String intern(CharSequence cs) {
|
||||
@@ -41,13 +50,20 @@ public final class CharSequenceReader<S extends CharSequence>
|
||||
}
|
||||
}
|
||||
|
||||
private static final CharSequenceReader<String> DEFAULT_READER =
|
||||
new CharSequenceReader<String>(NoInterning.INSTANCE, NoInterning.INSTANCE);
|
||||
private static final CharSequenceReader<String> STRING_READER =
|
||||
new CharSequenceReader<String>(NoInterningToString.INSTANCE, NoInterningToString.INSTANCE);
|
||||
|
||||
public static CharSequenceReader<String> of() {
|
||||
private static final CharSequenceReader DEFAULT_READER =
|
||||
new CharSequenceReader(NoInterningIdentity.INSTANCE, NoInterningIdentity.INSTANCE);
|
||||
|
||||
public static CharSequenceReader of() {
|
||||
return DEFAULT_READER;
|
||||
}
|
||||
|
||||
public static CharSequenceReader<String> ofString() {
|
||||
return STRING_READER;
|
||||
}
|
||||
|
||||
public static <S extends CharSequence, I extends CharSequenceInterner<S> & Serializable>
|
||||
CharSequenceReader<S> of(@NotNull I interner, @NotNull Serializable stateIdentity) {
|
||||
return new CharSequenceReader<S>(interner, stateIdentity);
|
||||
@@ -111,7 +127,9 @@ public final class CharSequenceReader<S extends CharSequence>
|
||||
}
|
||||
|
||||
private Object readResolve() throws ObjectStreamException {
|
||||
if (interner == NoInterning.INSTANCE)
|
||||
if (interner == NoInterningToString.INSTANCE)
|
||||
return STRING_READER;
|
||||
if (interner == NoInterningIdentity.INSTANCE)
|
||||
return DEFAULT_READER;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -104,6 +104,8 @@ public final class ChronicleMapBuilder<K, V> implements Cloneable,
|
||||
LoggerFactory.getLogger(ChronicleMapBuilder.class.getName());
|
||||
public static final long DEFAULT_STATELESS_CLIENT_TIMEOUT = TimeUnit.SECONDS.toMillis(10);
|
||||
|
||||
private static final StringBuilder EMTRY_STRING_BUILDER = new StringBuilder();
|
||||
|
||||
SerializationBuilder<K> keyBuilder;
|
||||
SerializationBuilder<V> valueBuilder;
|
||||
|
||||
@@ -148,6 +150,8 @@ public final class ChronicleMapBuilder<K, V> implements Cloneable,
|
||||
|
||||
if (CharSequence.class == valueClass)
|
||||
defaultValue = (V) "";
|
||||
if (StringBuilder.class == valueClass)
|
||||
defaultValue = (V) EMTRY_STRING_BUILDER;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -127,9 +127,12 @@ final class SerializationBuilder<E> implements Cloneable, Serializable {
|
||||
sizeMarshaller(byteableMarshaller);
|
||||
reader(byteableMarshaller);
|
||||
interop(byteableMarshaller);
|
||||
} else if (eClass == CharSequence.class || eClass == String.class) {
|
||||
} else if (eClass == CharSequence.class || eClass == StringBuilder.class) {
|
||||
reader((BytesReader<E>) CharSequenceReader.of());
|
||||
writer((BytesWriter<E>) CharSequenceWriter.instance());
|
||||
} else if (eClass == String.class) {
|
||||
reader((BytesReader<E>) CharSequenceReader.ofString());
|
||||
writer((BytesWriter<E>) CharSequenceWriter.instance());
|
||||
} else if (eClass == Void.class) {
|
||||
sizeMarshaller(VoidMarshaller.INSTANCE);
|
||||
reader((BytesReader<E>) VoidMarshaller.INSTANCE);
|
||||
|
||||
@@ -652,7 +652,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
|
||||
@Override
|
||||
public V newValueInstance() {
|
||||
if (vClass.equals(CharSequence.class) || vClass.equals(StringBuilder.class)) {
|
||||
if (vClass == CharSequence.class || vClass == StringBuilder.class) {
|
||||
return (V) new StringBuilder();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user