From 2b0456d6ce4b1e20bdd292c992efe231965372ae Mon Sep 17 00:00:00 2001 From: Jarek Jarcec Cecho Date: Tue, 15 Jan 2013 04:15:30 -0800 Subject: [PATCH] SQOOP-829: Error Messages For --map-column-java Should Be More Useful (Nick White via Jarek Jarcec Cecho) --- .../org/apache/sqoop/orm/ClassWriter.java | 11 ++++++---- .../cloudera/sqoop/orm/TestClassWriter.java | 20 +++++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/java/org/apache/sqoop/orm/ClassWriter.java b/src/java/org/apache/sqoop/orm/ClassWriter.java index b73711ee..47e12219 100644 --- a/src/java/org/apache/sqoop/orm/ClassWriter.java +++ b/src/java/org/apache/sqoop/orm/ClassWriter.java @@ -443,8 +443,8 @@ private String rpcSetterForType(String javaType, String outputObj, return " " + LobSerializer.class.getCanonicalName() + ".writeBlob(this." + colName + ", " + outputObj + ");\n"; } else { - LOG.error("No ResultSet method for Java type " + javaType); - return null; + throw new IllegalArgumentException( + "No ResultSet method for Java type " + javaType); } } @@ -1101,8 +1101,11 @@ public void generate() throws IOException { if (mapping != null && !mapping.isEmpty()) { for(Object column : mapping.keySet()) { if (!uniqColNames.contains((String)column)) { - throw new IllegalArgumentException("No column by the name " + column - + "found while importing data"); + throw new IllegalArgumentException( + "No column by the name " + + column + + "found while importing data; expecting one of " + + uniqColNames); } } } diff --git a/src/test/com/cloudera/sqoop/orm/TestClassWriter.java b/src/test/com/cloudera/sqoop/orm/TestClassWriter.java index a10b5ae9..3b775717 100644 --- a/src/test/com/cloudera/sqoop/orm/TestClassWriter.java +++ b/src/test/com/cloudera/sqoop/orm/TestClassWriter.java @@ -465,4 +465,24 @@ public void testUserMapping() throws IOException, ClassNotFoundException, ClassLoaderStack.setCurrentClassLoader(prevClassLoader); } } + + @Test + public void testBrokenUserMapping() throws Exception { + + String [] argv = { + "--bindir", JAR_GEN_DIR, + "--outdir", CODE_GEN_DIR, + "--class-name", USERMAPPING_CLASS_AND_PACKAGE_NAME, + "--map-column-java", "INTFIELD1=NotARealClass", + }; + + try { + runGenerationTest( + argv, + USERMAPPING_CLASS_AND_PACKAGE_NAME); + } catch(IllegalArgumentException e) { + return; + } + fail("we shouldn't successfully generate code"); + } }