You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ja...@apache.org on 2015/03/03 19:29:16 UTC
sqoop git commit: SQOOP-2162: Sqoop2: InputEditable should be
optional in JSON API
Repository: sqoop
Updated Branches:
refs/heads/sqoop2 934a00976 -> 36663eb39
SQOOP-2162: Sqoop2: InputEditable should be optional in JSON API
(Abraham Elmahrek via Jarek Jarcec Cecho)
Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/36663eb3
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/36663eb3
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/36663eb3
Branch: refs/heads/sqoop2
Commit: 36663eb399e54dd978987fb8fc0bd422269f3c12
Parents: 934a009
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Tue Mar 3 10:28:38 2015 -0800
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Tue Mar 3 10:28:38 2015 -0800
----------------------------------------------------------------------
.../json/util/ConfigInputSerialization.java | 4 +-
.../json/util/TestConfigSerialization.java | 52 ++++++++++++++++++++
2 files changed, 55 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sqoop/blob/36663eb3/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java b/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java
index ffaf041..1b1ec28 100644
--- a/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java
+++ b/common/src/main/java/org/apache/sqoop/json/util/ConfigInputSerialization.java
@@ -149,7 +149,9 @@ public final class ConfigInputSerialization {
MInputType.valueOf((String) input.get(ConfigInputConstants.CONFIG_INPUT_TYPE));
String name = (String) input.get(ConfigInputConstants.CONFIG_INPUT_NAME);
Boolean sensitive = (Boolean) input.get(ConfigInputConstants.CONFIG_INPUT_SENSITIVE);
- InputEditable editable = InputEditable.valueOf((String)input.get(ConfigInputConstants.CONFIG_INPUT_EDITABLE));
+ InputEditable editable = (input.containsKey(ConfigInputConstants.CONFIG_INPUT_EDITABLE)) ?
+ InputEditable.valueOf((String)input.get(ConfigInputConstants.CONFIG_INPUT_EDITABLE))
+ : InputEditable.USER_ONLY;
String overrides = (String) input.get(ConfigInputConstants.CONFIG_INPUT_OVERRIDES);
MInput mInput = null;
http://git-wip-us.apache.org/repos/asf/sqoop/blob/36663eb3/common/src/test/java/org/apache/sqoop/json/util/TestConfigSerialization.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/sqoop/json/util/TestConfigSerialization.java b/common/src/test/java/org/apache/sqoop/json/util/TestConfigSerialization.java
index f7f45f9..368502f 100644
--- a/common/src/test/java/org/apache/sqoop/json/util/TestConfigSerialization.java
+++ b/common/src/test/java/org/apache/sqoop/json/util/TestConfigSerialization.java
@@ -17,6 +17,7 @@
*/
package org.apache.sqoop.json.util;
+import static org.testng.Assert.assertFalse;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.Assert.assertNotNull;
@@ -38,6 +39,7 @@ import org.apache.sqoop.model.MIntegerInput;
import org.apache.sqoop.model.MLongInput;
import org.apache.sqoop.model.MMapInput;
import org.apache.sqoop.model.MStringInput;
+import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.testng.annotations.Test;
@@ -118,6 +120,56 @@ public class TestConfigSerialization {
ConfigInputSerialization.restoreConfig(retrievedJson);
}
+ @Test
+ public void testInputEditableOptional() {
+ // Inserted values
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("A", "B");
+
+ // Fill config with all values
+ MConfig config = getConfig();
+ config.getStringInput("String").setValue("A");
+ config.getMapInput("Map").setValue(map);
+ config.getIntegerInput("Integer").setValue(1);
+ config.getBooleanInput("Boolean").setValue(true);
+ config.getEnumInput("Enum").setValue("YES");
+
+ // Serialize that into JSON
+ JSONObject jsonObject = ConfigInputSerialization.extractConfig(config, MConfigType.JOB, false);
+ assertNotNull(jsonObject);
+
+ // Make sure editable is optional
+ // Remove the editable
+ JSONArray inputs = (JSONArray) jsonObject.get(ConfigInputConstants.CONFIG_INPUTS);
+ for (int i = 0; i < inputs.size(); i++) {
+ JSONObject input = (JSONObject) inputs.get(i);
+ if ((input.containsKey(ConfigInputConstants.CONFIG_INPUT_EDITABLE))) {
+ input.remove(ConfigInputConstants.CONFIG_INPUT_EDITABLE);
+ }
+ }
+
+ // Exchange the data on string level
+ String serializedJson = jsonObject.toJSONString();
+ JSONObject retrievedJson = JSONUtils.parse(serializedJson);
+
+ // Make sure editable isn't part of the JSON
+ inputs = (JSONArray) retrievedJson.get(ConfigInputConstants.CONFIG_INPUTS);
+ for (int i = 0; i < inputs.size(); i++) {
+ JSONObject input = (JSONObject) inputs.get(i);
+ assertFalse(input.containsKey(ConfigInputConstants.CONFIG_INPUT_EDITABLE));
+ }
+
+ // And retrieve back from JSON representation
+ MConfig retrieved = ConfigInputSerialization.restoreConfig(retrievedJson);
+
+ // Verify all expected values
+ assertEquals("A", retrieved.getStringInput("String").getValue());
+ assertEquals(map, retrieved.getMapInput("Map").getValue());
+ assertEquals(1, (int)retrieved.getIntegerInput("Integer").getValue());
+ assertEquals(true, retrieved.getBooleanInput("Boolean").getValue().booleanValue());
+ assertEquals("YES", retrieved.getEnumInput("Enum").getValue());
+ }
+
protected MConfig getMapConfig() {
List<MInput<?>> inputs;
MInput input;