From 27f0c0ab151e80970d0cbe572e7af269382b3aeb Mon Sep 17 00:00:00 2001 From: Ludovic Orban Date: Thu, 8 Dec 2016 10:57:27 +0100 Subject: [PATCH] #222 improve generics of struct decoder lambda-helper methods --- .../runnel/encoding/StructArrayEncoderFunction.java | 4 ++-- .../org/terracotta/runnel/encoding/StructEncoder.java | 8 ++++---- .../terracotta/runnel/encoding/StructEncoderFunction.java | 4 ++-- .../terracotta/runnel/StructArrayStructBuilderTest.java | 7 ++++--- .../org/terracotta/runnel/StructStructBuilderTest.java | 4 ++-- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/runnel/src/main/java/org/terracotta/runnel/encoding/StructArrayEncoderFunction.java b/runnel/src/main/java/org/terracotta/runnel/encoding/StructArrayEncoderFunction.java index cf3b077a91..aa0a87bf1f 100644 --- a/runnel/src/main/java/org/terracotta/runnel/encoding/StructArrayEncoderFunction.java +++ b/runnel/src/main/java/org/terracotta/runnel/encoding/StructArrayEncoderFunction.java @@ -18,8 +18,8 @@ /** * @author Ludovic Orban */ -public interface StructArrayEncoderFunction { +public interface StructArrayEncoderFunction> { - void encode(PrimitiveEncodingSupport encoder, T t); + void encode(P encoder, T t); } diff --git a/runnel/src/main/java/org/terracotta/runnel/encoding/StructEncoder.java b/runnel/src/main/java/org/terracotta/runnel/encoding/StructEncoder.java index d0d95c52ac..0580c6e4a6 100644 --- a/runnel/src/main/java/org/terracotta/runnel/encoding/StructEncoder.java +++ b/runnel/src/main/java/org/terracotta/runnel/encoding/StructEncoder.java @@ -123,7 +123,7 @@ public StructEncoder

byteBuffer(String name, ByteBuffer value) { return this; } - public StructEncoder

struct(String name, StructEncoderFunction function) { + public StructEncoder

struct(String name, StructEncoderFunction>> function) { StructField field = fieldSearcher.findField(name, StructField.class, null); List values = new ArrayList(); data.add(new StructDataHolder(values, field.index())); @@ -226,17 +226,17 @@ public StructArrayEncoder> structs(String name) { return new StructArrayEncoder>(values, this, ((StructField) field.subField())); } - public StructEncoder

structs(String name, T[] array, StructArrayEncoderFunction function) { + public StructEncoder

structs(String name, T[] array, StructArrayEncoderFunction>> function) { return structs(name, Arrays.asList(array), function); } - public StructEncoder

structs(String name, Iterable iterable, StructArrayEncoderFunction function) { + public StructEncoder

structs(String name, Iterable iterable, StructArrayEncoderFunction>> function) { final ArrayField field = fieldSearcher.findField(name, ArrayField.class, StructField.class); List values = new ArrayList(); data.add(new ArrayDataHolder(values, field.index())); StructArrayEncoder> subStructArrayEncoder = new StructArrayEncoder>(values, this, ((StructField) field.subField())); for (T t : iterable) { - function.encode((PrimitiveEncodingSupport) subStructArrayEncoder, t); + function.encode(subStructArrayEncoder, t); subStructArrayEncoder.next(); } subStructArrayEncoder.end(); diff --git a/runnel/src/main/java/org/terracotta/runnel/encoding/StructEncoderFunction.java b/runnel/src/main/java/org/terracotta/runnel/encoding/StructEncoderFunction.java index bf387ecd74..757d8b2194 100644 --- a/runnel/src/main/java/org/terracotta/runnel/encoding/StructEncoderFunction.java +++ b/runnel/src/main/java/org/terracotta/runnel/encoding/StructEncoderFunction.java @@ -18,8 +18,8 @@ /** * @author Ludovic Orban */ -public interface StructEncoderFunction { +public interface StructEncoderFunction

> { - void encode(StructEncoder encoder); + void encode(P encoder); } diff --git a/runnel/src/test/java/org/terracotta/runnel/StructArrayStructBuilderTest.java b/runnel/src/test/java/org/terracotta/runnel/StructArrayStructBuilderTest.java index 3b077a48af..98a91010a7 100644 --- a/runnel/src/test/java/org/terracotta/runnel/StructArrayStructBuilderTest.java +++ b/runnel/src/test/java/org/terracotta/runnel/StructArrayStructBuilderTest.java @@ -19,8 +19,9 @@ import org.junit.Test; import org.terracotta.runnel.decoding.StructArrayDecoder; import org.terracotta.runnel.decoding.StructDecoder; -import org.terracotta.runnel.encoding.PrimitiveEncodingSupport; +import org.terracotta.runnel.encoding.StructArrayEncoder; import org.terracotta.runnel.encoding.StructArrayEncoderFunction; +import org.terracotta.runnel.encoding.StructEncoder; import java.io.ByteArrayOutputStream; import java.io.PrintStream; @@ -115,9 +116,9 @@ public void testReadAll_withLambda() throws Exception { ByteBuffer bb = struct.encoder() .string("name", "joe") - .structs("mapEntry", stuff.entrySet(), new StructArrayEncoderFunction>() { + .structs("mapEntry", stuff.entrySet(), new StructArrayEncoderFunction, StructArrayEncoder>>() { @Override - public void encode(PrimitiveEncodingSupport encoder, Map.Entry entry) { + public void encode(StructArrayEncoder> encoder, Map.Entry entry) { encoder .string("key", entry.getKey()) .enm("type", Type.STRING) diff --git a/runnel/src/test/java/org/terracotta/runnel/StructStructBuilderTest.java b/runnel/src/test/java/org/terracotta/runnel/StructStructBuilderTest.java index cf5ec856ac..51d07bc77b 100644 --- a/runnel/src/test/java/org/terracotta/runnel/StructStructBuilderTest.java +++ b/runnel/src/test/java/org/terracotta/runnel/StructStructBuilderTest.java @@ -80,9 +80,9 @@ public void testReadAll() throws Exception { public void testReadAll_withLambda() throws Exception { ByteBuffer bb = struct.encoder() .string("name", "joe") - .struct("mapEntry", new StructEncoderFunction() { + .struct("mapEntry", new StructEncoderFunction>>() { @Override - public void encode(StructEncoder encoder) { + public void encode(StructEncoder> encoder) { encoder.string("key", "1") .string("value", "one"); }