[jOOQ/jOOQ#11894] Replace AbstractConverter by Converter.of()
This commit is contained in:
parent
083fd06fc9
commit
a7580a1050
@ -128,40 +128,16 @@ public class Converters<T, U> extends AbstractConverter<T, U> {
|
||||
if (converter instanceof IdentityConverter)
|
||||
return (Converter<U, T>) converter;
|
||||
else
|
||||
return new AbstractConverter<U, T>(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 <T, U> Converter<T[], U[]> forArrays(final Converter<T, U> converter) {
|
||||
return new AbstractConverter<T[], U[]>(arrayType(converter.fromType()), arrayType(converter.toType())) {
|
||||
final Converter<U, T> inverse = inverse(converter);
|
||||
|
||||
private final Converter<U, T> 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) {
|
||||
|
||||
@ -3823,7 +3823,7 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
|
||||
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<R>) type.getRow(), (Class<R>) type.getRecordType()).read(new InputStreamReader(new ByteArrayInputStream(s)), true);
|
||||
return s == null ? null : new JSONReader<>(ctx.dsl(), (AbstractRow<R>) type.getRow(), (Class<R>) 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<T, U> implements Binding<T, U> {
|
||||
}
|
||||
|
||||
private final Converter<byte[], JSONB> bytesConverter(final Configuration configuration) {
|
||||
return new AbstractConverter<byte[], JSONB>(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" })
|
||||
|
||||
@ -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<T, U>(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
|
||||
|
||||
@ -72,26 +72,16 @@ import org.xml.sax.SAXException;
|
||||
*/
|
||||
public class XMLasDOMBinding extends AbstractXMLBinding<Node> {
|
||||
|
||||
private final Converter<XML, Node> converter;
|
||||
private static final Converter<XML, Node> CONVERTER = Converter.ofNullable(XML.class, Node.class,
|
||||
t -> XMLasDOMBinding.fromString(t.data()),
|
||||
u -> xml(XMLasDOMBinding.toString(u))
|
||||
);
|
||||
|
||||
public XMLasDOMBinding() {
|
||||
this.converter = new AbstractConverter<XML, Node>(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<XML, Node> converter() {
|
||||
return converter;
|
||||
return CONVERTER;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
Loading…
Reference in New Issue
Block a user