From a7580a105016c44b64af2e3ca31c3a2d3d1d3928 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 6 Sep 2021 17:00:39 +0200 Subject: [PATCH] [jOOQ/jOOQ#11894] Replace AbstractConverter by Converter.of() --- jOOQ/src/main/java/org/jooq/Converters.java | 36 ++++--------------- .../java/org/jooq/impl/DefaultBinding.java | 17 +++------ .../jooq/impl/DefaultConverterProvider.java | 16 +++------ .../java/org/jooq/impl/XMLasDOMBinding.java | 22 ++++-------- 4 files changed, 21 insertions(+), 70 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Converters.java b/jOOQ/src/main/java/org/jooq/Converters.java index 45e28780e2..a41d55fb69 100644 --- a/jOOQ/src/main/java/org/jooq/Converters.java +++ b/jOOQ/src/main/java/org/jooq/Converters.java @@ -128,40 +128,16 @@ public class Converters extends AbstractConverter { if (converter instanceof IdentityConverter) return (Converter) converter; else - return new AbstractConverter(converter.toType(), converter.fromType()) { - - @Override - public T from(U u) { - return converter.to(u); - } - - @Override - public U to(T t) { - return converter.from(t); - } - - @Override - public String toString() { - return "InverseConverter [ " + fromType().getName() + " -> " + toType().getName() + " ]"; - } - }; + return Converter.of(converter.toType(), converter.fromType(), converter::to, converter::from); } public static Converter forArrays(final Converter converter) { - return new AbstractConverter(arrayType(converter.fromType()), arrayType(converter.toType())) { + final Converter inverse = inverse(converter); - private final Converter inverse = Converters.inverse(converter); - - @Override - public U[] from(T[] t) { - return convertArray(t, converter); - } - - @Override - public T[] to(U[] u) { - return convertArray(u, inverse); - } - }; + return Converter.of(arrayType(converter.fromType()), arrayType(converter.toType()), + t -> convertArray(t, converter), + u -> convertArray(u, inverse) + ); } Converters(Converter... chain) { diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index f6fde68663..a7a37262ac 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -3823,7 +3823,7 @@ public class DefaultBinding implements Binding { case JSONB: { if (emulation == NestedCollectionEmulation.JSONB && EMULATE_AS_BLOB.contains(ctx.dialect())) { byte[] s = ctx.resultSet().getBytes(ctx.index()); - return s == null ? null : new JSONReader<>(ctx.dsl(), (AbstractRow) type.getRow(), (Class) type.getRecordType()).read(new InputStreamReader(new ByteArrayInputStream(s)), true); + return s == null ? null : new JSONReader<>(ctx.dsl(), (AbstractRow) type.getRow(), (Class) type.getRecordType()).read(new InputStreamReader(new ByteArrayInputStream(s), ctx.configuration().charsetProvider().provide()), true); } else { String s = ctx.resultSet().getString(ctx.index()); @@ -4599,17 +4599,10 @@ public class DefaultBinding implements Binding { } private final Converter bytesConverter(final Configuration configuration) { - return new AbstractConverter(byte[].class, JSONB.class) { - @Override - public JSONB from(byte[] t) { - return t == null ? null : JSONB.valueOf(new String(t, configuration.charsetProvider().provide())); - } - - @Override - public byte[] to(JSONB u) { - return u == null ? null : u.toString().getBytes(configuration.charsetProvider().provide()); - } - }; + return Converter.ofNullable(byte[].class, JSONB.class, + t -> JSONB.valueOf(new String(t, configuration.charsetProvider().provide())), + u -> u.toString().getBytes(configuration.charsetProvider().provide()) + ); } @SuppressWarnings({ "unchecked", "rawtypes" }) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultConverterProvider.java b/jOOQ/src/main/java/org/jooq/impl/DefaultConverterProvider.java index dd8d4ea2a3..41e48e5d82 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultConverterProvider.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultConverterProvider.java @@ -118,18 +118,10 @@ public final class DefaultConverterProvider implements ConverterProvider, Serial return types.length == 1 && types[0] != uWrapper && provide(tType, types[0]) != null; }) != null ) { - return new AbstractConverter(tType, uType) { - - @Override - public U from(T t) { - return Convert.convert(t, uType); - } - - @Override - public T to(U u) { - return Convert.convert(u, tType); - } - }; + return Converter.of(tType, uType, + t -> Convert.convert(t, uType), + u -> Convert.convert(u, tType) + ); } // [#11762] Make sure possibly legal downcasts / upcasts are working diff --git a/jOOQ/src/main/java/org/jooq/impl/XMLasDOMBinding.java b/jOOQ/src/main/java/org/jooq/impl/XMLasDOMBinding.java index 27e5c1b26b..2031d84237 100644 --- a/jOOQ/src/main/java/org/jooq/impl/XMLasDOMBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/XMLasDOMBinding.java @@ -72,26 +72,16 @@ import org.xml.sax.SAXException; */ public class XMLasDOMBinding extends AbstractXMLBinding { - private final Converter converter; + private static final Converter CONVERTER = Converter.ofNullable(XML.class, Node.class, + t -> XMLasDOMBinding.fromString(t.data()), + u -> xml(XMLasDOMBinding.toString(u)) + ); - public XMLasDOMBinding() { - this.converter = new AbstractConverter(XML.class, Node.class) { - - @Override - public Node from(XML t) { - return t == null ? null : XMLasDOMBinding.fromString(t.data()); - } - - @Override - public XML to(Node u) { - return u == null ? null : xml(XMLasDOMBinding.toString(u)); - } - }; - } + public XMLasDOMBinding() {} @Override public final Converter converter() { - return converter; + return CONVERTER; } // ------------------------------------------------------------------------