5
0
mirror of https://github.com/apache/sqoop.git synced 2025-05-16 17:00:53 +08:00

SQOOP-2305: Sqoop2: ConfigUtils is not properly serializing Enum values

(Jarek Jarcec Cecho via Abraham Elmahrek)
This commit is contained in:
Abraham Elmahrek 2015-04-15 16:01:48 -07:00
parent d5584f27aa
commit 36711af547
2 changed files with 11 additions and 1 deletions

View File

@ -181,10 +181,16 @@ private static MConfig toConfig(String configName, Class klass, Object object) {
}
if(value == null) {
input.setEmpty();
} else {
// 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);
}
}
}
inputs.add(input);
}

View File

@ -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<MConfig> 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<MConfig> configsByClass = ConfigUtils.toConfigs(TestConfiguration.class);
AssertJUnit.assertEquals(getConfigs(), configsByClass);
@ -49,6 +52,7 @@ public void testConfigs() {
List<MConfig> 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)