Repository: sqoop
Updated Branches:
  refs/heads/sqoop2 9f69badd9 -> c6047c4f2


SQOOP-2562: Sqoop2: Should decode the key and value in 
MMapInput#restoreFromUrlSafeValueString


Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/c6047c4f
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/c6047c4f
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/c6047c4f

Branch: refs/heads/sqoop2
Commit: c6047c4f2a021d9220e9301c60c48a30b0edccdf
Parents: 9f69bad
Author: Jarek Jarcec Cecho <[email protected]>
Authored: Sun Sep 13 05:20:02 2015 -0700
Committer: Jarek Jarcec Cecho <[email protected]>
Committed: Sun Sep 13 05:20:02 2015 -0700

----------------------------------------------------------------------
 .../src/main/java/org/apache/sqoop/model/MMapInput.java  |  7 +++++--
 .../test/java/org/apache/sqoop/model/TestMMapInput.java  |  2 +-
 .../java/org/apache/sqoop/shell/utils/ConfigFiller.java  | 11 +++++++++--
 3 files changed, 15 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/c6047c4f/common/src/main/java/org/apache/sqoop/model/MMapInput.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/model/MMapInput.java 
b/common/src/main/java/org/apache/sqoop/model/MMapInput.java
index 973b5fa..f2c1ed7 100644
--- a/common/src/main/java/org/apache/sqoop/model/MMapInput.java
+++ b/common/src/main/java/org/apache/sqoop/model/MMapInput.java
@@ -48,7 +48,7 @@ public final class MMapInput extends MInput<Map<String, 
String>> {
         vsb.append("&");
       }
       vsb.append(UrlSafeUtils.urlEncode(entry.getKey())).append("=");
-      vsb.append(entry.getValue() != null ? 
UrlSafeUtils.urlEncode(entry.getValue()): null);
+      vsb.append(entry.getValue() != null ? 
UrlSafeUtils.urlEncode(entry.getValue()): "");
     }
     return vsb.toString();
   }
@@ -64,11 +64,14 @@ public final class MMapInput extends MInput<Map<String, 
String>> {
         for (String pair : valuePairs) {
           String[] nameAndVal = pair.split("=");
           if (nameAndVal.length > 0) {
-            String name = nameAndVal[0];
+            String name = UrlSafeUtils.urlDecode(nameAndVal[0]);
             String value = null;
             if (nameAndVal.length > 1) {
               value = nameAndVal[1];
             }
+            if (value != null) {
+              value = UrlSafeUtils.urlDecode(value);
+            }
 
             valueMap.put(name, value);
           }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/c6047c4f/common/src/test/java/org/apache/sqoop/model/TestMMapInput.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/sqoop/model/TestMMapInput.java 
b/common/src/test/java/org/apache/sqoop/model/TestMMapInput.java
index c4e098d..118277e 100644
--- a/common/src/test/java/org/apache/sqoop/model/TestMMapInput.java
+++ b/common/src/test/java/org/apache/sqoop/model/TestMMapInput.java
@@ -98,7 +98,7 @@ public class TestMMapInput {
    */
   @Test
   public void testNamedElement() {
-    MStringInput input1 = new MStringInput("sqoopsqoop", true, 
InputEditable.ANY, StringUtils.EMPTY, (short) 5);
+    MMapInput input1 = new MMapInput("sqoopsqoop", true, InputEditable.ANY, 
StringUtils.EMPTY);
     assertEquals("sqoopsqoop.label", input1.getLabelKey());
     assertEquals("sqoopsqoop.help", input1.getHelpKey());
   }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/c6047c4f/shell/src/main/java/org/apache/sqoop/shell/utils/ConfigFiller.java
----------------------------------------------------------------------
diff --git a/shell/src/main/java/org/apache/sqoop/shell/utils/ConfigFiller.java 
b/shell/src/main/java/org/apache/sqoop/shell/utils/ConfigFiller.java
index b45d8df..6f1af94 100644
--- a/shell/src/main/java/org/apache/sqoop/shell/utils/ConfigFiller.java
+++ b/shell/src/main/java/org/apache/sqoop/shell/utils/ConfigFiller.java
@@ -288,10 +288,13 @@ public final class ConfigFiller {
     if (line.hasOption(opt)) {
       String value = line.getOptionValue(opt);
       Map<String, String> values = new HashMap<String, String>();
+      String[] keyValue = null;
       String[] entries = value.split("&");
       for (String entry : entries) {
         if (entry.contains("=")) {
-          String[] keyValue = entry.split("=");
+          keyValue = entry.split("=", 2);
+        }
+        if (keyValue != null && keyValue.length == 2) {
           values.put(keyValue[0], keyValue[1]);
         } else {
           errorMessage(input, "Don't know what to do with " + entry);
@@ -757,7 +760,11 @@ public final class ConfigFiller {
         // try to remove entry that user specified.
         if(userTyped.contains("=")) {
           String []keyValue = userTyped.split("=", 2);
-          values.put(handleUserInput(keyValue[0]), 
handleUserInput(keyValue[1]));
+          if (keyValue.length == 2) {
+            values.put(handleUserInput(keyValue[0]), 
handleUserInput(keyValue[1]));
+          } else {
+            errorMessage("Don't know what to do with " + userTyped);
+          }
         } else {
           String key = handleUserInput(userTyped);
           if(values.containsKey(key)) {

Reply via email to