SQOOP-2769: Sqoop2: Remove the notion of JobsBeans
authorColin Ma <colin@apache.org>
Fri, 15 Jan 2016 03:29:35 +0000 (11:29 +0800)
committerColin Ma <colin@apache.org>
Fri, 15 Jan 2016 03:29:35 +0000 (11:29 +0800)
 (Jarek Jarcec Cecho via Colin Ma)

client/src/main/java/org/apache/sqoop/client/request/JobResourceRequest.java
common/src/main/java/org/apache/sqoop/json/JobBean.java
common/src/main/java/org/apache/sqoop/json/JobsBean.java [deleted file]
common/src/test/java/org/apache/sqoop/json/TestJobBean.java
common/src/test/java/org/apache/sqoop/json/TestJobsBean.java [deleted file]
server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
test/src/test/java/org/apache/sqoop/integration/tools/RepositoryDumpLoadToolTest.java
tools/src/main/java/org/apache/sqoop/tools/tool/RepositoryDumpTool.java
tools/src/main/java/org/apache/sqoop/tools/tool/RepositoryLoadTool.java

index 3a0abef..f64f1cc 100644 (file)
@@ -20,7 +20,6 @@ package org.apache.sqoop.client.request;
 import org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticatedURL;
 import org.apache.sqoop.json.JSONUtils;
 import org.apache.sqoop.json.JobBean;
-import org.apache.sqoop.json.JobsBean;
 import org.apache.sqoop.json.SubmissionBean;
 import org.apache.sqoop.json.ValidationResultBean;
 import org.apache.sqoop.model.MJob;
