From 278e99e894cb439c713938bbe5fffc34cb949f09 Mon Sep 17 00:00:00 2001 From: moparisthebest Date: Tue, 9 Oct 2018 00:23:22 -0400 Subject: [PATCH] Fix JdbcMapper blob/clob warning messages and mistaken fallthrough to CLOB case from BLOB --- .../jdbc/codegen/JdbcMapperProcessor.java | 10 ++++++++-- readme.md | 7 +++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/JdbcMapperProcessor.java b/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/JdbcMapperProcessor.java index 34f58c2..d1b7352 100644 --- a/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/JdbcMapperProcessor.java +++ b/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/JdbcMapperProcessor.java @@ -877,18 +877,24 @@ public class JdbcMapperProcessor extends AbstractProcessor { "\t\t\t}\n"); return; } else if (!(types.isAssignable(o, inputStreamType) || types.isAssignable(o, blobType) || types.isAssignable(o, fileType) || types.isAssignable(o, byteArrayType))) { - processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "@JdbcMapper.Blob only valid for String, byte[], Blob, InputStream, and File", specialParam.delegate); + processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "JdbcMapper {blob:paramName} only valid for String, byte[], Blob, InputStream, and File", specialParam.delegate); return; } + // also if we have a blobStringCharset here it's only valid for String so error out + if(specialParam.blobStringCharset != null) { + processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "JdbcMapper {blob:charset:paramName} charset can only be specified for String", specialParam.delegate); + } + break; } case CLOB: { if (types.isAssignable(o, stringType)) { method = "Clob"; variableName = variableName + " == null ? null : new java.io.StringReader(" + variableName + ")"; } else if (!(types.isAssignable(o, readerType) || types.isAssignable(o, clobType))) { - processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "@JdbcMapper.Clob only valid for String, Clob, Reader", specialParam.delegate); + processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "JdbcMapper {clob:paramName} only valid for String, Clob, Reader", specialParam.delegate); return; } + break; } } } diff --git a/readme.md b/readme.md index a605990..8e47e1b 100644 --- a/readme.md +++ b/readme.md @@ -415,7 +415,10 @@ TODO ---- * DOCUMENTATION!!!!! - * sql other than select return boolean, int > 0 ? * @RunInTransaction void support * QueryMapper mapping errors should be clearer, especially if a .finish(ResultSet) throws an error - * check QueryMapper/ResultSetMapper closing of ResultSets, it doesn't look guaranteed \ No newline at end of file + * check QueryMapper/ResultSetMapper closing of ResultSets, it doesn't look guaranteed + * CompilingResultSetMapper fails on inner class like 'public static class Bla {' + * Support Optional for all T instead of null + * change boolean to be consistent with other primitives? + * make sure 'fallback to resultSet.toObject()' never happens at compile-time with JdbcMapper \ No newline at end of file