mirror of
https://github.com/apache/sqoop.git
synced 2025-05-19 02:10:54 +08:00
SQOOP-2162: Sqoop2: InputEditable should be optional in JSON API
(Abraham Elmahrek via Jarek Jarcec Cecho)
This commit is contained in:
parent
934a009762
commit
36663eb399
@ -149,7 +149,9 @@ static MConfig restoreConfig(JSONObject config) {
|
|||||||
MInputType.valueOf((String) input.get(ConfigInputConstants.CONFIG_INPUT_TYPE));
|
MInputType.valueOf((String) input.get(ConfigInputConstants.CONFIG_INPUT_TYPE));
|
||||||
String name = (String) input.get(ConfigInputConstants.CONFIG_INPUT_NAME);
|
String name = (String) input.get(ConfigInputConstants.CONFIG_INPUT_NAME);
|
||||||
Boolean sensitive = (Boolean) input.get(ConfigInputConstants.CONFIG_INPUT_SENSITIVE);
|
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);
|
String overrides = (String) input.get(ConfigInputConstants.CONFIG_INPUT_OVERRIDES);
|
||||||
|
|
||||||
MInput mInput = null;
|
MInput mInput = null;
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.sqoop.json.util;
|
package org.apache.sqoop.json.util;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertFalse;
|
||||||
import static org.testng.AssertJUnit.assertEquals;
|
import static org.testng.AssertJUnit.assertEquals;
|
||||||
import static org.testng.Assert.assertNotNull;
|
import static org.testng.Assert.assertNotNull;
|
||||||
|
|
||||||
@ -38,6 +39,7 @@
|
|||||||
import org.apache.sqoop.model.MLongInput;
|
import org.apache.sqoop.model.MLongInput;
|
||||||
import org.apache.sqoop.model.MMapInput;
|
import org.apache.sqoop.model.MMapInput;
|
||||||
import org.apache.sqoop.model.MStringInput;
|
import org.apache.sqoop.model.MStringInput;
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
@ -118,6 +120,56 @@ public void testMapDataTypeException() {
|
|||||||
ConfigInputSerialization.restoreConfig(retrievedJson);
|
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() {
|
protected MConfig getMapConfig() {
|
||||||
List<MInput<?>> inputs;
|
List<MInput<?>> inputs;
|
||||||
MInput input;
|
MInput input;
|
||||||
|
Loading…
Reference in New Issue
Block a user