@@ -50,7 +49,7 @@ public class JobResourceRequest extends ResourceRequest {
   }
 
   public JobBean readByConnector(String serverUrl, String cArg) {
-    JobsBean bean = new JobsBean();
+    JobBean bean = new JobBean();
     if (cArg != null) {
       String response = super.get(serverUrl + RESOURCE + "?cname=" + UrlSafeUtils.urlEncode(cArg));
       JSONObject jsonObject = JSONUtils.parse(response);
@@ -68,7 +67,7 @@ public class JobResourceRequest extends ResourceRequest {
     }
     JSONObject jsonObject = JSONUtils.parse(response);
     // defaults to all
-    JobBean bean = new JobsBean();
+    JobBean bean = new JobBean();
     if (jobArg != null) {
       bean = new JobBean();
     }
index 9d3a416..d18cf95 100644 (file)
@@ -55,7 +55,7 @@ public class JobBean implements JsonBean {
   static final String FROM_CONFIG_VALUES = "from-config-values";
   static final String TO_CONFIG_VALUES = "to-config-values";
   static final String DRIVER_CONFIG_VALUES = "driver-config-values";
-  private static final String JOB = "job";
+  private static final String JOBS = "jobs";
 
   // Required
   private List<MJob> jobs;
@@ -67,7 +67,7 @@ public class JobBean implements JsonBean {
   // For "extract"
   public JobBean(MJob job) {
     this();
-    this.jobs = new ArrayList<MJob>();
+    this.jobs = new ArrayList<>();
     this.jobs.add(job);
   }
 
@@ -78,7 +78,7 @@ public class JobBean implements JsonBean {
 
   // For "restore"
   public JobBean() {
-    connectorConfigBundles = new HashMap<String, ResourceBundle>();
+    connectorConfigBundles = new HashMap<>();
   }
 
   public void setDriverConfigBundle(ResourceBundle driverConfigBundle) {
@@ -108,12 +108,19 @@ public class JobBean implements JsonBean {
   @Override
   @SuppressWarnings("unchecked")
   public JSONObject extract(boolean skipSensitive) {
-    JSONObject job = new JSONObject();
-    job.put(JOB, extractJob(skipSensitive, jobs.get(0)));
-    return job;
+    JSONArray jobArray = extractJobs(skipSensitive);
+    JSONObject jobs = new JSONObject();
+    jobs.put(JOBS, jobArray);
+    return jobs;
   }
 
+  @Override
   @SuppressWarnings("unchecked")
+  public void restore(JSONObject jsonObject) {
+    JSONArray array = JSONUtils.getJSONArray(jsonObject, JOBS);
+    restoreJobs(array);
+  }
+
   protected JSONArray extractJobs(boolean skipSensitive) {
     JSONArray jobArray = new JSONArray();
     for (MJob job : jobs) {
@@ -152,15 +159,8 @@ public class JobBean implements JsonBean {
     return object;
   }
 
-  @Override
-  public void restore(JSONObject jsonObject) {
-    jobs = new ArrayList<MJob>();
-    JSONObject obj = JSONUtils.getJSONObject(jsonObject, JOB);
-    jobs.add(restoreJob(obj));
-  }
-
   protected void restoreJobs(JSONArray array) {
-    jobs = new ArrayList<MJob>();
+    jobs = new ArrayList<>();
     for (Object obj : array) {
       jobs.add(restoreJob(obj));
     }
diff --git a/common/src/main/java/org/apache/sqoop/json/JobsBean.java b/common/src/main/java/org/apache/sqoop/json/JobsBean.java
deleted file mode 100644 (file)
index 28411a2..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.json;
-
-import java.util.List;
-
-import org.apache.sqoop.classification.InterfaceAudience;
-import org.apache.sqoop.classification.InterfaceStability;
-import org.apache.sqoop.model.MJob;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-
-/**
- * Json representation of the jobs
- */
-@InterfaceAudience.Private
-@InterfaceStability.Unstable
-public class JobsBean extends JobBean {
-
-  private static final String JOBS = "jobs";
-
-  public JobsBean(MJob job) {
-    super(job);
-  }
-
-  public JobsBean(List<MJob> jobs) {
-    super(jobs);
-  }
-
-  // For "restore"
-  public JobsBean() {
-  }
-
-  @Override
-  @SuppressWarnings("unchecked")
-  public JSONObject extract(boolean skipSensitive) {
-    JSONArray jobArray = super.extractJobs(skipSensitive);
-    JSONObject jobs = new JSONObject();
-    jobs.put(JOBS, jobArray);
-    return jobs;
-  }
-
-  @Override
-  public void restore(JSONObject jsonObject) {
-    JSONArray array = JSONUtils.getJSONArray(jsonObject, JOBS);
-    restoreJobs(array);
-  }
-}
index c193096..8e71c3c 100644 (file)
@@ -19,7 +19,9 @@ package org.apache.sqoop.json;
 
 import static org.testng.Assert.assertEquals;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 import org.apache.sqoop.common.Direction;
 import org.apache.sqoop.json.util.BeanTestUtil;
@@ -78,5 +80,61 @@ public class TestJobBean {
     assertEquals("Hi there again!", targetInput.getValue());
   }
 
+  @Test
+  public void testJobsSerialization() throws ParseException {
+    Date created = new Date();
+    Date updated = new Date();
+    MJob job1 = BeanTestUtil.createJob("ahoj", "The big Job", 22L, created, updated);
+    MJob job2 = BeanTestUtil.createJob("ahoj", "The small Job", 44L, created, updated);
+
+    List<MJob> jobs = new ArrayList<>();
+    jobs.add(job1);
+    jobs.add(job2);
+
+    // Fill some data at the beginning
+    MStringInput input = (MStringInput) job1.getFromJobConfig().getConfigs().get(0)
+        .getInputs().get(0);
+    input.setValue("Hi there!");
+    input = (MStringInput) job1.getToJobConfig().getConfigs().get(0).getInputs().get(0);
+    input.setValue("Hi there again!");
+
+    // Serialize it to JSON object
+    JobBean jobsBean = new JobBean(jobs);
+    JSONObject json = jobsBean.extract(false);
+
+    // "Move" it across network in text form
+    String jobJsonString = json.toJSONString();
+
+    // Retrieved transferred object
+    JSONObject parsedJobsJson = JSONUtils.parse(jobJsonString);
+    JobBean parsedJobsBean = new JobBean();
+    parsedJobsBean.restore(parsedJobsJson);
+    assertEquals(parsedJobsBean.getJobs().size(), 2);
+    MJob retrievedJob1 = parsedJobsBean.getJobs().get(0);
+    MJob retrievedJob2 = parsedJobsBean.getJobs().get(1);
+
+    // Check id and name
+    assertEquals(22L, retrievedJob1.getPersistenceId());
+    assertEquals("The big Job", retrievedJob1.getName());
+
+    assertEquals(44L, retrievedJob2.getPersistenceId());
+    assertEquals("The small Job", retrievedJob2.getName());
+
+    assertEquals(retrievedJob1.getFromLinkName(), "fromLinkName");
+    assertEquals(retrievedJob1.getToLinkName(), "toLinkName");
+    assertEquals(retrievedJob1.getFromConnectorName(), "from_ahoj");
+    assertEquals(retrievedJob1.getToConnectorName(), "to_ahoj");
+    assertEquals(created, retrievedJob1.getCreationDate());
+    assertEquals(updated, retrievedJob1.getLastUpdateDate());
+    assertEquals(false, retrievedJob1.getEnabled());
+
+    // Test that value was correctly moved
+    MStringInput targetInput = (MStringInput) retrievedJob1.getFromJobConfig()
+        .getConfigs().get(0).getInputs().get(0);
+    assertEquals("Hi there!", targetInput.getValue());
+    targetInput = (MStringInput) retrievedJob1.getToJobConfig().getConfigs().get(0)
+        .getInputs().get(0);
+    assertEquals("Hi there again!", targetInput.getValue());
+  }
 
 }
diff --git a/common/src/test/java/org/apache/sqoop/json/TestJobsBean.java b/common/src/test/java/org/apache/sqoop/json/TestJobsBean.java
deleted file mode 100644 (file)
index e9c969b..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sqoop.json;
-
-import static org.testng.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.sqoop.common.Direction;
-import org.apache.sqoop.json.util.BeanTestUtil;
-import org.apache.sqoop.model.MJob;
-import org.apache.sqoop.model.MStringInput;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.ParseException;
-import org.testng.annotations.Test;
-
-public class TestJobsBean {
-
-  @Test
-  public void testJobsSerialization() throws ParseException {
-    Date created = new Date();
-    Date updated = new Date();
-    MJob job1 = BeanTestUtil.createJob("ahoj", "The big Job", 22L, created, updated);
-    MJob job2 = BeanTestUtil.createJob("ahoj", "The small Job", 44L, created, updated);
-
-    List<MJob> jobs = new ArrayList<MJob>();
-    jobs.add(job1);
-    jobs.add(job2);
-
-    // Fill some data at the beginning
-    MStringInput input = (MStringInput) job1.getFromJobConfig().getConfigs().get(0)
-        .getInputs().get(0);
-    input.setValue("Hi there!");
-    input = (MStringInput) job1.getToJobConfig().getConfigs().get(0).getInputs().get(0);
-    input.setValue("Hi there again!");
-
-    // Serialize it to JSON object
-    JobsBean jobsBean = new JobsBean(jobs);
-    JSONObject json = jobsBean.extract(false);
-
-    // "Move" it across network in text form
-    String jobJsonString = json.toJSONString();
-
-    // Retrieved transferred object
-    JSONObject parsedJobsJson = JSONUtils.parse(jobJsonString);
-    JobsBean parsedJobsBean = new JobsBean();
-    parsedJobsBean.restore(parsedJobsJson);
-    MJob retrievedJob1 = parsedJobsBean.getJobs().get(0);
-    MJob retrievedJob2 = parsedJobsBean.getJobs().get(1);
-
-    // Check id and name
-    assertEquals(22L, retrievedJob1.getPersistenceId());
-    assertEquals("The big Job", retrievedJob1.getName());
-
-    assertEquals(44L, retrievedJob2.getPersistenceId());
-    assertEquals("The small Job", retrievedJob2.getName());
-
-    assertEquals(retrievedJob1.getFromLinkName(), "fromLinkName");
-    assertEquals(retrievedJob1.getToLinkName(), "toLinkName");
-    assertEquals(retrievedJob1.getFromConnectorName(), "from_ahoj");
-    assertEquals(retrievedJob1.getToConnectorName(), "to_ahoj");
-    assertEquals(created, retrievedJob1.getCreationDate());
-    assertEquals(updated, retrievedJob1.getLastUpdateDate());
-    assertEquals(false, retrievedJob1.getEnabled());
-
-    // Test that value was correctly moved
-    MStringInput targetInput = (MStringInput) retrievedJob1.getFromJobConfig()
-        .getConfigs().get(0).getInputs().get(0);
-    assertEquals("Hi there!", targetInput.getValue());
-    targetInput = (MStringInput) retrievedJob1.getToJobConfig().getConfigs().get(0)
-        .getInputs().get(0);
-    assertEquals("Hi there again!", targetInput.getValue());
-  }
-}
index b2fce4f..9dfcb0b 100644 (file)
@@ -33,7 +33,6 @@ import org.apache.sqoop.driver.Driver;
 import org.apache.sqoop.driver.JobManager;
 import org.apache.sqoop.json.JSONUtils;
 import org.apache.sqoop.json.JobBean;
-import org.apache.sqoop.json.JobsBean;
 import org.apache.sqoop.json.JsonBean;
 import org.apache.sqoop.json.SubmissionBean;
 import org.apache.sqoop.json.ValidationResultBean;
@@ -279,7 +278,7 @@ public class JobRequestHandler implements RequestHandler {
       // Authorization check
       jobList = AuthorizationEngine.filterResource(ctx.getUserName(), MResource.TYPE.JOB, jobList);
 
-      jobBean = createJobsBean(jobList, locale);
+      jobBean = createJobBean(jobList, locale);
     } else
     // all jobs in the system
     if (ctx.getPath().contains(JOBS_PATH)
@@ -291,7 +290,7 @@ public class JobRequestHandler implements RequestHandler {
       // Authorization check
       jobList = AuthorizationEngine.filterResource(ctx.getUserName(), MResource.TYPE.JOB, jobList);
 
-      jobBean = createJobsBean(jobList, locale);
+      jobBean = createJobBean(jobList, locale);
     }
     // job by Id
     else {
@@ -315,12 +314,6 @@ public class JobRequestHandler implements RequestHandler {
     return jobBean;
   }
 
-  private JobsBean createJobsBean(List<MJob> jobs, Locale locale) {
-    JobsBean jobsBean = new JobsBean(jobs);
-    addConnectorConfigBundle(jobsBean, locale);
-    return jobsBean;
-  }
-
   private void addConnectorConfigBundle(JobBean bean, Locale locale) {
     // Add associated resources into the bean
     for (MJob job : bean.getJobs()) {
index 5f346ae..f046e25 100644 (file)
@@ -21,7 +21,7 @@ import org.apache.commons.io.Charsets;
 import org.apache.commons.io.IOUtils;
 import org.apache.sqoop.common.VersionInfo;
 import org.apache.sqoop.json.JSONUtils;
-import org.apache.sqoop.json.JobsBean;
+import org.apache.sqoop.json.JobBean;
 import org.apache.sqoop.json.LinkBean;
 import org.apache.sqoop.json.SubmissionsBean;
 import org.apache.sqoop.model.*;
@@ -75,7 +75,7 @@ public class RepositoryDumpLoadToolTest extends SqoopTestCase {
 
       // verify the job
       JSONObject jsonJobs = (JSONObject) json.get(JSONConstants.JOBS);
-      JobsBean jobsBean = new JobsBean();
+      JobBean jobsBean = new JobBean();
       jobsBean.restore(jsonJobs);
       verifyJobs(jobsBean.getJobs());
 
index 18f48c7..49978fa 100644 (file)
@@ -33,7 +33,7 @@ import org.apache.log4j.Logger;
 import org.apache.sqoop.cli.SqoopGnuParser;
 import org.apache.sqoop.common.VersionInfo;
 import org.apache.sqoop.connector.ConnectorManager;
-import org.apache.sqoop.json.JobsBean;
+import org.apache.sqoop.json.JobBean;
 import org.apache.sqoop.json.LinkBean;
 import org.apache.sqoop.json.SubmissionsBean;
 import org.apache.sqoop.model.MLink;
@@ -112,7 +112,7 @@ public class RepositoryDumpTool extends ConfiguredTool {
     result.put(JSONConstants.LINKS, linksJsonObject);
 
     LOG.info("Dumping Jobs with skipSensitive=" + String.valueOf(skipSensitive));
-    JobsBean jobs = new JobsBean(repository.findJobs());
+    JobBean jobs = new JobBean(repository.findJobs());
     JSONObject jobsJsonObject = jobs.extract(skipSensitive);
     result.put(JSONConstants.JOBS, jobsJsonObject);
 
index 34d1ab2..08c914a 100644 (file)
@@ -41,7 +41,7 @@ import org.apache.sqoop.connector.spi.SqoopConnector;
 import org.apache.sqoop.driver.Driver;
 import org.apache.sqoop.driver.DriverUpgrader;
 import org.apache.sqoop.json.JSONUtils;
-import org.apache.sqoop.json.JobsBean;
+import org.apache.sqoop.json.JobBean;
 import org.apache.sqoop.json.LinkBean;
 import org.apache.sqoop.json.SubmissionsBean;
 import org.apache.sqoop.model.ConfigUtils;
@@ -181,7 +181,7 @@ public class RepositoryLoadTool extends ConfiguredTool {
     removeJobIfLinkNotExist((JSONArray) jsonJobs.get(JSONConstants.JOBS),
             JSONConstants.TO_LINK_NAME);
 
-    JobsBean jobsBean = new JobsBean();
+    JobBean jobsBean = new JobBean();
     jobsBean.restore(jsonJobs);
 
     for (MJob job : jobsBean.getJobs()) {