diff --git a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java index 870d69db4..2aacb373d 100755 --- a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java @@ -821,7 +821,7 @@ class VanillaChronicleMap, case "chronicle-key": if (kClass.getCanonicalName().startsWith("net.openhft.lang.values")) { - return to$$Native(reader, vClass); + return to$$Native(reader, vClass, true); } else { long keySize = keySizeMarshaller.readSize(buffer); ThreadLocalCopies copies = keyReaderProvider.getCopies(null); @@ -831,7 +831,7 @@ class VanillaChronicleMap, case "chronicle-value": if (vClass.getCanonicalName().startsWith("net.openhft.lang.values")) { - return to$$Native(reader, vClass); + return to$$Native(reader, vClass, false); } else { long valueSize = valueSizeMarshaller.readSize(buffer); ThreadLocalCopies copies = valueReaderProvider.getCopies(null); @@ -859,9 +859,9 @@ class VanillaChronicleMap, } else return (E) unmarshallingContext.convertAnother(null, clazz); } - private Object to$$Native(HierarchicalStreamReader reader, final Class aClass) { + private Object to$$Native(HierarchicalStreamReader reader, final Class aClass, final boolean isKey) { - Object o = DataValueClasses.newDirectInstance(aClass); + final Object o = isKey ? newKeyInstance() : newValueInstance(); try { for (Method $$nativeMethod : o.getClass().getMethods()) { if ($$nativeMethod.getName().equals("setValue") && $$nativeMethod.getParameterTypes()