diff --git a/common/src/main/java/org/apache/sqoop/model/ConfigUtils.java b/common/src/main/java/org/apache/sqoop/model/ConfigUtils.java index dd6e9ce4..d5840791 100644 --- a/common/src/main/java/org/apache/sqoop/model/ConfigUtils.java +++ b/common/src/main/java/org/apache/sqoop/model/ConfigUtils.java @@ -182,7 +182,13 @@ private static MConfig toConfig(String configName, Class klass, Object object) { if(value == null) { input.setEmpty(); } else { - input.setValue(value); + // Some types requires special cast here due to type changes + // between Java and model objects + if(type.isEnum()) { + input.setValue(value.toString()); + } else { + input.setValue(value); + } } } diff --git a/common/src/test/java/org/apache/sqoop/model/TestConfigUtils.java b/common/src/test/java/org/apache/sqoop/model/TestConfigUtils.java index 2cc49652..472bbcea 100644 --- a/common/src/test/java/org/apache/sqoop/model/TestConfigUtils.java +++ b/common/src/test/java/org/apache/sqoop/model/TestConfigUtils.java @@ -20,6 +20,7 @@ import org.testng.annotations.Test; import org.testng.Assert; import org.testng.AssertJUnit; + import static org.testng.AssertJUnit.assertNull; import java.util.HashMap; import java.util.LinkedList; @@ -38,10 +39,12 @@ public class TestConfigUtils { public void testConfigs() { TestConfiguration config = new TestConfiguration(); config.aConfig.a1 = "value"; + config.cConfig.enumeration = Enumeration.X; List configsByInstance = ConfigUtils.toConfigs(config); AssertJUnit.assertEquals(getConfigs(), configsByInstance); AssertJUnit.assertEquals("value", configsByInstance.get(0).getInputs().get(0).getValue()); + AssertJUnit.assertEquals("X", configsByInstance.get(2).getInput("cConfig.enumeration").getValue()); List configsByClass = ConfigUtils.toConfigs(TestConfiguration.class); AssertJUnit.assertEquals(getConfigs(), configsByClass); @@ -49,6 +52,7 @@ public void testConfigs() { List configsByBoth = ConfigUtils.toConfigs(TestConfiguration.class, config); AssertJUnit.assertEquals(getConfigs(), configsByBoth); AssertJUnit.assertEquals("value", configsByBoth.get(0).getInputs().get(0).getValue()); + AssertJUnit.assertEquals("X", configsByBoth.get(2).getInput("cConfig.enumeration").getValue()); } @Test(expectedExceptions = SqoopException.class)