sqoop-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jar...@apache.org
Subject [1/3] sqoop git commit: SQOOP-1442: Sqoop2: Validations: Serialize validations over the wire for client transfer
Date Wed, 14 Oct 2015 00:00:29 GMT
Repository: sqoop
Updated Branches:
  refs/heads/sqoop2 1d4d70ac2 -> d69bd34e0


http://git-wip-us.apache.org/repos/asf/sqoop/blob/d69bd34e/core/src/test/java/org/apache/sqoop/driver/TestDriverConfigUpgrader.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/sqoop/driver/TestDriverConfigUpgrader.java b/core/src/test/java/org/apache/sqoop/driver/TestDriverConfigUpgrader.java
index 84020d6..ddafd19 100644
--- a/core/src/test/java/org/apache/sqoop/driver/TestDriverConfigUpgrader.java
+++ b/core/src/test/java/org/apache/sqoop/driver/TestDriverConfigUpgrader.java
@@ -21,6 +21,7 @@ package org.apache.sqoop.driver;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
 
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -32,6 +33,7 @@ import org.apache.sqoop.model.MDriverConfig;
 import org.apache.sqoop.model.MInput;
 import org.apache.sqoop.model.MIntegerInput;
 import org.apache.sqoop.model.MStringInput;
+import org.apache.sqoop.model.MValidator;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
@@ -106,56 +108,73 @@ public class TestDriverConfigUpgrader {
   }
 
   MDriverConfig job() {
-    return new MDriverConfig(configs1());
+    return new MDriverConfig(configs1(), validators1());
   }
 
   MDriverConfig job1() {
-    return new MDriverConfig(configs1());
+    return new MDriverConfig(configs1(), validators1());
   }
 
   MDriverConfig job2() {
-    return new MDriverConfig(configs2());
+    return new MDriverConfig(configs2(), validators2());
   }
 
   MDriverConfig job3() {
-    return new MDriverConfig(configs3());
+    return new MDriverConfig(configs3(), validators3());
   }
 
   List<MConfig> configs1() {
-    List<MConfig> list = new LinkedList<MConfig>();
-    list.add(new MConfig("f1", inputs1("f1")));
+    List<MConfig> list = new LinkedList<>();
+    list.add(new MConfig("f1", inputs1("f1"), Collections.EMPTY_LIST));
+    return list;
+  }
+
+  List<MValidator> validators1() {
+    List<MValidator> list = new LinkedList<>();
+    list.add(new MValidator("testClass", ""));
     return list;
   }
 
   List<MInput<?>> inputs1(String formName) {
     List<MInput<?>> list = new LinkedList<MInput<?>>();
     list.add(new MStringInput(formName + ".s1", false, InputEditable.ANY, StringUtils.EMPTY,
-        (short) 30));
+        (short) 30, Collections.EMPTY_LIST));
     list.add(new MStringInput(formName + ".s2", false, InputEditable.ANY, StringUtils.EMPTY,
-        (short) 30));
-    list.add(new MIntegerInput(formName + ".i", false, InputEditable.ANY, StringUtils.EMPTY));
+        (short) 30, Collections.EMPTY_LIST));
+    list.add(new MIntegerInput(formName + ".i", false, InputEditable.ANY, StringUtils.EMPTY,
Collections.EMPTY_LIST));
     return list;
   }
 
   List<MConfig> configs2() {
     List<MConfig> list = new LinkedList<MConfig>();
-    list.add(new MConfig("f1", inputs2("f1")));
+    list.add(new MConfig("f1", inputs2("f1"), Collections.EMPTY_LIST));
+    return list;
+  }
+
+  List<MValidator> validators2() {
+    List<MValidator> list = new LinkedList<>();
+    list.add(new MValidator("testClass2", "2"));
     return list;
   }
 
   List<MInput<?>> inputs2(String formName) {
     List<MInput<?>> list = new LinkedList<MInput<?>>();
     list.add(new MStringInput(formName + ".s1", false, InputEditable.ANY, StringUtils.EMPTY,
-        (short) 30));
+        (short) 30, Collections.EMPTY_LIST));
     list.add(new MStringInput(formName + ".s2_", false, InputEditable.ANY, StringUtils.EMPTY,
-        (short) 30));
-    list.add(new MIntegerInput(formName + ".i", false, InputEditable.ANY, StringUtils.EMPTY));
+        (short) 30, Collections.EMPTY_LIST));
+    list.add(new MIntegerInput(formName + ".i", false, InputEditable.ANY, StringUtils.EMPTY,
Collections.EMPTY_LIST));
     return list;
   }
 
   List<MConfig> configs3() {
     List<MConfig> list = new LinkedList<MConfig>();
-    list.add(new MConfig("f2", inputs1("f2")));
+    list.add(new MConfig("f2", inputs1("f2"), Collections.EMPTY_LIST));
+    return list;
+  }
+
+  List<MValidator> validators3() {
+    List<MValidator> list = new LinkedList<>();
     return list;
   }
 }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/d69bd34e/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java b/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java
