Repository: johnzon Updated Branches: refs/heads/master 4ed03a977 -> 0e418b490
JOHNZON-102 cleaning CompositeDecoratedType usage to avoid coding errors Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/0e418b49 Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/0e418b49 Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/0e418b49 Branch: refs/heads/master Commit: 0e418b490f4252a82c4dd58d376c5af8dbd68126 Parents: 4ed03a9 Author: rmannibucau <[email protected]> Authored: Fri Jan 27 18:58:53 2017 +0100 Committer: rmannibucau <[email protected]> Committed: Fri Jan 27 18:58:53 2017 +0100 ---------------------------------------------------------------------- .../mapper/access/FieldAndMethodAccessMode.java | 36 ++++++++------------ 1 file changed, 15 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/0e418b49/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java ---------------------------------------------------------------------- diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java index 607bf2d..c61ead7 100644 --- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java +++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java @@ -184,14 +184,14 @@ public class FieldAndMethodAccessMode extends BaseAccessMode { private Class<?> toType(final Type type) { return Class.class.isInstance(type) ? Class.class.cast(type) : (ParameterizedType.class.isInstance(type) ? toType(ParameterizedType.class.cast(type).getRawType()) : - Object.class /*fallback*/); + Object.class /*fallback*/); } - public static abstract class CompositeDecoratedType implements DecoratedType { - protected final DecoratedType type1; - private final DecoratedType type2; + public static abstract class CompositeDecoratedType<T extends DecoratedType> implements DecoratedType { + protected final T type1; + protected final T type2; - private CompositeDecoratedType(final DecoratedType type1, final DecoratedType type2) { + private CompositeDecoratedType(final T type1, final T type2) { this.type1 = type1; this.type2 = type2; } @@ -233,43 +233,37 @@ public class FieldAndMethodAccessMode extends BaseAccessMode { } } - public static final class CompositeReader extends CompositeDecoratedType implements Reader { - private final Reader reader; - - private CompositeReader(final Reader type1, final DecoratedType type2) { + public static final class CompositeReader extends CompositeDecoratedType<Reader> implements Reader { + private CompositeReader(final Reader type1, final Reader type2) { super(type1, type2); - reader = type1; } @Override public Object read(final Object instance) { - return reader.read(instance); + return type1.read(instance); } @Override public ObjectConverter.Writer<?> findObjectConverterWriter() { - final ObjectConverter.Writer<?> objectConverter = Reader.class.cast(type1).findObjectConverterWriter(); - return objectConverter == null ? reader.findObjectConverterWriter() : objectConverter; + final ObjectConverter.Writer<?> objectConverter = type2.findObjectConverterWriter(); + return objectConverter == null ? type1.findObjectConverterWriter() : objectConverter; } } - public static final class CompositeWriter extends CompositeDecoratedType implements Writer { - private final Writer writer; - - private CompositeWriter(final Writer type1, final DecoratedType type2) { + public static final class CompositeWriter extends CompositeDecoratedType<Writer> implements Writer { + private CompositeWriter(final Writer type1, final Writer type2) { super(type1, type2); - writer = type1; } @Override public void write(final Object instance, final Object value) { - writer.write(instance, value); + type1.write(instance, value); } @Override public ObjectConverter.Reader<?> findObjectConverterReader() { - final ObjectConverter.Reader<?> objectConverter = Writer.class.cast(type1).findObjectConverterReader(); - return objectConverter == null ? writer.findObjectConverterReader() : objectConverter; + final ObjectConverter.Reader<?> objectConverter = type2.findObjectConverterReader(); + return objectConverter == null ? type1.findObjectConverterReader() : objectConverter; } } }
