You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ab...@apache.org on 2014/10/10 04:51:57 UTC

[28/52] [abbrv] git commit: SQOOP-1544: Sqoop2: From/To: ConnectorBean should work support different directions

SQOOP-1544: Sqoop2: From/To: ConnectorBean should work support different directions

(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/35a060e0
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/35a060e0
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/35a060e0

Branch: refs/heads/SQOOP-1367
Commit: 35a060e04852c65603223fbb4dc78a18e5c54793
Parents: 2c20d92
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Fri Sep 26 08:03:58 2014 -0700
Committer: Abraham Elmahrek <ab...@elmahrek.com>
Committed: Thu Oct 9 17:59:24 2014 -0700

----------------------------------------------------------------------
 .../org/apache/sqoop/json/ConnectorBean.java    | 31 +++++++----
 .../apache/sqoop/json/TestConnectorBean.java    | 58 ++++++++++++++++++++
 .../java/org/apache/sqoop/json/TestUtil.java    | 14 ++++-
 3 files changed, 92 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/35a060e0/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java b/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java
index 465dd69..d726a14 100644
--- a/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/ConnectorBean.java
@@ -86,10 +86,15 @@ public class ConnectorBean implements JsonBean {
 
       object.put(CON_FORMS, extractForms(connector.getConnectionForms().getForms(), skipSensitive));
       object.put(JOB_FORMS, new JSONObject());
-      ((JSONObject)object.get(JOB_FORMS)).put(
-          Direction.FROM, extractForms(connector.getJobForms(Direction.FROM).getForms(), skipSensitive));
-      ((JSONObject)object.get(JOB_FORMS)).put(
-          Direction.TO, extractForms(connector.getJobForms(Direction.TO).getForms(), skipSensitive));
+      if (connector.getJobForms(Direction.FROM) != null) {
+        ((JSONObject)object.get(JOB_FORMS)).put(
+            Direction.FROM, extractForms(connector.getJobForms(Direction.FROM).getForms(), skipSensitive));
+      }
+
+      if (connector.getJobForms(Direction.TO) != null) {
+        ((JSONObject)object.get(JOB_FORMS)).put(
+            Direction.TO, extractForms(connector.getJobForms(Direction.TO).getForms(), skipSensitive));
+      }
       array.add(object);
     }
 
@@ -124,17 +129,23 @@ public class ConnectorBean implements JsonBean {
       String className = (String) object.get(CLASS);
       String version = (String) object.get(VERSION);
 
+      MJobForms fromJob = null;
+      MJobForms toJob = null;
       List<MForm> connForms = restoreForms((JSONArray) object.get(CON_FORMS));
       JSONObject jobJson = (JSONObject) object.get(JOB_FORMS);
       JSONArray fromJobJson = (JSONArray)jobJson.get(Direction.FROM.name());
       JSONArray toJobJson = (JSONArray)jobJson.get(Direction.TO.name());
-      List<MForm> fromJobForms = restoreForms(fromJobJson);
-      List<MForm> toJobForms = restoreForms(toJobJson);
-      MJobForms fromJob = new MJobForms(fromJobForms);
-      MJobForms toJob = new MJobForms(toJobForms);
+      if (fromJobJson != null) {
+        List<MForm> fromJobForms = restoreForms(fromJobJson);
+        fromJob = new MJobForms(fromJobForms);
+      }
+      if (toJobJson != null) {
+        List<MForm> toJobForms = restoreForms(toJobJson);
+        toJob = new MJobForms(toJobForms);
+      }
       MConnectionForms connection = new MConnectionForms(connForms);
-      MConnector connector = new MConnector(uniqueName, className, version, connection, fromJob,
-          toJob);
+      MConnector connector = new MConnector(uniqueName, className, version,
+          connection, fromJob, toJob);
       connector.setPersistenceId(connectorId);
       connectors.add(connector);
     }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/35a060e0/common/src/test/java/org/apache/sqoop/json/TestConnectorBean.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/sqoop/json/TestConnectorBean.java b/common/src/test/java/org/apache/sqoop/json/TestConnectorBean.java
index e078474..c3aa84f 100644
--- a/common/src/test/java/org/apache/sqoop/json/TestConnectorBean.java
+++ b/common/src/test/java/org/apache/sqoop/json/TestConnectorBean.java
@@ -73,4 +73,62 @@ public class TestConnectorBean {
     assertEquals("a", retrievedBundle.getString("a"));
     assertEquals("b", retrievedBundle.getString("b"));
   }
+
+  @Test
+  public void testSingleDirection() {
+    // Create testing connector
+    List<MConnector> connectors = new LinkedList<MConnector>();
+    connectors.add(getConnector("jdbc", true, false));
+    connectors.add(getConnector("mysql", false, true));
+
+    // Create testing bundles
+    Map<Long, ResourceBundle> bundles = new HashMap<Long, ResourceBundle>();
+    bundles.put(1L, getResourceBundle());
+    bundles.put(2L, getResourceBundle());
+
+    // Serialize it to JSON object
+    ConnectorBean bean = new ConnectorBean(connectors, bundles);
+    JSONObject json = bean.extract(false);
+
+    // "Move" it across network in text form
+    String string = json.toJSONString();
+
+    // Retrieved transferred object
+    JSONObject retrievedJson = (JSONObject) JSONValue.parse(string);
+    ConnectorBean retrievedBean = new ConnectorBean();
+    retrievedBean.restore(retrievedJson);
+
+    assertEquals(connectors.size(), retrievedBean.getConnectors().size());
+    assertEquals(connectors.get(0), retrievedBean.getConnectors().get(0));
+    assertEquals(connectors.get(1), retrievedBean.getConnectors().get(1));
+  }
+
+  @Test
+  public void testNoDirection() {
+    // Create testing connector
+    List<MConnector> connectors = new LinkedList<MConnector>();
+    connectors.add(getConnector("jdbc", false, false));
+    connectors.add(getConnector("mysql", false, false));
+
+    // Create testing bundles
+    Map<Long, ResourceBundle> bundles = new HashMap<Long, ResourceBundle>();
+    bundles.put(1L, getResourceBundle());
+    bundles.put(2L, getResourceBundle());
+
+    // Serialize it to JSON object
+    ConnectorBean bean = new ConnectorBean(connectors, bundles);
+    JSONObject json = bean.extract(false);
+
+    // "Move" it across network in text form
+    String string = json.toJSONString();
+
+    // Retrieved transferred object
+    JSONObject retrievedJson = (JSONObject) JSONValue.parse(string);
+    ConnectorBean retrievedBean = new ConnectorBean();
+    retrievedBean.restore(retrievedJson);
+
+    assertEquals(connectors.size(), retrievedBean.getConnectors().size());
+    assertEquals(connectors.get(0), retrievedBean.getConnectors().get(0));
+    assertEquals(connectors.get(1), retrievedBean.getConnectors().get(1));
+  }
 }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/35a060e0/common/src/test/java/org/apache/sqoop/json/TestUtil.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/sqoop/json/TestUtil.java b/common/src/test/java/org/apache/sqoop/json/TestUtil.java
index eaf9122..9875219 100644
--- a/common/src/test/java/org/apache/sqoop/json/TestUtil.java
+++ b/common/src/test/java/org/apache/sqoop/json/TestUtil.java
@@ -40,8 +40,20 @@ import java.util.ResourceBundle;
  */
 public class TestUtil {
   public static MConnector getConnector(String name) {
+    return getConnector(name, true, true);
+  }
+
+  public static MConnector getConnector(String name, boolean from, boolean to) {
+    MJobForms fromJobForms = null;
+    MJobForms toJobForms = null;
+    if (from) {
+      fromJobForms = getJobForms();
+    }
+    if (to) {
+      toJobForms = getJobForms();
+    }
     return new MConnector(name, name + ".class", "1.0-test",
-      getConnectionForms(), getJobForms(), getJobForms());
+      getConnectionForms(), fromJobForms, toJobForms);
   }
 
   public static MDriverConfig getDriverConfig() {