index 1d630a9..78728f6 100644
--- a/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java
+++ b/core/src/test/java/org/apache/sqoop/repository/TestJdbcRepository.java
@@ -59,6 +59,7 @@ import org.apache.sqoop.model.MJob;
 import org.apache.sqoop.model.MLink;
 import org.apache.sqoop.model.MLinkConfig;
 import org.apache.sqoop.model.MToConfig;
+import org.apache.sqoop.model.MValidator;
 import org.apache.sqoop.model.Validator;
 import org.apache.sqoop.validation.Status;
 import org.apache.sqoop.validation.validators.AbstractValidator;
@@ -743,9 +744,9 @@ public class TestJdbcRepository {
 
   private MConnector connector(long connectorId, String version) {
     MConnector connector = new MConnector("A" + connectorId, "A" + connectorId, version +
connectorId,
-        new MLinkConfig(new LinkedList<MConfig>()),
-        new MFromConfig(ConfigUtils.toConfigs(ValidConfiguration.class)),
-        new MToConfig(ConfigUtils.toConfigs(ValidConfiguration.class)));
+        new MLinkConfig(new LinkedList<MConfig>(), new LinkedList<MValidator>()),
+        new MFromConfig(ConfigUtils.toConfigs(ValidConfiguration.class), ConfigUtils.getMValidatorsFromConfigurationClass(ValidConfiguration.class)),
+        new MToConfig(ConfigUtils.toConfigs(ValidConfiguration.class), ConfigUtils.getMValidatorsFromConfigurationClass(ValidConfiguration.class)));
     connector.setPersistenceId(connectorId);
     return connector;
   }
