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 2013/08/19 17:27:39 UTC
git commit: SQOOP-827: Sqoop2: MMapInput is null while retrieving
from DB if pass empty map on write
Updated Branches:
refs/heads/sqoop2 d140c5ddd -> 78235e39d
SQOOP-827: Sqoop2: MMapInput is null while retrieving from DB if pass empty map on write
(Mengwei Ding 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/78235e39
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/78235e39
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/78235e39
Branch: refs/heads/sqoop2
Commit: 78235e39dfb5c36324739976fa54ec9cfaaba08a
Parents: d140c5d
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Mon Aug 19 08:26:52 2013 -0700
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Mon Aug 19 08:26:52 2013 -0700
----------------------------------------------------------------------
.../java/org/apache/sqoop/model/MMapInput.java | 35 +++++++++++---------
.../org/apache/sqoop/model/TestMMapInput.java | 9 ++++-
.../sqoop/repository/derby/DerbyTestCase.java | 9 ++---
.../derby/TestConnectionHandling.java | 25 +++++++++++---
.../sqoop/repository/derby/TestJobHandling.java | 25 +++++++++++---
5 files changed, 74 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sqoop/blob/78235e39/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 de17e2d..37dd265 100644
--- a/common/src/main/java/org/apache/sqoop/model/MMapInput.java
+++ b/common/src/main/java/org/apache/sqoop/model/MMapInput.java
@@ -32,8 +32,8 @@ public final class MMapInput extends MInput<Map<String, String>> {
@Override
public String getUrlSafeValueString() {
Map<String, String> valueMap = getValue();
- if (valueMap == null || valueMap.size() == 0) {
- return "";
+ if (valueMap == null) {
+ return null;
}
boolean first = true;
StringBuilder vsb = new StringBuilder();
@@ -51,24 +51,27 @@ public final class MMapInput extends MInput<Map<String, String>> {
@Override
public void restoreFromUrlSafeValueString(String valueString) {
- Map<String, String> valueMap = null;
- if (valueString != null && valueString.trim().length() > 0) {
- valueMap = new HashMap<String, String>();
- String[] valuePairs = valueString.split("&");
- for (String pair : valuePairs) {
- String[] nameAndVal = pair.split("=");
- if (nameAndVal.length > 0) {
- String name = nameAndVal[0];
- String value = null;
- if (nameAndVal.length > 1) {
- value = nameAndVal[1];
- }
+ if (valueString == null) {
+ setValue(null);
+ } else {
+ Map<String, String> valueMap = new HashMap<String, String>();
+ if (valueString.trim().length() > 0) {
+ String[] valuePairs = valueString.split("&");
+ for (String pair : valuePairs) {
+ String[] nameAndVal = pair.split("=");
+ if (nameAndVal.length > 0) {
+ String name = nameAndVal[0];
+ String value = null;
+ if (nameAndVal.length > 1) {
+ value = nameAndVal[1];
+ }
- valueMap.put(name, value);
+ valueMap.put(name, value);
+ }
}
}
+ setValue(valueMap);
}
- setValue(valueMap);
}
@Override
http://git-wip-us.apache.org/repos/asf/sqoop/blob/78235e39/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 eb877cf..120fb07 100644
--- a/common/src/test/java/org/apache/sqoop/model/TestMMapInput.java
+++ b/common/src/test/java/org/apache/sqoop/model/TestMMapInput.java
@@ -19,6 +19,7 @@ package org.apache.sqoop.model;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -82,7 +83,13 @@ public class TestMMapInput {
String tmp = input1.getUrlSafeValueString();
// Restore to actual value
input1.restoreFromUrlSafeValueString(tmp);
- assertEquals(null, input1.getValue());
+ assertNotNull(input1.getValue());
+ assertEquals(0, input1.getValue().size());
+
+ input1.setValue(null);
+ tmp = input1.getUrlSafeValueString();
+ input1.restoreFromUrlSafeValueString(tmp);
+ assertNull(input1.getValue());
}
/**
http://git-wip-us.apache.org/repos/asf/sqoop/blob/78235e39/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java
----------------------------------------------------------------------
diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java
index 8a5aee8..a2a0bc7 100644
--- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java
+++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java
@@ -27,6 +27,7 @@ import org.apache.sqoop.model.MFramework;
import org.apache.sqoop.model.MInput;
import org.apache.sqoop.model.MJob;
import org.apache.sqoop.model.MJobForms;
+import org.apache.sqoop.model.MMapInput;
import org.apache.sqoop.model.MStringInput;
import java.sql.Connection;
@@ -197,7 +198,7 @@ abstract public class DerbyTestCase extends TestCase {
+ " VALUES('I1', " + (x * 6 + i * 2 + 1) + ", 0, 'STRING', false, 30)");
runQuery("INSERT INTO SQOOP.SQ_INPUT"
+"(SQI_NAME, SQI_FORM, SQI_INDEX, SQI_TYPE, SQI_STRMASK, SQI_STRLENGTH)"
- + " VALUES('I2', " + (x * 6 + i * 2 + 1) + ", 1, 'STRING', false, 30)");
+ + " VALUES('I2', " + (x * 6 + i * 2 + 1) + ", 1, 'MAP', false, 30)");
// Second form
runQuery("INSERT INTO SQOOP.SQ_INPUT"
@@ -205,7 +206,7 @@ abstract public class DerbyTestCase extends TestCase {
+ " VALUES('I3', " + (x * 6 + i * 2 + 2) + ", 0, 'STRING', false, 30)");
runQuery("INSERT INTO SQOOP.SQ_INPUT"
+"(SQI_NAME, SQI_FORM, SQI_INDEX, SQI_TYPE, SQI_STRMASK, SQI_STRLENGTH)"
- + " VALUES('I4', " + (x * 6 + i * 2 + 2) + ", 1, 'STRING', false, 30)");
+ + " VALUES('I4', " + (x * 6 + i * 2 + 2) + ", 1, 'MAP', false, 30)");
}
}
}
@@ -360,14 +361,14 @@ abstract public class DerbyTestCase extends TestCase {
inputs = new LinkedList<MInput<?>>();
input = new MStringInput("I1", false, (short)30);
inputs.add(input);
- input = new MStringInput("I2", false, (short)30);
+ input = new MMapInput("I2", false);
inputs.add(input);
forms.add(new MForm("F1", inputs));
inputs = new LinkedList<MInput<?>>();
input = new MStringInput("I3", false, (short)30);
inputs.add(input);
- input = new MStringInput("I4", false, (short)30);
+ input = new MMapInput("I4", false);
inputs.add(input);
forms.add(new MForm("F2", inputs));
http://git-wip-us.apache.org/repos/asf/sqoop/blob/78235e39/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestConnectionHandling.java
----------------------------------------------------------------------
diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestConnectionHandling.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestConnectionHandling.java
index 6959f2d..f9e9217 100644
--- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestConnectionHandling.java
+++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestConnectionHandling.java
@@ -21,9 +21,12 @@ import org.apache.sqoop.common.SqoopException;
import org.apache.sqoop.model.MConnection;
import org.apache.sqoop.model.MForm;
import org.apache.sqoop.model.MJob;
+import org.apache.sqoop.model.MMapInput;
import org.apache.sqoop.model.MStringInput;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* Test connection methods on Derby repository.
@@ -166,10 +169,16 @@ public class TestConnectionHandling extends DerbyTestCase {
List<MForm> forms;
forms = connection.getConnectorPart().getForms();
- ((MStringInput)forms.get(0).getInputs().get(1)).setValue("Injected");
+ ((MStringInput)forms.get(0).getInputs().get(0)).setValue("Updated");
+ ((MMapInput)forms.get(0).getInputs().get(1)).setValue(null);
+ ((MStringInput)forms.get(1).getInputs().get(0)).setValue("Updated");
+ ((MMapInput)forms.get(1).getInputs().get(1)).setValue(null);
forms = connection.getFrameworkPart().getForms();
- ((MStringInput)forms.get(1).getInputs().get(1)).setValue("Injected");
+ ((MStringInput)forms.get(0).getInputs().get(0)).setValue("Updated");
+ ((MMapInput)forms.get(0).getInputs().get(1)).setValue(new HashMap<String, String>()); // inject new map value
+ ((MStringInput)forms.get(1).getInputs().get(0)).setValue("Updated");
+ ((MMapInput)forms.get(1).getInputs().get(1)).setValue(new HashMap<String, String>()); // inject new map value
connection.setName("name");
@@ -183,10 +192,18 @@ public class TestConnectionHandling extends DerbyTestCase {
assertEquals("name", connection.getName());
forms = retrieved.getConnectorPart().getForms();
- assertEquals("Injected", forms.get(0).getInputs().get(1).getValue());
+ assertEquals("Updated", forms.get(0).getInputs().get(0).getValue());
+ assertNull(forms.get(0).getInputs().get(1).getValue());
+ assertEquals("Updated", forms.get(1).getInputs().get(0).getValue());
+ assertNull(forms.get(1).getInputs().get(1).getValue());
forms = retrieved.getFrameworkPart().getForms();
- assertEquals("Injected", forms.get(1).getInputs().get(1).getValue());
+ assertEquals("Updated", forms.get(0).getInputs().get(0).getValue());
+ assertNotNull(forms.get(0).getInputs().get(1).getValue());
+ assertEquals(((Map)forms.get(0).getInputs().get(1).getValue()).size(), 0);
+ assertEquals("Updated", forms.get(1).getInputs().get(0).getValue());
+ assertNotNull(forms.get(1).getInputs().get(1).getValue());
+ assertEquals(((Map)forms.get(1).getInputs().get(1).getValue()).size(), 0);
}
public void testEnableAndDisableConnection() throws Exception {
http://git-wip-us.apache.org/repos/asf/sqoop/blob/78235e39/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestJobHandling.java
----------------------------------------------------------------------
diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestJobHandling.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestJobHandling.java
index a3d804e..4325c5c 100644
--- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestJobHandling.java
+++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestJobHandling.java
@@ -20,9 +20,12 @@ package org.apache.sqoop.repository.derby;
import org.apache.sqoop.common.SqoopException;
import org.apache.sqoop.model.MForm;
import org.apache.sqoop.model.MJob;
+import org.apache.sqoop.model.MMapInput;
import org.apache.sqoop.model.MStringInput;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* Test job methods on Derby repository.
@@ -182,10 +185,16 @@ public class TestJobHandling extends DerbyTestCase {
List<MForm> forms;
forms = job.getConnectorPart().getForms();
- ((MStringInput)forms.get(0).getInputs().get(1)).setValue("Injected");
+ ((MStringInput)forms.get(0).getInputs().get(0)).setValue("Updated");
+ ((MMapInput)forms.get(0).getInputs().get(1)).setValue(null);
+ ((MStringInput)forms.get(1).getInputs().get(0)).setValue("Updated");
+ ((MMapInput)forms.get(1).getInputs().get(1)).setValue(null);
forms = job.getFrameworkPart().getForms();
- ((MStringInput)forms.get(1).getInputs().get(1)).setValue("Injected");
+ ((MStringInput)forms.get(0).getInputs().get(0)).setValue("Updated");
+ ((MMapInput)forms.get(0).getInputs().get(1)).setValue(new HashMap<String, String>()); // inject new map value
+ ((MStringInput)forms.get(1).getInputs().get(0)).setValue("Updated");
+ ((MMapInput)forms.get(1).getInputs().get(1)).setValue(new HashMap<String, String>()); // inject new map value
job.setName("name");
@@ -199,10 +208,18 @@ public class TestJobHandling extends DerbyTestCase {
assertEquals("name", retrieved.getName());
forms = retrieved.getConnectorPart().getForms();
- assertEquals("Injected", forms.get(0).getInputs().get(1).getValue());
+ assertEquals("Updated", forms.get(0).getInputs().get(0).getValue());
+ assertNull(forms.get(0).getInputs().get(1).getValue());
+ assertEquals("Updated", forms.get(1).getInputs().get(0).getValue());
+ assertNull(forms.get(1).getInputs().get(1).getValue());
forms = retrieved.getFrameworkPart().getForms();
- assertEquals("Injected", forms.get(1).getInputs().get(1).getValue());
+ assertEquals("Updated", forms.get(0).getInputs().get(0).getValue());
+ assertNotNull(forms.get(0).getInputs().get(1).getValue());
+ assertEquals(((Map)forms.get(0).getInputs().get(1).getValue()).size(), 0);
+ assertEquals("Updated", forms.get(1).getInputs().get(0).getValue());
+ assertNotNull(forms.get(1).getInputs().get(1).getValue());
+ assertEquals(((Map)forms.get(1).getInputs().get(1).getValue()).size(), 0);
}
public void testEnableAndDisableJob() throws Exception {