From d4567bcd83b1125e6e97bc03fd6b6b0d74890577 Mon Sep 17 00:00:00 2001 From: leventov Date: Sat, 4 Oct 2014 09:03:16 +0400 Subject: [PATCH] HCOLL-150 fixed a bug in ByteableMarshaller --- .../impl/ByteableMarshaller.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/openhft/chronicle/map/serialization/impl/ByteableMarshaller.java b/src/main/java/net/openhft/chronicle/map/serialization/impl/ByteableMarshaller.java index 1f5efd1f7..2355662ea 100644 --- a/src/main/java/net/openhft/chronicle/map/serialization/impl/ByteableMarshaller.java +++ b/src/main/java/net/openhft/chronicle/map/serialization/impl/ByteableMarshaller.java @@ -36,18 +36,21 @@ public class ByteableMarshaller implements AgileBytesMarshal ObjectFactory factory) { if (factory instanceof AllocateInstanceObjectFactory) { Class allocatedClass = ((AllocateInstanceObjectFactory) factory).allocatedClass(); - return new ByteableMarshaller(allocatedClass); + return new Default(allocatedClass); } else { return new WithCustomFactory(eClass, factory); } } @NotNull - final Class tClass; - final long size; + private final Class tClass; + private long size; - ByteableMarshaller(@NotNull Class tClass) { + private ByteableMarshaller(@NotNull Class tClass) { this.tClass = tClass; + } + + void initSize() { try { size = getInstance().maxSize(); } catch (Exception e) { @@ -126,6 +129,15 @@ public class ByteableMarshaller implements AgileBytesMarshal return (E) NativeBytes.UNSAFE.allocateInstance(tClass); } + private static class Default extends ByteableMarshaller { + private static final long serialVersionUID = 0L; + + Default(@NotNull Class tClass) { + super(tClass); + initSize(); + } + } + private static class WithCustomFactory extends ByteableMarshaller { private static final long serialVersionUID = 0L; @@ -136,6 +148,7 @@ public class ByteableMarshaller implements AgileBytesMarshal @NotNull ObjectFactory factory) { super(tClass); this.factory = factory; + initSize(); } @NotNull