@@ -755,7 +756,7 @@ public class TestJdbcRepository {
   }
 
   private MDriver driver() {
-    MDriver driver = new MDriver(new MDriverConfig(new LinkedList<MConfig>()),
+    MDriver driver = new MDriver(new MDriverConfig(new LinkedList<MConfig>(), new LinkedList<MValidator>()),
         DriverBean.CURRENT_DRIVER_VERSION);
     driver.setPersistenceId(1);
     return driver;
@@ -768,7 +769,7 @@ public class TestJdbcRepository {
   }
 
   private MLink link(long linkId, String linkName, long connectorId) {
-    MLink link = new MLink(connectorId, new MLinkConfig(new LinkedList<MConfig>()));
+    MLink link = new MLink(connectorId, new MLinkConfig(new LinkedList<MConfig>(),
new LinkedList<MValidator>()));
     link.setPersistenceId(linkId);
     link.setName(linkName);
     return link;
@@ -776,9 +777,9 @@ public class TestJdbcRepository {
 
   private MJob job(long id, String jobName, long fromConnectorId, long toConnectorId, long
fromLinkId, long toLinkId) {
     MJob job = new MJob(fromConnectorId, toConnectorId, fromLinkId, toLinkId,
-        new MFromConfig(new LinkedList<MConfig>()),
-        new MToConfig(new LinkedList<MConfig>()),
-        new MDriverConfig(new LinkedList<MConfig>()));
+        new MFromConfig(new LinkedList<MConfig>(), new LinkedList<MValidator>()),
+        new MToConfig(new LinkedList<MConfig>(), new LinkedList<MValidator>()),
+        new MDriverConfig(new LinkedList<MConfig>(), new LinkedList<MValidator>()));
     job.setPersistenceId(id);
     job.setName(jobName);
     return job;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/d69bd34e/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java
----------------------------------------------------------------------
diff --git a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java
b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java
index 79b9e99..d1ee320 100644
--- a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java
+++ b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java
@@ -25,6 +25,7 @@ import java.sql.Statement;
 import java.sql.Timestamp;
 import java.sql.Types;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -341,7 +342,7 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler
{
         List<MConfig> driverConfigs = new ArrayList<MConfig>();
         loadDriverConfigs(driverConfigs, driverConfigFetchStmt, driverConfigInputFetchStmt,
1, conn);
 
-        mDriver = new MDriver(new MDriverConfig(driverConfigs), driverVersion);
+        mDriver = new MDriver(new MDriverConfig(driverConfigs, Collections.EMPTY_LIST), driverVersion);
         mDriver.setPersistenceId(driverId);
       }
     } catch (SQLException ex) {
@@ -1491,13 +1492,13 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler
{
         MFromConfig fromJobConfig = null;
         MToConfig toJobConfig = null;
         if (supportedDirections.isDirectionSupported(Direction.FROM)) {
-          fromJobConfig = new MFromConfig(fromConfig);
+          fromJobConfig = new MFromConfig(fromConfig, Collections.EMPTY_LIST);
         }
         if (supportedDirections.isDirectionSupported(Direction.TO)) {
-          toJobConfig = new MToConfig(toConfig);
+          toJobConfig = new MToConfig(toConfig, Collections.EMPTY_LIST);
         }
         MConnector mc = new MConnector(connectorName, connectorClassName, connectorVersion,
-            new MLinkConfig(linkConfig), fromJobConfig, toJobConfig);
+            new MLinkConfig(linkConfig, Collections.EMPTY_LIST), fromJobConfig, toJobConfig);
         mc.setPersistenceId(connectorId);
 
         connectors.add(mc);
@@ -1534,7 +1535,7 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler
{
 
         loadConnectorConfigs(connectorLinkConfig, fromConfig, toConfig, connectorConfigFetchStatement,
             connectorConfigInputStatement, 2, conn);
-        MLink link = new MLink(connectorId, new MLinkConfig(connectorLinkConfig));
+        MLink link = new MLink(connectorId, new MLinkConfig(connectorLinkConfig, Collections.EMPTY_LIST));
 
         link.setPersistenceId(id);
         link.setName(name);
@@ -1649,9 +1650,9 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler
{
         MJob job = new MJob(
             fromConnectorId, toConnectorId,
             fromLinkId, toLinkId,
-            new MFromConfig(fromConnectorFromJobConfig),
-            new MToConfig(toConnectorToJobConfig),
-            new MDriverConfig(driverConfig));
+            new MFromConfig(fromConnectorFromJobConfig, Collections.EMPTY_LIST),
+            new MToConfig(toConnectorToJobConfig, Collections.EMPTY_LIST),
+            new MDriverConfig(driverConfig, Collections.EMPTY_LIST));
 
         job.setPersistenceId(id);
         job.setName(name);
@@ -1724,9 +1725,9 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler
{
         MJob job = new MJob(
           fromConnectorId, toConnectorId,
           fromLinkId, toLinkId,
-          new MFromConfig(mFromConfig.getConfigs()),
-          new MToConfig(mToConfig.getConfigs()),
-          new MDriverConfig(driverConfig));
+          new MFromConfig(mFromConfig.getConfigs(), Collections.EMPTY_LIST),
+          new MToConfig(mToConfig.getConfigs(), Collections.EMPTY_LIST),
+          new MDriverConfig(driverConfig, Collections.EMPTY_LIST));
 
         job.setPersistenceId(id);
         job.setName(name);
@@ -1969,7 +1970,7 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler
{
         int configIndex = rsetConfig.getInt(5);
         List<MInput<?>> configInputs = new ArrayList<MInput<?>>();
 
-        MConfig mDriverConfig = new MConfig(configName, configInputs);
+        MConfig mDriverConfig = new MConfig(configName, configInputs, Collections.EMPTY_LIST);
         mDriverConfig.setPersistenceId(configId);
 
         inputFetchStmt.setLong(configPosition, configId);
@@ -1995,28 +1996,28 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler
{
             MInput input = null;
             switch (mit) {
               case STRING:
-                input = new MStringInput(inputName, inputSensitivity, editableEnum, overrides,
inputStrLength);
+                input = new MStringInput(inputName, inputSensitivity, editableEnum, overrides,
inputStrLength, Collections.EMPTY_LIST);
                 break;
               case MAP:
-                input = new MMapInput(inputName, inputSensitivity, editableEnum, overrides,
StringUtils.EMPTY);
+                input = new MMapInput(inputName, inputSensitivity, editableEnum, overrides,
StringUtils.EMPTY, Collections.EMPTY_LIST);
                 break;
               case BOOLEAN:
-                input = new MBooleanInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MBooleanInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               case INTEGER:
-                input = new MIntegerInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MIntegerInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               case LONG:
-                input = new MLongInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MLongInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               case ENUM:
-                input = new MEnumInput(inputName, inputSensitivity, editableEnum, overrides,
inputEnumValues.split(","));
+                input = new MEnumInput(inputName, inputSensitivity, editableEnum, overrides,
inputEnumValues.split(","), Collections.EMPTY_LIST);
                 break;
               case LIST:
-                input = new MListInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MListInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               case DATETIME:
-                input = new MDateTimeInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MDateTimeInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               default:
                 throw new SqoopException(CommonRepositoryError.COMMON_0003,
@@ -2145,7 +2146,7 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler
{
         int configIndex = rsetConfig.getInt(5);
         List<MInput<?>> configInputs = new ArrayList<MInput<?>>();
 
-        MConfig config = new MConfig(configName, configInputs);
+        MConfig config = new MConfig(configName, configInputs, Collections.EMPTY_LIST);
         config.setPersistenceId(configId);
 
         inputFetchStmt.setLong(configPosition, configId);
@@ -2173,29 +2174,29 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler
{
             switch (mit) {
               case STRING:
                 input = new MStringInput(inputName, inputSensitivity, editableEnum, overrides,
-                        inputStrLength);
+                        inputStrLength, Collections.EMPTY_LIST);
                 break;
               case MAP:
-                input = new MMapInput(inputName, inputSensitivity, editableEnum, overrides,
StringUtils.EMPTY);
+                input = new MMapInput(inputName, inputSensitivity, editableEnum, overrides,
StringUtils.EMPTY, Collections.EMPTY_LIST);
                 break;
               case BOOLEAN:
-                input = new MBooleanInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MBooleanInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               case INTEGER:
-                input = new MIntegerInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MIntegerInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               case LONG:
-                input = new MLongInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MLongInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               case ENUM:
                 input = new MEnumInput(inputName, inputSensitivity, editableEnum, overrides,
-                        inputEnumValues.split(","));
+                        inputEnumValues.split(","), Collections.EMPTY_LIST);
                 break;
               case LIST:
-                input = new MListInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MListInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               case DATETIME:
-                input = new MDateTimeInput(inputName, inputSensitivity, editableEnum, overrides);
+                input = new MDateTimeInput(inputName, inputSensitivity, editableEnum, overrides,
Collections.EMPTY_LIST);
                 break;
               default:
                 throw new SqoopException(CommonRepositoryError.COMMON_0003, "input-" + inputName
+ ":"

http://git-wip-us.apache.org/repos/asf/sqoop/blob/d69bd34e/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 ed176fe..e7b4322 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
@@ -31,6 +31,7 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 
 import java.sql.*;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Properties;
@@ -984,65 +985,65 @@ abstract public class DerbyTestCase {
   }
 
   protected MLinkConfig getLinkConfig() {
-    return new MLinkConfig(getConfigs("LINK1", "LINK2"));
+    return new MLinkConfig(getConfigs("LINK1", "LINK2"), Collections.EMPTY_LIST);
   }
 
   protected MFromConfig getFromConfig() {
-    return new MFromConfig(getConfigs("JOB3", "JOB4"));
+    return new MFromConfig(getConfigs("JOB3", "JOB4"), Collections.EMPTY_LIST);
   }
 
   protected MFromConfig getBadFromConfig() {
-    return new MFromConfig(getBadConfigs("FROM1", "FROM2"));
+    return new MFromConfig(getBadConfigs("FROM1", "FROM2"), Collections.EMPTY_LIST);
   }
 
   protected MFromConfig getMultipleOverridesFromConfig() {
-    return new MFromConfig(getMultipleOverrideConfigs("FROM1", "FROM2"));
+    return new MFromConfig(getMultipleOverrideConfigs("FROM1", "FROM2"), Collections.EMPTY_LIST);
   }
 
   protected MFromConfig getNonExistentOverridesFromConfig() {
-    return new MFromConfig(getBadConfigsWithNonExistingInputOverrides("FROM1", "FROM2"));
+    return new MFromConfig(getBadConfigsWithNonExistingInputOverrides("FROM1", "FROM2"),
Collections.EMPTY_LIST);
   }
 
   protected MToConfig getToConfig() {
-    return new MToConfig(getConfigs("JOB5", "JOB6"));
+    return new MToConfig(getConfigs("JOB5", "JOB6"), Collections.EMPTY_LIST);
   }
 
   protected MDriverConfig getDriverConfig() {
-    return new MDriverConfig(getConfigs("DRIVER1", "DRIVER2"));
+    return new MDriverConfig(getConfigs("DRIVER1", "DRIVER2"), Collections.EMPTY_LIST);
   }
 
   protected MDriverConfig getBadDriverConfig() {
-    return new MDriverConfig(getBadConfigsWithSelfOverrides("DRIVER1", "DRIVER2"));
+    return new MDriverConfig(getBadConfigsWithSelfOverrides("DRIVER1", "DRIVER2"), Collections.EMPTY_LIST);
   }
 
   protected List<MConfig> getConfigs(String configName1, String configName2) {
     List<MConfig> configs = new LinkedList<MConfig>();
 
     List<MInput<?>> inputs = new LinkedList<MInput<?>>();
-    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I2", (short) 30);
+    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I2", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".I5", StringUtils.EMPTY);
+    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".I5", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1");
+    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY);
+    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY,
Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName1, inputs));
+    configs.add(new MConfig(configName1, inputs, Collections.EMPTY_LIST));
 
     inputs = new LinkedList<MInput<?>>();
-    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30);
+    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY);
+    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1");
+    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY);
+    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY,
Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName2, inputs));
+    configs.add(new MConfig(configName2, inputs, Collections.EMPTY_LIST));
 
     return configs;
   }
@@ -1052,30 +1053,30 @@ abstract public class DerbyTestCase {
 
     List<MInput<?>> inputs = new LinkedList<MInput<?>>();
     // I1 overrides another user_only attribute, hence a bad config
-    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I4", (short) 30);
+    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I4", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".I5", StringUtils.EMPTY);
+    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".I5", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1");
+    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY);
+    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY,
Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName1, inputs));
+    configs.add(new MConfig(configName1, inputs, Collections.EMPTY_LIST));
 
     inputs = new LinkedList<MInput<?>>();
-    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30);
+    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY);
+    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1");
+    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY);
+    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY,
Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName2, inputs));
+    configs.add(new MConfig(configName2, inputs, Collections.EMPTY_LIST));
 
     return configs;
   }
