mirror of
https://github.com/OpenHFT/Chronicle-Map.git
synced 2021-09-13 01:26:12 +00:00
HCOLL-268 updated test cases
This commit is contained in:
@@ -67,6 +67,7 @@ import static java.lang.Math.max;
|
||||
import static java.lang.Thread.currentThread;
|
||||
import static java.nio.ByteBuffer.allocateDirect;
|
||||
import static net.openhft.chronicle.map.Asserts.assertNotNull;
|
||||
import static net.openhft.chronicle.map.XStreamHelper.deserialize;
|
||||
import static net.openhft.lang.MemoryUnit.*;
|
||||
|
||||
class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
@@ -671,7 +672,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
public synchronized void getAll(File toFile) throws IOException {
|
||||
final XStream xstream = new XStream(new JettisonMappedXmlDriver());
|
||||
xstream.setMode(XStream.NO_REFERENCES);
|
||||
xstream.alias("chronicle-entries", VanillaChronicleMap.EntrySet.class);
|
||||
xstream.alias("cmap", VanillaChronicleMap.EntrySet.class);
|
||||
lazyXStreamConverter().registerConverter(xstream);
|
||||
|
||||
OutputStream outputStream = new FileOutputStream(toFile);
|
||||
@@ -686,7 +687,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
public synchronized void putAll(File fromFile) throws IOException {
|
||||
final XStream xstream = new XStream(new JettisonMappedXmlDriver());
|
||||
xstream.setMode(XStream.NO_REFERENCES);
|
||||
xstream.alias("chronicle-entries", VanillaChronicleMap.EntrySet.class);
|
||||
xstream.alias("cmap", VanillaChronicleMap.EntrySet.class);
|
||||
|
||||
// ideally we will use java serialization if we can
|
||||
lazyXStreamConverter().registerConverter(xstream);
|
||||
@@ -817,7 +818,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
} else if (EntrySet.class
|
||||
.isAssignableFrom(o.getClass())) {
|
||||
for (Entry e : (EntrySet) o) {
|
||||
writer.startNode("chronicle-entry");
|
||||
writer.startNode("entry");
|
||||
marshallingContext.convertAnother(e);
|
||||
writer.endNode();
|
||||
}
|
||||
@@ -951,13 +952,13 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
final String nodeName = reader.getNodeName();
|
||||
|
||||
switch (nodeName) {
|
||||
case "chronicle-entries":
|
||||
case "cmap":
|
||||
|
||||
while (reader.hasMoreChildren()) {
|
||||
reader.moveDown();
|
||||
final String nodeName0 = reader.getNodeName();
|
||||
|
||||
if (!nodeName0.equals("chronicle-entry"))
|
||||
if (!nodeName0.equals("entry"))
|
||||
throw new ConversionException("unable to convert node " +
|
||||
"named=" + nodeName0);
|
||||
final K k;
|
||||
@@ -966,17 +967,12 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
|
||||
reader.moveDown();
|
||||
{
|
||||
|
||||
String type = reader.getNodeName();
|
||||
Class o = XStreamHelper.forName(type);
|
||||
k = (K) unmarshallingContext.convertAnother(null, o);
|
||||
k = (K) deserialize(unmarshallingContext, reader);
|
||||
}
|
||||
reader.moveUp();
|
||||
reader.moveDown();
|
||||
{
|
||||
String type = reader.getNodeName();
|
||||
Class o = XStreamHelper.forName(type);
|
||||
v = (V) unmarshallingContext.convertAnother(null, o);
|
||||
v = (V) deserialize(unmarshallingContext, reader);
|
||||
}
|
||||
reader.moveUp();
|
||||
|
||||
@@ -996,7 +992,6 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
xstream.registerConverter(converter);
|
||||
|
||||
@@ -17,21 +17,50 @@
|
||||
package net.openhft.chronicle.map;
|
||||
|
||||
import com.thoughtworks.xstream.converters.ConversionException;
|
||||
import com.thoughtworks.xstream.converters.UnmarshallingContext;
|
||||
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
|
||||
import net.openhft.lang.model.DataValueClasses;
|
||||
import net.openhft.lang.values.StringValue;
|
||||
|
||||
import java.beans.BeanInfo;
|
||||
import java.beans.Introspector;
|
||||
import java.beans.PropertyDescriptor;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collections;
|
||||
|
||||
/**
|
||||
* Created by Rob on 18/12/14.
|
||||
*/
|
||||
class XStreamHelper {
|
||||
|
||||
|
||||
static Object deserialize(UnmarshallingContext unmarshallingContext, HierarchicalStreamReader
|
||||
reader) {
|
||||
String type = reader.getNodeName();
|
||||
|
||||
switch (type) {
|
||||
|
||||
case "java.util.Collections$EmptySet":
|
||||
return Collections.EMPTY_SET;
|
||||
|
||||
case "java.util.Collections$EmptyList":
|
||||
return Collections.EMPTY_LIST;
|
||||
|
||||
case "java.util.Collections$EmptyMap":
|
||||
case "java.util.Collections.EmptyMap":
|
||||
return Collections.EMPTY_MAP;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Class o = XStreamHelper.forName(type);
|
||||
return unmarshallingContext.convertAnother(null, o);
|
||||
}
|
||||
|
||||
static Class forName(String type) {
|
||||
|
||||
|
||||
boolean isNative = type.endsWith("$$Native");
|
||||
if (!isNative && !type.endsWith("$$Heap")) {
|
||||
try {
|
||||
@@ -81,6 +110,12 @@ class XStreamHelper {
|
||||
final String value = reader.getValue();
|
||||
Class<?> parameterType = p.getPropertyType();
|
||||
|
||||
|
||||
if (StringValue.class.isAssignableFrom(o.getClass())) {
|
||||
((StringValue) o).setValue(value);
|
||||
return o;
|
||||
}
|
||||
|
||||
if (parameterType.isPrimitive()) {
|
||||
|
||||
// convert the primitive to their boxed type
|
||||
@@ -115,4 +150,6 @@ class XStreamHelper {
|
||||
throw new ConversionException("setValue(..) method not found in class=" + aClass
|
||||
.getCanonicalName());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user