@@ -1085,30 +1086,30 @@ abstract public class DerbyTestCase {
 
     List<MInput<?>> inputs = new LinkedList<MInput<?>>();
     // I1 overrides another user_only attribute, hence a bad config
-    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I4", (short) 30);
+    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I4", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".I5", StringUtils.EMPTY);
+    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".I5", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1");
+    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, configName1
+ ".I4");
+    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, configName1
+ ".I4", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName1, inputs));
+    configs.add(new MConfig(configName1, inputs, Collections.EMPTY_LIST));
 
     inputs = new LinkedList<MInput<?>>();
-    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30);
+    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY);
+    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1");
+    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY);
+    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY,
Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName2, inputs));
+    configs.add(new MConfig(configName2, inputs, Collections.EMPTY_LIST));
 
     return configs;
   }
@@ -1117,30 +1118,30 @@ abstract public class DerbyTestCase {
     List<MConfig> configs = new LinkedList<MConfig>();
 
     List<MInput<?>> inputs = new LinkedList<MInput<?>>();
-    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I2", (short) 30);
+    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I2", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".I1," + configName1 + ".I3", StringUtils.EMPTY);
+    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".I1," + configName1 + ".I3", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1");
+    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY);
+    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY,
Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName1, inputs));
+    configs.add(new MConfig(configName1, inputs, Collections.EMPTY_LIST));
 
     inputs = new LinkedList<MInput<?>>();
-    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30);
+    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY);
+    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1");
+    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY);
+    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY,
Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName2, inputs));
+    configs.add(new MConfig(configName2, inputs, Collections.EMPTY_LIST));
 
     return configs;
   }
@@ -1151,30 +1152,30 @@ abstract public class DerbyTestCase {
 
     List<MInput<?>> inputs = new LinkedList<MInput<?>>();
     // I2 overrides a nonexistant input
-    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I2", (short) 30);
+    MInput input = new MStringInput(configName1 + ".I1", false, InputEditable.USER_ONLY,
configName1 + ".I2", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".FOO", StringUtils.EMPTY);
+    input = new MMapInput(configName1 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName1
+ ".FOO", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1");
+    input = new MIntegerInput(configName1 + ".I3", false, InputEditable.ANY, configName1
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY);
+    input = new MBooleanInput(configName1 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY,
Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName1 + ".I5", false, InputEditable.ANY, configName1 + ".I4,"
+ configName1 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName1, inputs));
+    configs.add(new MConfig(configName1, inputs, Collections.EMPTY_LIST));
 
     inputs = new LinkedList<MInput<?>>();
-    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30);
+    input = new MStringInput(configName2 + ".I1", false, InputEditable.USER_ONLY, configName2
+ ".I2", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY);
+    input = new MMapInput(configName2 + ".I2", false, InputEditable.CONNECTOR_ONLY, configName2
+ ".I5", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1");
+    input = new MIntegerInput(configName2 + ".I3", false, InputEditable.ANY, configName2
+ ".I1", Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY);
+    input = new MBooleanInput(configName2 + ".I4", false, InputEditable.USER_ONLY, StringUtils.EMPTY,
Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"});
+    input = new MEnumInput(configName2 + ".I5", false, InputEditable.ANY, configName2 + ".I4,"
+ configName2 + ".I3", new String[] {"YES", "NO"}, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName2, inputs));
+    configs.add(new MConfig(configName2, inputs, Collections.EMPTY_LIST));
 
     return configs;
   }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/d69bd34e/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java
----------------------------------------------------------------------
diff --git a/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java
b/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java
index 44f968a..fcd4b71 100644
--- a/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java
+++ b/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java
@@ -17,6 +17,7 @@
  */
 package org.apache.sqoop.integration.repository.mysql;
 
+import java.util.Collections;
 import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
@@ -148,19 +149,19 @@ abstract public class MySqlTestCase extends TestCase {
   }
 
   protected MLinkConfig getLinkConfig() {
-    return new MLinkConfig(getConfigs("l1", "l2"));
+    return new MLinkConfig(getConfigs("l1", "l2"), Collections.EMPTY_LIST);
   }
 
   protected MFromConfig getFromConfig() {
-    return new MFromConfig(getConfigs("from1", "from2"));
+    return new MFromConfig(getConfigs("from1", "from2"), Collections.EMPTY_LIST);
   }
 
   protected MToConfig getToConfig() {
-    return new MToConfig(getConfigs("to1", "to2"));
+    return new MToConfig(getConfigs("to1", "to2"), Collections.EMPTY_LIST);
   }
 
   protected MDriverConfig getDriverConfig() {
-    return new MDriverConfig(getConfigs("d1", "d2"));
+    return new MDriverConfig(getConfigs("d1", "d2"), Collections.EMPTY_LIST);
   }
 
   protected List<MConfig> getConfigs(String configName1, String configName2) {
@@ -168,18 +169,18 @@ abstract public class MySqlTestCase extends TestCase {
 
     List<MInput<?>> inputs = new LinkedList<MInput<?>>();
     MInput<?> input = new MStringInput("I1", false, InputEditable.ANY,
-        StringUtils.EMPTY, (short) 30);
+        StringUtils.EMPTY, (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput("I2", false, InputEditable.ANY, "I1", StringUtils.EMPTY);
+    input = new MMapInput("I2", false, InputEditable.ANY, "I1", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName1, inputs));
+    configs.add(new MConfig(configName1, inputs, Collections.EMPTY_LIST));
 
     inputs = new LinkedList<MInput<?>>();
-    input = new MStringInput("I3", false, InputEditable.ANY, "I4", (short) 30);
+    input = new MStringInput("I3", false, InputEditable.ANY, "I4", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput("I4", false, InputEditable.ANY, "I3", StringUtils.EMPTY);
+    input = new MMapInput("I4", false, InputEditable.ANY, "I3", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName2, inputs));
+    configs.add(new MConfig(configName2, inputs, Collections.EMPTY_LIST));
 
     return configs;
   }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/d69bd34e/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java
----------------------------------------------------------------------
diff --git a/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java
b/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java
index faa0399..fbaf5dd 100644
--- a/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java
+++ b/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java
@@ -31,6 +31,7 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 
+import java.util.Collections;
 import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
@@ -130,37 +131,37 @@ abstract public class PostgresqlTestCase {
   }
 
   protected MLinkConfig getLinkConfig() {
-    return new MLinkConfig(getConfigs("l1", "l2"));
+    return new MLinkConfig(getConfigs("l1", "l2"), Collections.EMPTY_LIST);
   }
 
   protected MFromConfig getFromConfig() {
-    return new MFromConfig(getConfigs("from1", "from2"));
+    return new MFromConfig(getConfigs("from1", "from2"), Collections.EMPTY_LIST);
   }
 
   protected MToConfig getToConfig() {
-    return new MToConfig(getConfigs("to1", "to2"));
+    return new MToConfig(getConfigs("to1", "to2"), Collections.EMPTY_LIST);
   }
 
   protected MDriverConfig getDriverConfig() {
-    return new MDriverConfig(getConfigs("d1", "d2"));
+    return new MDriverConfig(getConfigs("d1", "d2"), Collections.EMPTY_LIST);
   }
 
   protected List<MConfig> getConfigs(String configName1, String configName2) {
     List<MConfig> configs = new LinkedList<MConfig>();
 
     List<MInput<?>> inputs = new LinkedList<MInput<?>>();
-    MInput<?> input = new MStringInput("I1", false, InputEditable.ANY, StringUtils.EMPTY,
(short) 30);
+    MInput<?> input = new MStringInput("I1", false, InputEditable.ANY, StringUtils.EMPTY,
(short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput("I2", false, InputEditable.ANY, "I1", StringUtils.EMPTY);
+    input = new MMapInput("I2", false, InputEditable.ANY, "I1", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName1, inputs));
+    configs.add(new MConfig(configName1, inputs, Collections.EMPTY_LIST));
 
     inputs = new LinkedList<MInput<?>>();
-    input = new MStringInput("I3", false, InputEditable.ANY, "I4", (short) 30);
+    input = new MStringInput("I3", false, InputEditable.ANY, "I4", (short) 30, Collections.EMPTY_LIST);
     inputs.add(input);
-    input = new MMapInput("I4", false, InputEditable.ANY, "I3", StringUtils.EMPTY);
+    input = new MMapInput("I4", false, InputEditable.ANY, "I3", StringUtils.EMPTY, Collections.EMPTY_LIST);
     inputs.add(input);
-    configs.add(new MConfig(configName2, inputs));
+    configs.add(new MConfig(configName2, inputs, Collections.EMPTY_LIST));
 
     return configs;
   }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/d69bd34e/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 2dbde97..852330e 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
@@ -42,6 +42,7 @@ import org.apache.sqoop.validation.Status;
 import org.joda.time.DateTime;
 
 import java.io.IOException;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -59,7 +60,7 @@ public final class ConfigFiller {
    * Internal input that will be reused for loading names for link and
    * job objects.
    */
-  private static MStringInput nameInput = new MStringInput("object-name", false, InputEditable.ANY,
StringUtils.EMPTY, (short)25);
+  private static MStringInput nameInput = new MStringInput("object-name", false, InputEditable.ANY,
StringUtils.EMPTY, (short)25, Collections.EMPTY_LIST);
 
   /**
    * Fill job object based on CLI options.

http://git-wip-us.apache.org/repos/asf/sqoop/blob/d69bd34e/tools/src/main/java/org/apache/sqoop/tools/tool/RepositoryLoadTool.java
----------------------------------------------------------------------
diff --git a/tools/src/main/java/org/apache/sqoop/tools/tool/RepositoryLoadTool.java b/tools/src/main/java/org/apache/sqoop/tools/tool/RepositoryLoadTool.java
index 244683d..2ac8ce8 100644
--- a/tools/src/main/java/org/apache/sqoop/tools/tool/RepositoryLoadTool.java
+++ b/tools/src/main/java/org/apache/sqoop/tools/tool/RepositoryLoadTool.java
@@ -59,6 +59,7 @@ import org.apache.sqoop.model.MLinkConfig;
 import org.apache.sqoop.model.MPersistableEntity;
 import org.apache.sqoop.model.MSubmission;
 import org.apache.sqoop.model.MToConfig;
+import org.apache.sqoop.model.MValidator;
 import org.apache.sqoop.repository.Repository;
 import org.apache.sqoop.repository.RepositoryManager;
 import org.apache.sqoop.tools.ConfiguredTool;
@@ -273,7 +274,8 @@ public class RepositoryLoadTool extends ConfiguredTool {
     ConnectorConfigurableUpgrader connectorConfigUpgrader = ConnectorManager.getInstance().getSqoopConnector(mConnector.getUniqueName()).getConfigurableUpgrader();
 
     List<MConfig> connectorConfigs = mConnector.getLinkConfig().clone(false).getConfigs();
-    MLinkConfig newLinkConfigs = new MLinkConfig(connectorConfigs);
+    List<MValidator> connectorValidators = mConnector.getLinkConfig().getCloneOfValidators();
+    MLinkConfig newLinkConfigs = new MLinkConfig(connectorConfigs, connectorValidators);
 
     // upgrading the configs to make sure they match the current repository
     connectorConfigUpgrader.upgradeLinkConfig(link.getConnectorLinkConfig(), newLinkConfigs);


Mime
View raw message