mirror of
https://github.com/apache/sqoop.git
synced 2025-05-07 20:03:16 +08:00
SQOOP-1687: Sqoop2: Single resource in JSON should not be a list
(Veena Basavaraj via Abraham Elmahrek)
This commit is contained in:
parent
8aa4648130
commit
ec3316b100
@ -72,9 +72,8 @@ public Map<Long, ResourceBundle> getResourceBundles() {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public JSONObject extract(boolean skipSensitive) {
|
public JSONObject extract(boolean skipSensitive) {
|
||||||
JSONArray connectorArray = extractConnectors(skipSensitive);
|
|
||||||
JSONObject connector = new JSONObject();
|
JSONObject connector = new JSONObject();
|
||||||
connector.put(CONNECTOR, connectorArray);
|
connector.put(CONNECTOR, extractConnector(skipSensitive, connectors.get(0)));
|
||||||
return connector;
|
return connector;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,91 +81,100 @@ public JSONObject extract(boolean skipSensitive) {
|
|||||||
protected JSONArray extractConnectors(boolean skipSensitive) {
|
protected JSONArray extractConnectors(boolean skipSensitive) {
|
||||||
JSONArray connectorArray = new JSONArray();
|
JSONArray connectorArray = new JSONArray();
|
||||||
for (MConnector connector : connectors) {
|
for (MConnector connector : connectors) {
|
||||||
JSONObject connectorJsonObject = new JSONObject();
|
connectorArray.add(extractConnector(skipSensitive, connector));
|
||||||
connectorJsonObject.put(ID, connector.getPersistenceId());
|
|
||||||
connectorJsonObject.put(NAME, connector.getUniqueName());
|
|
||||||
connectorJsonObject.put(CLASS, connector.getClassName());
|
|
||||||
connectorJsonObject.put(CONFIGURABLE_VERSION, connector.getVersion());
|
|
||||||
connectorJsonObject.put(
|
|
||||||
CONNECTOR_LINK_CONFIG,
|
|
||||||
extractConfigList(connector.getLinkConfig().getConfigs(), connector.getLinkConfig()
|
|
||||||
.getType(), skipSensitive));
|
|
||||||
|
|
||||||
connectorJsonObject.put(CONNECTOR_JOB_CONFIG, new JSONObject());
|
|
||||||
// add sub fields to the job config for from and to
|
|
||||||
if (connector.getFromConfig() != null) {
|
|
||||||
((JSONObject) connectorJsonObject.get(CONNECTOR_JOB_CONFIG)).put(
|
|
||||||
Direction.FROM,
|
|
||||||
extractConfigList(connector.getFromConfig().getConfigs(), connector.getFromConfig()
|
|
||||||
.getType(), skipSensitive));
|
|
||||||
}
|
|
||||||
if (connector.getToConfig() != null) {
|
|
||||||
((JSONObject) connectorJsonObject.get(CONNECTOR_JOB_CONFIG)).put(
|
|
||||||
Direction.TO,
|
|
||||||
extractConfigList(connector.getToConfig().getConfigs(), connector.getToConfig()
|
|
||||||
.getType(), skipSensitive));
|
|
||||||
}
|
|
||||||
// add the config-param inside each connector
|
|
||||||
connectorJsonObject.put(ALL_CONFIG_RESOURCES, new JSONObject());
|
|
||||||
if (connectorConfigBundles != null && !connectorConfigBundles.isEmpty()) {
|
|
||||||
connectorJsonObject.put(ALL_CONFIG_RESOURCES,
|
|
||||||
extractConfigParamBundle(connectorConfigBundles.get(connector.getPersistenceId())));
|
|
||||||
}
|
|
||||||
connectorArray.add(connectorJsonObject);
|
|
||||||
}
|
}
|
||||||
return connectorArray;
|
return connectorArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private JSONObject extractConnector(boolean skipSensitive, MConnector connector) {
|
||||||
|
JSONObject connectorJsonObject = new JSONObject();
|
||||||
|
connectorJsonObject.put(ID, connector.getPersistenceId());
|
||||||
|
connectorJsonObject.put(NAME, connector.getUniqueName());
|
||||||
|
connectorJsonObject.put(CLASS, connector.getClassName());
|
||||||
|
connectorJsonObject.put(CONFIGURABLE_VERSION, connector.getVersion());
|
||||||
|
connectorJsonObject.put(
|
||||||
|
CONNECTOR_LINK_CONFIG,
|
||||||
|
extractConfigList(connector.getLinkConfig().getConfigs(), connector.getLinkConfig()
|
||||||
|
.getType(), skipSensitive));
|
||||||
|
|
||||||
|
connectorJsonObject.put(CONNECTOR_JOB_CONFIG, new JSONObject());
|
||||||
|
// add sub fields to the job config for from and to
|
||||||
|
if (connector.getFromConfig() != null) {
|
||||||
|
((JSONObject) connectorJsonObject.get(CONNECTOR_JOB_CONFIG)).put(
|
||||||
|
Direction.FROM,
|
||||||
|
extractConfigList(connector.getFromConfig().getConfigs(), connector.getFromConfig()
|
||||||
|
.getType(), skipSensitive));
|
||||||
|
}
|
||||||
|
if (connector.getToConfig() != null) {
|
||||||
|
((JSONObject) connectorJsonObject.get(CONNECTOR_JOB_CONFIG)).put(
|
||||||
|
Direction.TO,
|
||||||
|
extractConfigList(connector.getToConfig().getConfigs(), connector.getToConfig()
|
||||||
|
.getType(), skipSensitive));
|
||||||
|
}
|
||||||
|
// add the config-param inside each connector
|
||||||
|
connectorJsonObject.put(ALL_CONFIGS, new JSONObject());
|
||||||
|
if (connectorConfigBundles != null && !connectorConfigBundles.isEmpty()) {
|
||||||
|
connectorJsonObject.put(ALL_CONFIGS,
|
||||||
|
extractConfigParamBundle(connectorConfigBundles.get(connector.getPersistenceId())));
|
||||||
|
}
|
||||||
|
return connectorJsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restore(JSONObject jsonObject) {
|
public void restore(JSONObject jsonObject) {
|
||||||
JSONArray array = (JSONArray) jsonObject.get(CONNECTOR);
|
connectors = new ArrayList<MConnector>();
|
||||||
restoreConnectors(array);
|
connectorConfigBundles = new HashMap<Long, ResourceBundle>();
|
||||||
|
JSONObject obj = (JSONObject) jsonObject.get(CONNECTOR);
|
||||||
|
connectors.add(restoreConnector(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void restoreConnectors(JSONArray array) {
|
protected void restoreConnectors(JSONArray array) {
|
||||||
connectors = new ArrayList<MConnector>();
|
connectors = new ArrayList<MConnector>();
|
||||||
connectorConfigBundles = new HashMap<Long, ResourceBundle>();
|
connectorConfigBundles = new HashMap<Long, ResourceBundle>();
|
||||||
|
|
||||||
for (Object obj : array) {
|
for (Object obj : array) {
|
||||||
JSONObject object = (JSONObject) obj;
|
connectors.add(restoreConnector(obj));
|
||||||
|
|
||||||
long connectorId = (Long) object.get(ID);
|
|
||||||
String uniqueName = (String) object.get(NAME);
|
|
||||||
String className = (String) object.get(CLASS);
|
|
||||||
String version = (String) object.get(CONFIGURABLE_VERSION);
|
|
||||||
|
|
||||||
List<MConfig> linkConfigs = restoreConfigList((JSONArray) object
|
|
||||||
.get(CONNECTOR_LINK_CONFIG));
|
|
||||||
|
|
||||||
// parent that encapsulates both the from/to configs
|
|
||||||
JSONObject jobConfigJson = (JSONObject) object.get(CONNECTOR_JOB_CONFIG);
|
|
||||||
JSONArray fromJobConfigJson = (JSONArray) jobConfigJson.get(Direction.FROM.name());
|
|
||||||
JSONArray toJobConfigJson = (JSONArray) jobConfigJson.get(Direction.TO.name());
|
|
||||||
|
|
||||||
MFromConfig fromConfig = null;
|
|
||||||
MToConfig toConfig = null;
|
|
||||||
if (fromJobConfigJson != null) {
|
|
||||||
|
|
||||||
List<MConfig> fromJobConfig = restoreConfigList(fromJobConfigJson);
|
|
||||||
fromConfig = new MFromConfig(fromJobConfig);
|
|
||||||
|
|
||||||
}
|
|
||||||
if (toJobConfigJson != null) {
|
|
||||||
List<MConfig> toJobConfig = restoreConfigList(toJobConfigJson);
|
|
||||||
toConfig = new MToConfig(toJobConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
MLinkConfig linkConfig = new MLinkConfig(linkConfigs);
|
|
||||||
MConnector connector = new MConnector(uniqueName, className, version, linkConfig, fromConfig,
|
|
||||||
toConfig);
|
|
||||||
|
|
||||||
connector.setPersistenceId(connectorId);
|
|
||||||
if (object.containsKey(ALL_CONFIG_RESOURCES)) {
|
|
||||||
|
|
||||||
JSONObject jsonConfigBundle = (JSONObject) object.get(ALL_CONFIG_RESOURCES);
|
|
||||||
connectorConfigBundles.put(connectorId, restoreConfigParamBundle(jsonConfigBundle));
|
|
||||||
}
|
|
||||||
connectors.add(connector);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MConnector restoreConnector(Object obj) {
|
||||||
|
JSONObject object = (JSONObject) obj;
|
||||||
|
long connectorId = (Long) object.get(ID);
|
||||||
|
String uniqueName = (String) object.get(NAME);
|
||||||
|
String className = (String) object.get(CLASS);
|
||||||
|
String version = (String) object.get(CONFIGURABLE_VERSION);
|
||||||
|
|
||||||
|
List<MConfig> linkConfigs = restoreConfigList((JSONArray) object
|
||||||
|
.get(CONNECTOR_LINK_CONFIG));
|
||||||
|
|
||||||
|
// parent that encapsulates both the from/to configs
|
||||||
|
JSONObject jobConfigJson = (JSONObject) object.get(CONNECTOR_JOB_CONFIG);
|
||||||
|
JSONArray fromJobConfigJson = (JSONArray) jobConfigJson.get(Direction.FROM.name());
|
||||||
|
JSONArray toJobConfigJson = (JSONArray) jobConfigJson.get(Direction.TO.name());
|
||||||
|
|
||||||
|
MFromConfig fromConfig = null;
|
||||||
|
MToConfig toConfig = null;
|
||||||
|
if (fromJobConfigJson != null) {
|
||||||
|
|
||||||
|
List<MConfig> fromJobConfig = restoreConfigList(fromJobConfigJson);
|
||||||
|
fromConfig = new MFromConfig(fromJobConfig);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (toJobConfigJson != null) {
|
||||||
|
List<MConfig> toJobConfig = restoreConfigList(toJobConfigJson);
|
||||||
|
toConfig = new MToConfig(toJobConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
MLinkConfig linkConfig = new MLinkConfig(linkConfigs);
|
||||||
|
MConnector connector = new MConnector(uniqueName, className, version, linkConfig, fromConfig,
|
||||||
|
toConfig);
|
||||||
|
|
||||||
|
connector.setPersistenceId(connectorId);
|
||||||
|
if (object.containsKey(ALL_CONFIGS)) {
|
||||||
|
|
||||||
|
JSONObject jsonConfigBundle = (JSONObject) object.get(ALL_CONFIGS);
|
||||||
|
connectorConfigBundles.put(connectorId, restoreConfigParamBundle(jsonConfigBundle));
|
||||||
|
}
|
||||||
|
return connector;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ public JSONObject extract(boolean skipSensitive) {
|
|||||||
result.put(ID, driver.getPersistenceId());
|
result.put(ID, driver.getPersistenceId());
|
||||||
result.put(CONFIGURABLE_VERSION, driver.getVersion());
|
result.put(CONFIGURABLE_VERSION, driver.getVersion());
|
||||||
result.put(DRIVER_JOB_CONFIG, configs);
|
result.put(DRIVER_JOB_CONFIG, configs);
|
||||||
result.put(ALL_CONFIG_RESOURCES, extractConfigParamBundle(driverConfigBundle));
|
result.put(ALL_CONFIGS, extractConfigParamBundle(driverConfigBundle));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,6 +80,6 @@ public void restore(JSONObject jsonObject) {
|
|||||||
List<MConfig> driverConfig = restoreConfigList((JSONArray) jsonObject.get(DRIVER_JOB_CONFIG));
|
List<MConfig> driverConfig = restoreConfigList((JSONArray) jsonObject.get(DRIVER_JOB_CONFIG));
|
||||||
driver = new MDriver(new MDriverConfig(driverConfig), driverVersion);
|
driver = new MDriver(new MDriverConfig(driverConfig), driverVersion);
|
||||||
driver.setPersistenceId(id);
|
driver.setPersistenceId(id);
|
||||||
driverConfigBundle = restoreConfigParamBundle((JSONObject) jsonObject.get(ALL_CONFIG_RESOURCES));
|
driverConfigBundle = restoreConfigParamBundle((JSONObject) jsonObject.get(ALL_CONFIGS));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,9 +101,8 @@ public ResourceBundle getDriverConfigBundle() {
|
|||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public JSONObject extract(boolean skipSensitive) {
|
public JSONObject extract(boolean skipSensitive) {
|
||||||
JSONArray jobArray = extractJobs(skipSensitive);
|
|
||||||
JSONObject job = new JSONObject();
|
JSONObject job = new JSONObject();
|
||||||
job.put(JOB, jobArray);
|
job.put(JOB, extractJob(skipSensitive, jobs.get(0)));
|
||||||
return job;
|
return job;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,83 +110,89 @@ public JSONObject extract(boolean skipSensitive) {
|
|||||||
protected JSONArray extractJobs(boolean skipSensitive) {
|
protected JSONArray extractJobs(boolean skipSensitive) {
|
||||||
JSONArray jobArray = new JSONArray();
|
JSONArray jobArray = new JSONArray();
|
||||||
for (MJob job : jobs) {
|
for (MJob job : jobs) {
|
||||||
JSONObject object = new JSONObject();
|
jobArray.add(extractJob(skipSensitive, job));
|
||||||
|
|
||||||
object.put(ID, job.getPersistenceId());
|
|
||||||
object.put(NAME, job.getName());
|
|
||||||
object.put(ENABLED, job.getEnabled());
|
|
||||||
object.put(CREATION_USER, job.getCreationUser());
|
|
||||||
object.put(CREATION_DATE, job.getCreationDate().getTime());
|
|
||||||
object.put(UPDATE_USER, job.getLastUpdateUser());
|
|
||||||
object.put(UPDATE_DATE, job.getLastUpdateDate().getTime());
|
|
||||||
// job link associated connectors
|
|
||||||
// TODO(SQOOP-1634): fix not to require the connectorIds in the post data
|
|
||||||
object.put(FROM_CONNECTOR_ID, job.getConnectorId(Direction.FROM));
|
|
||||||
object.put(TO_CONNECTOR_ID, job.getConnectorId(Direction.TO));
|
|
||||||
// job associated links
|
|
||||||
object.put(FROM_LINK_ID, job.getLinkId(Direction.FROM));
|
|
||||||
object.put(TO_LINK_ID, job.getLinkId(Direction.TO));
|
|
||||||
// job configs
|
|
||||||
MFromConfig fromConfigList = job.getFromJobConfig();
|
|
||||||
object.put(FROM_CONFIG_VALUES,
|
|
||||||
extractConfigList(fromConfigList.getConfigs(), fromConfigList.getType(), skipSensitive));
|
|
||||||
MToConfig toConfigList = job.getToJobConfig();
|
|
||||||
object.put(TO_CONFIG_VALUES,
|
|
||||||
extractConfigList(toConfigList.getConfigs(), toConfigList.getType(), skipSensitive));
|
|
||||||
MDriverConfig driverConfigList = job.getDriverConfig();
|
|
||||||
object.put(
|
|
||||||
DRIVER_CONFIG_VALUES,
|
|
||||||
extractConfigList(driverConfigList.getConfigs(), driverConfigList.getType(),
|
|
||||||
skipSensitive));
|
|
||||||
|
|
||||||
jobArray.add(object);
|
|
||||||
}
|
}
|
||||||
return jobArray;
|
return jobArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private JSONObject extractJob(boolean skipSensitive, MJob job) {
|
||||||
|
JSONObject object = new JSONObject();
|
||||||
|
object.put(ID, job.getPersistenceId());
|
||||||
|
object.put(NAME, job.getName());
|
||||||
|
object.put(ENABLED, job.getEnabled());
|
||||||
|
object.put(CREATION_USER, job.getCreationUser());
|
||||||
|
object.put(CREATION_DATE, job.getCreationDate().getTime());
|
||||||
|
object.put(UPDATE_USER, job.getLastUpdateUser());
|
||||||
|
object.put(UPDATE_DATE, job.getLastUpdateDate().getTime());
|
||||||
|
// job link associated connectors
|
||||||
|
// TODO(SQOOP-1634): fix not to require the connectorIds in the post data
|
||||||
|
object.put(FROM_CONNECTOR_ID, job.getConnectorId(Direction.FROM));
|
||||||
|
object.put(TO_CONNECTOR_ID, job.getConnectorId(Direction.TO));
|
||||||
|
// job associated links
|
||||||
|
object.put(FROM_LINK_ID, job.getLinkId(Direction.FROM));
|
||||||
|
object.put(TO_LINK_ID, job.getLinkId(Direction.TO));
|
||||||
|
// job configs
|
||||||
|
MFromConfig fromConfigList = job.getFromJobConfig();
|
||||||
|
object.put(FROM_CONFIG_VALUES,
|
||||||
|
extractConfigList(fromConfigList.getConfigs(), fromConfigList.getType(), skipSensitive));
|
||||||
|
MToConfig toConfigList = job.getToJobConfig();
|
||||||
|
object.put(TO_CONFIG_VALUES,
|
||||||
|
extractConfigList(toConfigList.getConfigs(), toConfigList.getType(), skipSensitive));
|
||||||
|
MDriverConfig driverConfigList = job.getDriverConfig();
|
||||||
|
object.put(
|
||||||
|
DRIVER_CONFIG_VALUES,
|
||||||
|
extractConfigList(driverConfigList.getConfigs(), driverConfigList.getType(),
|
||||||
|
skipSensitive));
|
||||||
|
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restore(JSONObject jsonObject) {
|
public void restore(JSONObject jsonObject) {
|
||||||
JSONArray array = (JSONArray) jsonObject.get(JOB);
|
jobs = new ArrayList<MJob>();
|
||||||
restoreJobs(array);
|
JSONObject obj = (JSONObject) jsonObject.get(JOB);
|
||||||
|
jobs.add(restoreJob(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void restoreJobs(JSONArray array) {
|
protected void restoreJobs(JSONArray array) {
|
||||||
jobs = new ArrayList<MJob>();
|
jobs = new ArrayList<MJob>();
|
||||||
|
|
||||||
for (Object obj : array) {
|
for (Object obj : array) {
|
||||||
JSONObject object = (JSONObject) obj;
|
jobs.add(restoreJob(obj));
|
||||||
|
|
||||||
long fromConnectorId = (Long) object.get(FROM_CONNECTOR_ID);
|
|
||||||
long toConnectorId = (Long) object.get(TO_CONNECTOR_ID);
|
|
||||||
long fromConnectionId = (Long) object.get(FROM_LINK_ID);
|
|
||||||
long toConnectionId = (Long) object.get(TO_LINK_ID);
|
|
||||||
JSONArray fromConfigJson = (JSONArray) object.get(FROM_CONFIG_VALUES);
|
|
||||||
JSONArray toConfigJson = (JSONArray) object.get(TO_CONFIG_VALUES);
|
|
||||||
JSONArray driverConfigJson = (JSONArray) object.get(DRIVER_CONFIG_VALUES);
|
|
||||||
|
|
||||||
List<MConfig> fromConfig = restoreConfigList(fromConfigJson);
|
|
||||||
List<MConfig> toConfig = restoreConfigList(toConfigJson);
|
|
||||||
List<MConfig> driverConfig = restoreConfigList(driverConfigJson);
|
|
||||||
|
|
||||||
MJob job = new MJob(
|
|
||||||
fromConnectorId,
|
|
||||||
toConnectorId,
|
|
||||||
fromConnectionId,
|
|
||||||
toConnectionId,
|
|
||||||
new MFromConfig(fromConfig),
|
|
||||||
new MToConfig(toConfig),
|
|
||||||
new MDriverConfig(driverConfig)
|
|
||||||
);
|
|
||||||
|
|
||||||
job.setPersistenceId((Long) object.get(ID));
|
|
||||||
job.setName((String) object.get(NAME));
|
|
||||||
job.setEnabled((Boolean) object.get(ENABLED));
|
|
||||||
job.setCreationUser((String) object.get(CREATION_USER));
|
|
||||||
job.setCreationDate(new Date((Long) object.get(CREATION_DATE)));
|
|
||||||
job.setLastUpdateUser((String) object.get(UPDATE_USER));
|
|
||||||
job.setLastUpdateDate(new Date((Long) object.get(UPDATE_DATE)));
|
|
||||||
|
|
||||||
jobs.add(job);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private MJob restoreJob(Object obj) {
|
||||||
|
JSONObject object = (JSONObject) obj;
|
||||||
|
long fromConnectorId = (Long) object.get(FROM_CONNECTOR_ID);
|
||||||
|
long toConnectorId = (Long) object.get(TO_CONNECTOR_ID);
|
||||||
|
long fromConnectionId = (Long) object.get(FROM_LINK_ID);
|
||||||
|
long toConnectionId = (Long) object.get(TO_LINK_ID);
|
||||||
|
JSONArray fromConfigJson = (JSONArray) object.get(FROM_CONFIG_VALUES);
|
||||||
|
JSONArray toConfigJson = (JSONArray) object.get(TO_CONFIG_VALUES);
|
||||||
|
JSONArray driverConfigJson = (JSONArray) object.get(DRIVER_CONFIG_VALUES);
|
||||||
|
|
||||||
|
List<MConfig> fromConfig = restoreConfigList(fromConfigJson);
|
||||||
|
List<MConfig> toConfig = restoreConfigList(toConfigJson);
|
||||||
|
List<MConfig> driverConfig = restoreConfigList(driverConfigJson);
|
||||||
|
|
||||||
|
MJob job = new MJob(
|
||||||
|
fromConnectorId,
|
||||||
|
toConnectorId,
|
||||||
|
fromConnectionId,
|
||||||
|
toConnectionId,
|
||||||
|
new MFromConfig(fromConfig),
|
||||||
|
new MToConfig(toConfig),
|
||||||
|
new MDriverConfig(driverConfig)
|
||||||
|
);
|
||||||
|
|
||||||
|
job.setPersistenceId((Long) object.get(ID));
|
||||||
|
job.setName((String) object.get(NAME));
|
||||||
|
job.setEnabled((Boolean) object.get(ENABLED));
|
||||||
|
job.setCreationUser((String) object.get(CREATION_USER));
|
||||||
|
job.setCreationDate(new Date((Long) object.get(CREATION_DATE)));
|
||||||
|
job.setLastUpdateUser((String) object.get(UPDATE_USER));
|
||||||
|
job.setLastUpdateDate(new Date((Long) object.get(UPDATE_DATE)));
|
||||||
|
return job;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -23,7 +23,7 @@ public interface JsonBean {
|
|||||||
|
|
||||||
// common JSON constants for the rest-api response
|
// common JSON constants for the rest-api response
|
||||||
static final String CONFIGURABLE_VERSION = "version";
|
static final String CONFIGURABLE_VERSION = "version";
|
||||||
static final String ALL_CONFIG_RESOURCES= "all-config-resources";
|
static final String ALL_CONFIGS= "all-config-resources";
|
||||||
|
|
||||||
@Deprecated // should not be used anymore in the rest api
|
@Deprecated // should not be used anymore in the rest api
|
||||||
static final String ALL = "all";
|
static final String ALL = "all";
|
||||||
|
@ -34,10 +34,9 @@
|
|||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Link representation that is being send across the network between
|
* Link representation that is being send across the network between Sqoop
|
||||||
* Sqoop server and client. Server might optionally send configs
|
* server and client. Server might optionally send configs associated with the
|
||||||
* associated with the links to spare client of sending another HTTP
|
* links to spare client of sending another HTTP requests to obtain them.
|
||||||
* requests to obtain them.
|
|
||||||
*/
|
*/
|
||||||
public class LinkBean implements JsonBean {
|
public class LinkBean implements JsonBean {
|
||||||
|
|
||||||
@ -89,54 +88,63 @@ public ResourceBundle getConnectorConfigBundle(Long id) {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public JSONObject extract(boolean skipSensitive) {
|
public JSONObject extract(boolean skipSensitive) {
|
||||||
JSONArray linkArray = extractLinks(skipSensitive);
|
|
||||||
JSONObject link = new JSONObject();
|
JSONObject link = new JSONObject();
|
||||||
link.put(LINK, linkArray);
|
link.put(LINK, extractLink(skipSensitive, links.get(0)));
|
||||||
return link;
|
return link;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
protected JSONArray extractLinks(boolean skipSensitive) {
|
protected JSONArray extractLinks(boolean skipSensitive) {
|
||||||
JSONArray linkArray = new JSONArray();
|
JSONArray linkArray = new JSONArray();
|
||||||
|
for (MLink link : links) {
|
||||||
for(MLink link : links) {
|
linkArray.add(extractLink(skipSensitive, link));
|
||||||
JSONObject linkJsonObject = new JSONObject();
|
|
||||||
linkJsonObject.put(ID, link.getPersistenceId());
|
|
||||||
linkJsonObject.put(NAME, link.getName());
|
|
||||||
linkJsonObject.put(ENABLED, link.getEnabled());
|
|
||||||
linkJsonObject.put(CREATION_USER, link.getCreationUser());
|
|
||||||
linkJsonObject.put(CREATION_DATE, link.getCreationDate().getTime());
|
|
||||||
linkJsonObject.put(UPDATE_USER, link.getLastUpdateUser());
|
|
||||||
linkJsonObject.put(UPDATE_DATE, link.getLastUpdateDate().getTime());
|
|
||||||
linkJsonObject.put(CONNECTOR_ID, link.getConnectorId());
|
|
||||||
linkJsonObject.put(LINK_CONFIG_VALUES,
|
|
||||||
extractConfigList(link.getConnectorLinkConfig().getConfigs(), link.getConnectorLinkConfig().getType(), skipSensitive));
|
|
||||||
linkArray.add(linkJsonObject);
|
|
||||||
}
|
}
|
||||||
return linkArray;
|
return linkArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private JSONObject extractLink(boolean skipSensitive, MLink link) {
|
||||||
|
JSONObject linkJsonObject = new JSONObject();
|
||||||
|
linkJsonObject.put(ID, link.getPersistenceId());
|
||||||
|
linkJsonObject.put(NAME, link.getName());
|
||||||
|
linkJsonObject.put(ENABLED, link.getEnabled());
|
||||||
|
linkJsonObject.put(CREATION_USER, link.getCreationUser());
|
||||||
|
linkJsonObject.put(CREATION_DATE, link.getCreationDate().getTime());
|
||||||
|
linkJsonObject.put(UPDATE_USER, link.getLastUpdateUser());
|
||||||
|
linkJsonObject.put(UPDATE_DATE, link.getLastUpdateDate().getTime());
|
||||||
|
linkJsonObject.put(CONNECTOR_ID, link.getConnectorId());
|
||||||
|
linkJsonObject.put(LINK_CONFIG_VALUES,
|
||||||
|
extractConfigList(link.getConnectorLinkConfig().getConfigs(), link.getConnectorLinkConfig().getType(), skipSensitive));
|
||||||
|
return linkJsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restore(JSONObject jsonObject) {
|
public void restore(JSONObject jsonObject) {
|
||||||
JSONArray array = (JSONArray) jsonObject.get(LINK);
|
links = new ArrayList<MLink>();
|
||||||
restoreLinks(array);
|
JSONObject obj = (JSONObject) jsonObject.get(LINK);
|
||||||
|
links.add(restoreLink(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void restoreLinks(JSONArray array) {
|
protected void restoreLinks(JSONArray array) {
|
||||||
links = new ArrayList<MLink>();
|
links = new ArrayList<MLink>();
|
||||||
for (Object obj : array) {
|
for (Object obj : array) {
|
||||||
JSONObject object = (JSONObject) obj;
|
links.add(restoreLink(obj));
|
||||||
long connectorId = (Long) object.get(CONNECTOR_ID);
|
|
||||||
JSONArray connectorLinkConfig = (JSONArray) object.get(LINK_CONFIG_VALUES);
|
|
||||||
List<MConfig> linkConfig = restoreConfigList(connectorLinkConfig);
|
|
||||||
MLink link = new MLink(connectorId, new MLinkConfig(linkConfig));
|
|
||||||
link.setPersistenceId((Long) object.get(ID));
|
|
||||||
link.setName((String) object.get(NAME));
|
|
||||||
link.setEnabled((Boolean) object.get(ENABLED));
|
|
||||||
link.setCreationUser((String) object.get(CREATION_USER));
|
|
||||||
link.setCreationDate(new Date((Long) object.get(CREATION_DATE)));
|
|
||||||
link.setLastUpdateUser((String) object.get(UPDATE_USER));
|
|
||||||
link.setLastUpdateDate(new Date((Long) object.get(UPDATE_DATE)));
|
|
||||||
links.add(link);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MLink restoreLink(Object obj) {
|
||||||
|
JSONObject object = (JSONObject) obj;
|
||||||
|
long connectorId = (Long) object.get(CONNECTOR_ID);
|
||||||
|
JSONArray connectorLinkConfig = (JSONArray) object.get(LINK_CONFIG_VALUES);
|
||||||
|
List<MConfig> linkConfig = restoreConfigList(connectorLinkConfig);
|
||||||
|
MLink link = new MLink(connectorId, new MLinkConfig(linkConfig));
|
||||||
|
link.setPersistenceId((Long) object.get(ID));
|
||||||
|
link.setName((String) object.get(NAME));
|
||||||
|
link.setEnabled((Boolean) object.get(ENABLED));
|
||||||
|
link.setCreationUser((String) object.get(CREATION_USER));
|
||||||
|
link.setCreationDate(new Date((Long) object.get(CREATION_DATE)));
|
||||||
|
link.setLastUpdateUser((String) object.get(UPDATE_USER));
|
||||||
|
link.setLastUpdateDate(new Date((Long) object.get(UPDATE_DATE)));
|
||||||
|
return link;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,61 +80,64 @@ public SubmissionBean() {
|
|||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public JSONObject extract(boolean skipSensitive) {
|
public JSONObject extract(boolean skipSensitive) {
|
||||||
JSONArray submissionArray = extractSubmissions();
|
|
||||||
JSONObject submission = new JSONObject();
|
JSONObject submission = new JSONObject();
|
||||||
submission.put(SUBMISSION, submissionArray);
|
submission.put(SUBMISSION, extractSubmission(submissions.get(0)));
|
||||||
return submission;
|
return submission;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
protected JSONArray extractSubmissions() {
|
protected JSONArray extractSubmissions() {
|
||||||
JSONArray submissionsArray = new JSONArray();
|
JSONArray submissionsArray = new JSONArray();
|
||||||
|
for (MSubmission submission : submissions) {
|
||||||
for (MSubmission submission : this.submissions) {
|
submissionsArray.add(extractSubmission(submission));
|
||||||
JSONObject object = new JSONObject();
|
|
||||||
|
|
||||||
object.put(JOB, submission.getJobId());
|
|
||||||
object.put(STATUS, submission.getStatus().name());
|
|
||||||
object.put(PROGRESS, submission.getProgress());
|
|
||||||
|
|
||||||
if (submission.getCreationUser() != null) {
|
|
||||||
object.put(CREATION_USER, submission.getCreationUser());
|
|
||||||
}
|
|
||||||
if (submission.getCreationDate() != null) {
|
|
||||||
object.put(CREATION_DATE, submission.getCreationDate().getTime());
|
|
||||||
}
|
|
||||||
if (submission.getLastUpdateUser() != null) {
|
|
||||||
object.put(LAST_UPDATE_USER, submission.getLastUpdateUser());
|
|
||||||
}
|
|
||||||
if (submission.getLastUpdateDate() != null) {
|
|
||||||
object.put(LAST_UPDATE_DATE, submission.getLastUpdateDate().getTime());
|
|
||||||
}
|
|
||||||
if (submission.getExternalId() != null) {
|
|
||||||
object.put(EXTERNAL_ID, submission.getExternalId());
|
|
||||||
}
|
|
||||||
if (submission.getExternalLink() != null) {
|
|
||||||
object.put(EXTERNAL_LINK, submission.getExternalLink());
|
|
||||||
}
|
|
||||||
if (submission.getExceptionInfo() != null) {
|
|
||||||
object.put(EXCEPTION, submission.getExceptionInfo());
|
|
||||||
}
|
|
||||||
if (submission.getExceptionStackTrace() != null) {
|
|
||||||
object.put(EXCEPTION_TRACE, submission.getExceptionStackTrace());
|
|
||||||
}
|
|
||||||
if (submission.getCounters() != null) {
|
|
||||||
object.put(COUNTERS, extractCounters(submission.getCounters()));
|
|
||||||
}
|
|
||||||
if (submission.getFromSchema() != null) {
|
|
||||||
object.put(FROM_SCHEMA, extractSchema(submission.getFromSchema()));
|
|
||||||
}
|
|
||||||
if (submission.getToSchema() != null) {
|
|
||||||
object.put(TO_SCHEMA, extractSchema(submission.getToSchema()));
|
|
||||||
}
|
|
||||||
submissionsArray.add(object);
|
|
||||||
}
|
}
|
||||||
return submissionsArray;
|
return submissionsArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private JSONObject extractSubmission(MSubmission submission) {
|
||||||
|
JSONObject object = new JSONObject();
|
||||||
|
|
||||||
|
object.put(JOB, submission.getJobId());
|
||||||
|
object.put(STATUS, submission.getStatus().name());
|
||||||
|
object.put(PROGRESS, submission.getProgress());
|
||||||
|
|
||||||
|
if (submission.getCreationUser() != null) {
|
||||||
|
object.put(CREATION_USER, submission.getCreationUser());
|
||||||
|
}
|
||||||
|
if (submission.getCreationDate() != null) {
|
||||||
|
object.put(CREATION_DATE, submission.getCreationDate().getTime());
|
||||||
|
}
|
||||||
|
if (submission.getLastUpdateUser() != null) {
|
||||||
|
object.put(LAST_UPDATE_USER, submission.getLastUpdateUser());
|
||||||
|
}
|
||||||
|
if (submission.getLastUpdateDate() != null) {
|
||||||
|
object.put(LAST_UPDATE_DATE, submission.getLastUpdateDate().getTime());
|
||||||
|
}
|
||||||
|
if (submission.getExternalId() != null) {
|
||||||
|
object.put(EXTERNAL_ID, submission.getExternalId());
|
||||||
|
}
|
||||||
|
if (submission.getExternalLink() != null) {
|
||||||
|
object.put(EXTERNAL_LINK, submission.getExternalLink());
|
||||||
|
}
|
||||||
|
if (submission.getExceptionInfo() != null) {
|
||||||
|
object.put(EXCEPTION, submission.getExceptionInfo());
|
||||||
|
}
|
||||||
|
if (submission.getExceptionStackTrace() != null) {
|
||||||
|
object.put(EXCEPTION_TRACE, submission.getExceptionStackTrace());
|
||||||
|
}
|
||||||
|
if (submission.getCounters() != null) {
|
||||||
|
object.put(COUNTERS, extractCounters(submission.getCounters()));
|
||||||
|
}
|
||||||
|
if (submission.getFromSchema() != null) {
|
||||||
|
object.put(FROM_SCHEMA, extractSchema(submission.getFromSchema()));
|
||||||
|
}
|
||||||
|
if (submission.getToSchema() != null) {
|
||||||
|
object.put(TO_SCHEMA, extractSchema(submission.getToSchema()));
|
||||||
|
}
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private JSONObject extractCounters(Counters counters) {
|
private JSONObject extractCounters(Counters counters) {
|
||||||
JSONObject counterArray = new JSONObject();
|
JSONObject counterArray = new JSONObject();
|
||||||
@ -151,59 +154,62 @@ private JSONObject extractCounters(Counters counters) {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restore(JSONObject json) {
|
public void restore(JSONObject json) {
|
||||||
JSONArray submissionArray = (JSONArray) json.get(SUBMISSION);
|
submissions = new ArrayList<MSubmission>();
|
||||||
restoreSubmissions(submissionArray);
|
JSONObject obj = (JSONObject) json.get(SUBMISSION);
|
||||||
|
submissions.add(restoreSubmission(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void restoreSubmissions(JSONArray array) {
|
protected void restoreSubmissions(JSONArray array) {
|
||||||
this.submissions = new ArrayList<MSubmission>();
|
submissions = new ArrayList<MSubmission>();
|
||||||
for (Object obj : array) {
|
for (Object obj : array) {
|
||||||
JSONObject object = (JSONObject) obj;
|
submissions.add(restoreSubmission(obj));
|
||||||
MSubmission submission = new MSubmission();
|
|
||||||
|
|
||||||
submission.setJobId((Long) object.get(JOB));
|
|
||||||
submission.setStatus(SubmissionStatus.valueOf((String) object.get(STATUS)));
|
|
||||||
submission.setProgress((Double) object.get(PROGRESS));
|
|
||||||
|
|
||||||
if (object.containsKey(CREATION_USER)) {
|
|
||||||
submission.setCreationUser((String) object.get(CREATION_USER));
|
|
||||||
}
|
|
||||||
if (object.containsKey(CREATION_DATE)) {
|
|
||||||
submission.setCreationDate(new Date((Long) object.get(CREATION_DATE)));
|
|
||||||
}
|
|
||||||
if (object.containsKey(LAST_UPDATE_USER)) {
|
|
||||||
submission.setLastUpdateUser((String) object.get(LAST_UPDATE_USER));
|
|
||||||
}
|
|
||||||
if (object.containsKey(LAST_UPDATE_DATE)) {
|
|
||||||
submission.setLastUpdateDate(new Date((Long) object.get(LAST_UPDATE_DATE)));
|
|
||||||
}
|
|
||||||
if (object.containsKey(EXTERNAL_ID)) {
|
|
||||||
submission.setExternalId((String) object.get(EXTERNAL_ID));
|
|
||||||
}
|
|
||||||
if (object.containsKey(EXTERNAL_LINK)) {
|
|
||||||
submission.setExternalLink((String) object.get(EXTERNAL_LINK));
|
|
||||||
}
|
|
||||||
if (object.containsKey(EXCEPTION)) {
|
|
||||||
submission.setExceptionInfo((String) object.get(EXCEPTION));
|
|
||||||
}
|
|
||||||
if (object.containsKey(EXCEPTION_TRACE)) {
|
|
||||||
submission.setExceptionStackTrace((String) object.get(EXCEPTION_TRACE));
|
|
||||||
}
|
|
||||||
if (object.containsKey(COUNTERS)) {
|
|
||||||
submission.setCounters(restoreCounters((JSONObject) object.get(COUNTERS)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (object.containsKey(FROM_SCHEMA)) {
|
|
||||||
submission.setFromSchema(restoreSchema((JSONObject) object.get(FROM_SCHEMA)));
|
|
||||||
}
|
|
||||||
if (object.containsKey(TO_SCHEMA)) {
|
|
||||||
submission.setToSchema(restoreSchema((JSONObject) object.get(TO_SCHEMA)));
|
|
||||||
}
|
|
||||||
|
|
||||||
this.submissions.add(submission);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MSubmission restoreSubmission(Object obj) {
|
||||||
|
JSONObject object = (JSONObject) obj;
|
||||||
|
MSubmission submission = new MSubmission();
|
||||||
|
submission.setJobId((Long) object.get(JOB));
|
||||||
|
submission.setStatus(SubmissionStatus.valueOf((String) object.get(STATUS)));
|
||||||
|
submission.setProgress((Double) object.get(PROGRESS));
|
||||||
|
|
||||||
|
if (object.containsKey(CREATION_USER)) {
|
||||||
|
submission.setCreationUser((String) object.get(CREATION_USER));
|
||||||
|
}
|
||||||
|
if (object.containsKey(CREATION_DATE)) {
|
||||||
|
submission.setCreationDate(new Date((Long) object.get(CREATION_DATE)));
|
||||||
|
}
|
||||||
|
if (object.containsKey(LAST_UPDATE_USER)) {
|
||||||
|
submission.setLastUpdateUser((String) object.get(LAST_UPDATE_USER));
|
||||||
|
}
|
||||||
|
if (object.containsKey(LAST_UPDATE_DATE)) {
|
||||||
|
submission.setLastUpdateDate(new Date((Long) object.get(LAST_UPDATE_DATE)));
|
||||||
|
}
|
||||||
|
if (object.containsKey(EXTERNAL_ID)) {
|
||||||
|
submission.setExternalId((String) object.get(EXTERNAL_ID));
|
||||||
|
}
|
||||||
|
if (object.containsKey(EXTERNAL_LINK)) {
|
||||||
|
submission.setExternalLink((String) object.get(EXTERNAL_LINK));
|
||||||
|
}
|
||||||
|
if (object.containsKey(EXCEPTION)) {
|
||||||
|
submission.setExceptionInfo((String) object.get(EXCEPTION));
|
||||||
|
}
|
||||||
|
if (object.containsKey(EXCEPTION_TRACE)) {
|
||||||
|
submission.setExceptionStackTrace((String) object.get(EXCEPTION_TRACE));
|
||||||
|
}
|
||||||
|
if (object.containsKey(COUNTERS)) {
|
||||||
|
submission.setCounters(restoreCounters((JSONObject) object.get(COUNTERS)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (object.containsKey(FROM_SCHEMA)) {
|
||||||
|
submission.setFromSchema(restoreSchema((JSONObject) object.get(FROM_SCHEMA)));
|
||||||
|
}
|
||||||
|
if (object.containsKey(TO_SCHEMA)) {
|
||||||
|
submission.setToSchema(restoreSchema((JSONObject) object.get(TO_SCHEMA)));
|
||||||
|
}
|
||||||
|
return submission;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public Counters restoreCounters(JSONObject object) {
|
public Counters restoreCounters(JSONObject object) {
|
||||||
Set<Map.Entry<String, JSONObject>> groupSet = object.entrySet();
|
Set<Map.Entry<String, JSONObject>> groupSet = object.entrySet();
|
||||||
|
@ -17,9 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.sqoop.json;
|
package org.apache.sqoop.json;
|
||||||
|
|
||||||
import static org.apache.sqoop.json.ConfigTestUtil.getConnector;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.apache.sqoop.json.ConfigTestUtil.getResourceBundle;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
@ -27,14 +26,13 @@
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
import org.apache.sqoop.json.util.BeanTestUtil;
|
||||||
|
import org.apache.sqoop.json.util.ConfigTestUtil;
|
||||||
import org.apache.sqoop.model.MConnector;
|
import org.apache.sqoop.model.MConnector;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import org.json.simple.JSONValue;
|
import org.json.simple.JSONValue;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class TestConnectorBean {
|
public class TestConnectorBean {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,16 +40,14 @@ public class TestConnectorBean {
|
|||||||
* equal connector object.
|
* equal connector object.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testSerialization() {
|
public void testConnectorSerialization() {
|
||||||
// Create testing connector
|
// Create testing connector
|
||||||
List<MConnector> connectors = new LinkedList<MConnector>();
|
List<MConnector> connectors = new LinkedList<MConnector>();
|
||||||
connectors.add(getConnector(1L, "jdbc"));
|
connectors.add(BeanTestUtil.getConnector(1L, "jdbc"));
|
||||||
connectors.add(getConnector(2L, "mysql"));
|
|
||||||
|
|
||||||
// Create testing bundles
|
// Create testing bundles
|
||||||
Map<Long, ResourceBundle> configBundles = new HashMap<Long, ResourceBundle>();
|
Map<Long, ResourceBundle> configBundles = new HashMap<Long, ResourceBundle>();
|
||||||
configBundles.put(1L, getResourceBundle());
|
configBundles.put(1L, ConfigTestUtil.getResourceBundle());
|
||||||
configBundles.put(2L, getResourceBundle());
|
|
||||||
|
|
||||||
// Serialize it to JSON object
|
// Serialize it to JSON object
|
||||||
ConnectorBean connectorBean = new ConnectorBean(connectors, configBundles);
|
ConnectorBean connectorBean = new ConnectorBean(connectors, configBundles);
|
||||||
@ -61,75 +57,15 @@ public void testSerialization() {
|
|||||||
String connectorJSONString = connectorJSON.toJSONString();
|
String connectorJSONString = connectorJSON.toJSONString();
|
||||||
|
|
||||||
// Retrieved transferred object
|
// Retrieved transferred object
|
||||||
JSONObject parsedConnector = (JSONObject) JSONValue.parse(connectorJSONString);
|
JSONObject parsedConnectors = (JSONObject) JSONValue.parse(connectorJSONString);
|
||||||
ConnectorBean parsedConnectorBean = new ConnectorBean();
|
ConnectorBean parsedConnectorBean = new ConnectorBean();
|
||||||
parsedConnectorBean.restore(parsedConnector);
|
parsedConnectorBean.restore(parsedConnectors);
|
||||||
|
assertEquals(connectors.size(), 1);
|
||||||
assertEquals(connectors.size(), parsedConnectorBean.getConnectors().size());
|
assertEquals(connectors.size(), parsedConnectorBean.getConnectors().size());
|
||||||
assertEquals(connectors.get(0), parsedConnectorBean.getConnectors().get(0));
|
assertEquals(connectors.get(0), parsedConnectorBean.getConnectors().get(0));
|
||||||
assertEquals(connectors.get(1), parsedConnectorBean.getConnectors().get(1));
|
|
||||||
|
|
||||||
ResourceBundle retrievedBundle = parsedConnectorBean.getResourceBundles().get(1L);
|
ResourceBundle retrievedBundle = parsedConnectorBean.getResourceBundles().get(1L);
|
||||||
assertNotNull(retrievedBundle);
|
assertNotNull(retrievedBundle);
|
||||||
assertEquals("a", retrievedBundle.getString("a"));
|
assertEquals("a", retrievedBundle.getString("a"));
|
||||||
assertEquals("b", retrievedBundle.getString("b"));
|
assertEquals("b", retrievedBundle.getString("b"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testSingleDirection() {
|
|
||||||
// Create testing connector
|
|
||||||
List<MConnector> connectors = new LinkedList<MConnector>();
|
|
||||||
connectors.add(getConnector(1L, "jdbc", true, false));
|
|
||||||
connectors.add(getConnector(2L, "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(1L, "jdbc", false, false));
|
|
||||||
connectors.add(getConnector(2L, "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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,130 @@
|
|||||||
|
/**
|
||||||
|
* 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.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
import org.apache.sqoop.json.util.BeanTestUtil;
|
||||||
|
import org.apache.sqoop.json.util.ConfigTestUtil;
|
||||||
|
import org.apache.sqoop.model.MConnector;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.JSONValue;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class TestConnectorsBean {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectorsSerialization() {
|
||||||
|
// Create testing connector
|
||||||
|
List<MConnector> connectors = new LinkedList<MConnector>();
|
||||||
|
connectors.add(BeanTestUtil.getConnector(1L, "jdbc"));
|
||||||
|
connectors.add(BeanTestUtil.getConnector(2L, "mysql"));
|
||||||
|
|
||||||
|
// Create testing bundles
|
||||||
|
Map<Long, ResourceBundle> configBundles = new HashMap<Long, ResourceBundle>();
|
||||||
|
configBundles.put(1L, ConfigTestUtil.getResourceBundle());
|
||||||
|
configBundles.put(2L, ConfigTestUtil.getResourceBundle());
|
||||||
|
|
||||||
|
// Serialize it to JSON object
|
||||||
|
ConnectorsBean connectorsBean = new ConnectorsBean(connectors, configBundles);
|
||||||
|
JSONObject connectorsJSON = connectorsBean.extract(false);
|
||||||
|
|
||||||
|
// "Move" it across network in text form
|
||||||
|
String connectorsJSONString = connectorsJSON.toJSONString();
|
||||||
|
|
||||||
|
// Retrieved transferred object
|
||||||
|
JSONObject parsedConnectors = (JSONObject) JSONValue.parse(connectorsJSONString);
|
||||||
|
ConnectorsBean parsedConnectorsBean = new ConnectorsBean();
|
||||||
|
parsedConnectorsBean.restore(parsedConnectors);
|
||||||
|
|
||||||
|
assertEquals(connectors.size(), parsedConnectorsBean.getConnectors().size());
|
||||||
|
assertEquals(connectors.get(0), parsedConnectorsBean.getConnectors().get(0));
|
||||||
|
assertEquals(connectors.get(1), parsedConnectorsBean.getConnectors().get(1));
|
||||||
|
|
||||||
|
ResourceBundle retrievedBundle = parsedConnectorsBean.getResourceBundles().get(1L);
|
||||||
|
assertNotNull(retrievedBundle);
|
||||||
|
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(BeanTestUtil.getConnector(1L, "jdbc", true, false));
|
||||||
|
connectors.add(BeanTestUtil.getConnector(2L, "mysql", false, true));
|
||||||
|
|
||||||
|
// Create testing bundles
|
||||||
|
Map<Long, ResourceBundle> bundles = new HashMap<Long, ResourceBundle>();
|
||||||
|
bundles.put(1L, ConfigTestUtil.getResourceBundle());
|
||||||
|
bundles.put(2L, ConfigTestUtil.getResourceBundle());
|
||||||
|
|
||||||
|
// Serialize it to JSON object
|
||||||
|
ConnectorsBean bean = new ConnectorsBean(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);
|
||||||
|
ConnectorsBean retrievedBean = new ConnectorsBean();
|
||||||
|
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(BeanTestUtil.getConnector(1L, "jdbc", false, false));
|
||||||
|
connectors.add(BeanTestUtil.getConnector(2L, "mysql", false, false));
|
||||||
|
|
||||||
|
// Create testing bundles
|
||||||
|
Map<Long, ResourceBundle> bundles = new HashMap<Long, ResourceBundle>();
|
||||||
|
bundles.put(1L, ConfigTestUtil.getResourceBundle());
|
||||||
|
bundles.put(2L, ConfigTestUtil.getResourceBundle());
|
||||||
|
|
||||||
|
// Serialize it to JSON object
|
||||||
|
ConnectorsBean bean = new ConnectorsBean(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);
|
||||||
|
ConnectorsBean retrievedBean = new ConnectorsBean();
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,11 +17,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.sqoop.json;
|
package org.apache.sqoop.json;
|
||||||
|
|
||||||
import static org.apache.sqoop.json.ConfigTestUtil.getResourceBundle;
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
import org.apache.sqoop.json.util.ConfigTestUtil;
|
||||||
import org.apache.sqoop.model.MDriver;
|
import org.apache.sqoop.model.MDriver;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import org.json.simple.JSONValue;
|
import org.json.simple.JSONValue;
|
||||||
@ -41,7 +41,7 @@ public void testSerialization() {
|
|||||||
MDriver driver = new MDriver(ConfigTestUtil.getDriverConfig(), DriverBean.CURRENT_DRIVER_VERSION);
|
MDriver driver = new MDriver(ConfigTestUtil.getDriverConfig(), DriverBean.CURRENT_DRIVER_VERSION);
|
||||||
|
|
||||||
// Serialize it to JSON object
|
// Serialize it to JSON object
|
||||||
DriverBean bean = new DriverBean(driver, getResourceBundle());
|
DriverBean bean = new DriverBean(driver, ConfigTestUtil.getResourceBundle());
|
||||||
JSONObject json = bean.extract(false);
|
JSONObject json = bean.extract(false);
|
||||||
|
|
||||||
// "Move" it across network in text form
|
// "Move" it across network in text form
|
||||||
|
@ -17,12 +17,12 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.sqoop.json;
|
package org.apache.sqoop.json;
|
||||||
|
|
||||||
import static org.apache.sqoop.json.ConfigTestUtil.getJob;
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import org.apache.sqoop.common.Direction;
|
import org.apache.sqoop.common.Direction;
|
||||||
|
import org.apache.sqoop.json.util.BeanTestUtil;
|
||||||
import org.apache.sqoop.model.MJob;
|
import org.apache.sqoop.model.MJob;
|
||||||
import org.apache.sqoop.model.MStringInput;
|
import org.apache.sqoop.model.MStringInput;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
@ -30,27 +30,19 @@
|
|||||||
import org.json.simple.parser.ParseException;
|
import org.json.simple.parser.ParseException;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class TestJobBean {
|
public class TestJobBean {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerialization() throws ParseException {
|
public void testJobSerialization() throws ParseException {
|
||||||
Date created = new Date();
|
Date created = new Date();
|
||||||
Date updated = new Date();
|
Date updated = new Date();
|
||||||
MJob job = getJob("ahoj");
|
MJob job = BeanTestUtil.createJob("ahoj", "The big Job", 22L, created, updated);
|
||||||
job.setName("The big job");
|
|
||||||
job.setPersistenceId(666);
|
|
||||||
job.setCreationDate(created);
|
|
||||||
job.setLastUpdateDate(updated);
|
|
||||||
job.setEnabled(false);
|
|
||||||
|
|
||||||
// Fill some data at the beginning
|
// Fill some data at the beginning
|
||||||
MStringInput input = (MStringInput) job.getJobConfig(Direction.FROM)
|
MStringInput input = (MStringInput) job.getJobConfig(Direction.FROM).getConfigs().get(0)
|
||||||
.getConfigs().get(0).getInputs().get(0);
|
.getInputs().get(0);
|
||||||
input.setValue("Hi there!");
|
input.setValue("Hi there!");
|
||||||
input = (MStringInput) job.getJobConfig(Direction.TO)
|
input = (MStringInput) job.getJobConfig(Direction.TO).getConfigs().get(0).getInputs().get(0);
|
||||||
.getConfigs().get(0).getInputs().get(0);
|
|
||||||
input.setValue("Hi there again!");
|
input.setValue("Hi there again!");
|
||||||
|
|
||||||
// Serialize it to JSON object
|
// Serialize it to JSON object
|
||||||
@ -61,28 +53,31 @@ public void testSerialization() throws ParseException {
|
|||||||
String jobJsonString = json.toJSONString();
|
String jobJsonString = json.toJSONString();
|
||||||
|
|
||||||
// Retrieved transferred object
|
// Retrieved transferred object
|
||||||
JSONObject parsedJobJson = (JSONObject)JSONValue.parse(jobJsonString);
|
JSONObject parsedJobJson = (JSONObject) JSONValue.parse(jobJsonString);
|
||||||
JobBean parsedJobBean = new JobBean();
|
JobBean parsedJobBean = new JobBean();
|
||||||
parsedJobBean.restore(parsedJobJson);
|
parsedJobBean.restore(parsedJobJson);
|
||||||
MJob target = parsedJobBean.getJobs().get(0);
|
MJob target = parsedJobBean.getJobs().get(0);
|
||||||
|
|
||||||
// Check id and name
|
// Check id and name
|
||||||
assertEquals(666, target.getPersistenceId());
|
assertEquals(22L, target.getPersistenceId());
|
||||||
|
assertEquals("The big Job", target.getName());
|
||||||
|
|
||||||
assertEquals(target.getLinkId(Direction.FROM), 1);
|
assertEquals(target.getLinkId(Direction.FROM), 1);
|
||||||
assertEquals(target.getLinkId(Direction.TO), 2);
|
assertEquals(target.getLinkId(Direction.TO), 2);
|
||||||
assertEquals(target.getConnectorId(Direction.FROM), 1);
|
assertEquals(target.getConnectorId(Direction.FROM), 1);
|
||||||
assertEquals(target.getConnectorId(Direction.TO), 2);
|
assertEquals(target.getConnectorId(Direction.TO), 2);
|
||||||
assertEquals("The big job", target.getName());
|
|
||||||
assertEquals(created, target.getCreationDate());
|
assertEquals(created, target.getCreationDate());
|
||||||
assertEquals(updated, target.getLastUpdateDate());
|
assertEquals(updated, target.getLastUpdateDate());
|
||||||
assertEquals(false, target.getEnabled());
|
assertEquals(false, target.getEnabled());
|
||||||
|
|
||||||
// Test that value was correctly moved
|
// Test that value was correctly moved
|
||||||
MStringInput targetInput = (MStringInput) target.getJobConfig(Direction.FROM)
|
MStringInput targetInput = (MStringInput) target.getJobConfig(Direction.FROM).getConfigs()
|
||||||
.getConfigs().get(0).getInputs().get(0);
|
.get(0).getInputs().get(0);
|
||||||
assertEquals("Hi there!", targetInput.getValue());
|
assertEquals("Hi there!", targetInput.getValue());
|
||||||
targetInput = (MStringInput) target.getJobConfig(Direction.TO)
|
targetInput = (MStringInput) target.getJobConfig(Direction.TO).getConfigs().get(0).getInputs()
|
||||||
.getConfigs().get(0).getInputs().get(0);
|
.get(0);
|
||||||
assertEquals("Hi there again!", targetInput.getValue());
|
assertEquals("Hi there again!", targetInput.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
92
common/src/test/java/org/apache/sqoop/json/TestJobsBean.java
Normal file
92
common/src/test/java/org/apache/sqoop/json/TestJobsBean.java
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
/**
|
||||||
|
* 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.junit.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.JSONValue;
|
||||||
|
import org.json.simple.parser.ParseException;
|
||||||
|
import org.junit.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.getJobConfig(Direction.FROM).getConfigs().get(0)
|
||||||
|
.getInputs().get(0);
|
||||||
|
input.setValue("Hi there!");
|
||||||
|
input = (MStringInput) job1.getJobConfig(Direction.TO).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 = (JSONObject) JSONValue.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.getLinkId(Direction.FROM), 1);
|
||||||
|
assertEquals(retrievedJob1.getLinkId(Direction.TO), 2);
|
||||||
|
assertEquals(retrievedJob1.getConnectorId(Direction.FROM), 1);
|
||||||
|
assertEquals(retrievedJob1.getConnectorId(Direction.TO), 2);
|
||||||
|
assertEquals(created, retrievedJob1.getCreationDate());
|
||||||
|
assertEquals(updated, retrievedJob1.getLastUpdateDate());
|
||||||
|
assertEquals(false, retrievedJob1.getEnabled());
|
||||||
|
|
||||||
|
// Test that value was correctly moved
|
||||||
|
MStringInput targetInput = (MStringInput) retrievedJob1.getJobConfig(Direction.FROM)
|
||||||
|
.getConfigs().get(0).getInputs().get(0);
|
||||||
|
assertEquals("Hi there!", targetInput.getValue());
|
||||||
|
targetInput = (MStringInput) retrievedJob1.getJobConfig(Direction.TO).getConfigs().get(0)
|
||||||
|
.getInputs().get(0);
|
||||||
|
assertEquals("Hi there again!", targetInput.getValue());
|
||||||
|
}
|
||||||
|
}
|
@ -17,13 +17,13 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.sqoop.json;
|
package org.apache.sqoop.json;
|
||||||
|
|
||||||
import static org.apache.sqoop.json.ConfigTestUtil.getLink;
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.apache.sqoop.json.util.BeanTestUtil;
|
||||||
import org.apache.sqoop.json.util.ConfigInputConstants;
|
import org.apache.sqoop.json.util.ConfigInputConstants;
|
||||||
import org.apache.sqoop.model.MLink;
|
import org.apache.sqoop.model.MLink;
|
||||||
import org.apache.sqoop.model.MStringInput;
|
import org.apache.sqoop.model.MStringInput;
|
||||||
@ -32,26 +32,17 @@
|
|||||||
import org.json.simple.JSONValue;
|
import org.json.simple.JSONValue;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class TestLinkBean {
|
public class TestLinkBean {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerialization() {
|
public void testLinkSerialization() {
|
||||||
Date created = new Date();
|
Date created = new Date();
|
||||||
Date updated = new Date();
|
Date updated = new Date();
|
||||||
MLink link = getLink("ahoj");
|
MLink link = BeanTestUtil.createLink("ahoj", "link1", 22L, created, updated);
|
||||||
link.setName("Connection");
|
|
||||||
link.setPersistenceId(666);
|
|
||||||
link.setCreationUser("admin");
|
|
||||||
link.setCreationDate(created);
|
|
||||||
link.setLastUpdateUser("user");
|
|
||||||
link.setLastUpdateDate(updated);
|
|
||||||
link.setEnabled(false);
|
|
||||||
|
|
||||||
// Fill some data at the beginning
|
// Fill some data at the beginning
|
||||||
MStringInput input = (MStringInput) link.getConnectorLinkConfig().getConfigs()
|
MStringInput input = (MStringInput) link.getConnectorLinkConfig().getConfigs().get(0)
|
||||||
.get(0).getInputs().get(0);
|
.getInputs().get(0);
|
||||||
input.setValue("Hi there!");
|
input.setValue("Hi there!");
|
||||||
|
|
||||||
// Serialize it to JSON object
|
// Serialize it to JSON object
|
||||||
@ -59,13 +50,12 @@ public void testSerialization() {
|
|||||||
JSONObject json = linkBean.extract(false);
|
JSONObject json = linkBean.extract(false);
|
||||||
|
|
||||||
// Check for sensitivity
|
// Check for sensitivity
|
||||||
JSONArray linkArray = (JSONArray)json.get(LinkBean.LINK);
|
JSONObject linkObj = (JSONObject) json.get(LinkBean.LINK);
|
||||||
JSONObject linkItem = (JSONObject)linkArray.get(0);
|
JSONArray linkConfigs = (JSONArray) linkObj.get(LinkBean.LINK_CONFIG_VALUES);
|
||||||
JSONArray connectors = (JSONArray)linkItem.get(LinkBean.LINK_CONFIG_VALUES);
|
JSONObject linkConfig = (JSONObject) linkConfigs.get(0);
|
||||||
JSONObject connector = (JSONObject)connectors.get(0);
|
JSONArray inputs = (JSONArray) linkConfig.get(ConfigInputConstants.CONFIG_INPUTS);
|
||||||
JSONArray inputs = (JSONArray)connector.get(ConfigInputConstants.CONFIG_INPUTS);
|
for (Object in : inputs) {
|
||||||
for (Object input1 : inputs) {
|
assertTrue(((JSONObject) in).containsKey(ConfigInputConstants.CONFIG_INPUT_SENSITIVE));
|
||||||
assertTrue(((JSONObject)input1).containsKey(ConfigInputConstants.CONFIG_INPUT_SENSITIVE));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// "Move" it across network in text form
|
// "Move" it across network in text form
|
||||||
@ -75,39 +65,33 @@ public void testSerialization() {
|
|||||||
JSONObject parsedLinkJson = (JSONObject) JSONValue.parse(linkJsonString);
|
JSONObject parsedLinkJson = (JSONObject) JSONValue.parse(linkJsonString);
|
||||||
LinkBean retrievedBean = new LinkBean();
|
LinkBean retrievedBean = new LinkBean();
|
||||||
retrievedBean.restore(parsedLinkJson);
|
retrievedBean.restore(parsedLinkJson);
|
||||||
MLink target = retrievedBean.getLinks().get(0);
|
MLink retrievedLink = retrievedBean.getLinks().get(0);
|
||||||
|
|
||||||
// Check id and name
|
// Check id and name
|
||||||
assertEquals(666, target.getPersistenceId());
|
assertEquals(22L, retrievedLink.getPersistenceId());
|
||||||
assertEquals("Connection", target.getName());
|
assertEquals("link1", retrievedLink.getName());
|
||||||
assertEquals("admin", target.getCreationUser());
|
assertEquals("admin", retrievedLink.getCreationUser());
|
||||||
assertEquals(created, target.getCreationDate());
|
assertEquals(created, retrievedLink.getCreationDate());
|
||||||
assertEquals("user", target.getLastUpdateUser());
|
assertEquals("user", retrievedLink.getLastUpdateUser());
|
||||||
assertEquals(updated, target.getLastUpdateDate());
|
assertEquals(updated, retrievedLink.getLastUpdateDate());
|
||||||
assertEquals(false, target.getEnabled());
|
assertEquals(false, retrievedLink.getEnabled());
|
||||||
|
|
||||||
// Test that value was correctly moved
|
// Test that value was correctly moved
|
||||||
MStringInput targetInput = (MStringInput) target.getConnectorLinkConfig()
|
MStringInput retrievedLinkInput = (MStringInput) retrievedLink.getConnectorLinkConfig().getConfigs().get(0)
|
||||||
.getConfigs().get(0).getInputs().get(0);
|
.getInputs().get(0);
|
||||||
assertEquals("Hi there!", targetInput.getValue());
|
assertEquals("Hi there!", retrievedLinkInput.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSensitivityFilter() {
|
public void testSensitivityFilter() {
|
||||||
Date created = new Date();
|
Date created = new Date();
|
||||||
Date updated = new Date();
|
Date updated = new Date();
|
||||||
MLink link = getLink("ahoj");
|
MLink link = BeanTestUtil.createLink("ahoj", "link1", 22L, created, updated);
|
||||||
link.setName("Connection");
|
|
||||||
link.setPersistenceId(666);
|
|
||||||
link.setCreationUser("admin");
|
|
||||||
link.setCreationDate(created);
|
|
||||||
link.setLastUpdateUser("user");
|
|
||||||
link.setLastUpdateDate(updated);
|
|
||||||
link.setEnabled(true);
|
|
||||||
|
|
||||||
// Fill some data at the beginning
|
// Fill some data at the beginning
|
||||||
MStringInput input = (MStringInput) link.getConnectorLinkConfig().getConfigs()
|
MStringInput input = (MStringInput) link.getConnectorLinkConfig().getConfigs().get(0)
|
||||||
.get(0).getInputs().get(0);
|
.getInputs().get(0);
|
||||||
input.setValue("Hi there!");
|
input.setValue("Hi there!");
|
||||||
|
|
||||||
// Serialize it to JSON object
|
// Serialize it to JSON object
|
||||||
@ -116,25 +100,23 @@ public void testSensitivityFilter() {
|
|||||||
JSONObject jsonFiltered = bean.extract(true);
|
JSONObject jsonFiltered = bean.extract(true);
|
||||||
|
|
||||||
// Sensitive values should exist
|
// Sensitive values should exist
|
||||||
JSONArray all = (JSONArray)json.get(LinkBean.LINK);
|
JSONObject linkObj = (JSONObject) json.get(LinkBean.LINK);
|
||||||
JSONObject allItem = (JSONObject)all.get(0);
|
JSONArray linkConfigsObj = (JSONArray) linkObj.get(LinkBean.LINK_CONFIG_VALUES);
|
||||||
JSONArray connectors = (JSONArray)allItem.get(LinkBean.LINK_CONFIG_VALUES);
|
JSONObject linkConfigObj = (JSONObject) linkConfigsObj.get(0);
|
||||||
JSONObject connector = (JSONObject)connectors.get(0);
|
JSONArray inputs = (JSONArray) linkConfigObj.get(ConfigInputConstants.CONFIG_INPUTS);
|
||||||
JSONArray inputs = (JSONArray)connector.get(ConfigInputConstants.CONFIG_INPUTS);
|
|
||||||
assertEquals(3, inputs.size());
|
assertEquals(3, inputs.size());
|
||||||
// Inputs are ordered when creating link
|
// Inputs are ordered when creating link
|
||||||
JSONObject password = (JSONObject)inputs.get(2);
|
JSONObject password = (JSONObject) inputs.get(2);
|
||||||
assertTrue(password.containsKey(ConfigInputConstants.CONFIG_INPUT_VALUE));
|
assertTrue(password.containsKey(ConfigInputConstants.CONFIG_INPUT_VALUE));
|
||||||
|
|
||||||
// Sensitive values should not exist
|
// Sensitive values should not exist
|
||||||
all = (JSONArray)jsonFiltered.get(LinkBean.LINK);
|
linkObj = (JSONObject) jsonFiltered.get(LinkBean.LINK);
|
||||||
allItem = (JSONObject)all.get(0);
|
linkConfigsObj = (JSONArray) linkObj.get(LinkBean.LINK_CONFIG_VALUES);
|
||||||
connectors = (JSONArray)allItem.get(LinkBean.LINK_CONFIG_VALUES);
|
linkConfigObj = (JSONObject) linkConfigsObj.get(0);
|
||||||
connector = (JSONObject)connectors.get(0);
|
inputs = (JSONArray) linkConfigObj.get(ConfigInputConstants.CONFIG_INPUTS);
|
||||||
inputs = (JSONArray)connector.get(ConfigInputConstants.CONFIG_INPUTS);
|
|
||||||
assertEquals(3, inputs.size());
|
assertEquals(3, inputs.size());
|
||||||
// Inputs are ordered when creating link
|
// Inputs are ordered when creating link
|
||||||
password = (JSONObject)inputs.get(2);
|
password = (JSONObject) inputs.get(2);
|
||||||
assertFalse(password.containsKey(ConfigInputConstants.CONFIG_INPUT_VALUE));
|
assertFalse(password.containsKey(ConfigInputConstants.CONFIG_INPUT_VALUE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,98 @@
|
|||||||
|
/**
|
||||||
|
* 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.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.sqoop.json.util.BeanTestUtil;
|
||||||
|
import org.apache.sqoop.json.util.ConfigInputConstants;
|
||||||
|
import org.apache.sqoop.model.MLink;
|
||||||
|
import org.apache.sqoop.model.MStringInput;
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.JSONValue;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class TestLinksBean {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLinksSerialization() {
|
||||||
|
Date created = new Date();
|
||||||
|
Date updated = new Date();
|
||||||
|
MLink link1 = BeanTestUtil.createLink("ahoj", "link1", 666L, created, updated);
|
||||||
|
MLink link2 = BeanTestUtil.createLink("jhoa", "link2", 888L, created, updated);
|
||||||
|
|
||||||
|
List<MLink> links = new ArrayList<MLink>();
|
||||||
|
links.add(link1);
|
||||||
|
links.add(link2);
|
||||||
|
|
||||||
|
// Fill some data at the beginning
|
||||||
|
MStringInput input = (MStringInput) link1.getConnectorLinkConfig().getConfigs().get(0)
|
||||||
|
.getInputs().get(0);
|
||||||
|
input.setValue("Hi there!");
|
||||||
|
|
||||||
|
// Serialize it to JSON object
|
||||||
|
LinksBean linkBean = new LinksBean(links);
|
||||||
|
JSONObject json = linkBean.extract(false);
|
||||||
|
|
||||||
|
// Check for sensitivity
|
||||||
|
JSONArray linksObj = (JSONArray) json.get(LinksBean.LINKS);
|
||||||
|
JSONObject linkObj = (JSONObject) linksObj.get(0);
|
||||||
|
|
||||||
|
JSONArray linkConfigs = (JSONArray) linkObj.get(LinkBean.LINK_CONFIG_VALUES);
|
||||||
|
JSONObject linkConfig = (JSONObject) linkConfigs.get(0);
|
||||||
|
JSONArray inputs = (JSONArray) linkConfig.get(ConfigInputConstants.CONFIG_INPUTS);
|
||||||
|
for (Object inp : inputs) {
|
||||||
|
assertTrue(((JSONObject) inp).containsKey(ConfigInputConstants.CONFIG_INPUT_SENSITIVE));
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Move" it across network in text form
|
||||||
|
String linkJsonString = json.toJSONString();
|
||||||
|
|
||||||
|
// Retrieved transferred object
|
||||||
|
JSONObject parsedLinkJson = (JSONObject) JSONValue.parse(linkJsonString);
|
||||||
|
LinksBean retrievedBean = new LinksBean();
|
||||||
|
retrievedBean.restore(parsedLinkJson);
|
||||||
|
MLink targetLink1 = retrievedBean.getLinks().get(0);
|
||||||
|
MLink targetLink2 = retrievedBean.getLinks().get(1);
|
||||||
|
|
||||||
|
// Check id and name
|
||||||
|
assertEquals(666L, targetLink1.getPersistenceId());
|
||||||
|
assertEquals(888L, targetLink2.getPersistenceId());
|
||||||
|
|
||||||
|
assertEquals("link1", targetLink1.getName());
|
||||||
|
assertEquals("link2", targetLink2.getName());
|
||||||
|
|
||||||
|
assertEquals("admin", targetLink1.getCreationUser());
|
||||||
|
assertEquals(created, targetLink1.getCreationDate());
|
||||||
|
assertEquals("user", targetLink1.getLastUpdateUser());
|
||||||
|
assertEquals(updated, targetLink1.getLastUpdateDate());
|
||||||
|
assertEquals(false, targetLink1.getEnabled());
|
||||||
|
|
||||||
|
// Test that value was correctly moved
|
||||||
|
MStringInput targetInput = (MStringInput) targetLink1.getConnectorLinkConfig().getConfigs()
|
||||||
|
.get(0).getInputs().get(0);
|
||||||
|
assertEquals("Hi there!", targetInput.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -36,9 +36,7 @@
|
|||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
/**
|
// NOTE: This tests both the submission and submissions list bean
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class TestSubmissionBean {
|
public class TestSubmissionBean {
|
||||||
|
|
||||||
private static final double EPSILON = 0.01;
|
private static final double EPSILON = 0.01;
|
||||||
|
@ -0,0 +1,83 @@
|
|||||||
|
/**
|
||||||
|
* 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.util;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.apache.sqoop.model.MConnector;
|
||||||
|
import org.apache.sqoop.model.MFromConfig;
|
||||||
|
import org.apache.sqoop.model.MJob;
|
||||||
|
import org.apache.sqoop.model.MLink;
|
||||||
|
import org.apache.sqoop.model.MToConfig;
|
||||||
|
|
||||||
|
public class BeanTestUtil {
|
||||||
|
|
||||||
|
public static MLink createLink(String connectorName, String linkName, Long linkId, Date created,
|
||||||
|
Date updated) {
|
||||||
|
MLink link1 = getLink(connectorName);
|
||||||
|
link1.setName(linkName);
|
||||||
|
link1.setPersistenceId(linkId);
|
||||||
|
link1.setCreationUser("admin");
|
||||||
|
link1.setCreationDate(created);
|
||||||
|
link1.setLastUpdateUser("user");
|
||||||
|
link1.setLastUpdateDate(updated);
|
||||||
|
link1.setEnabled(false);
|
||||||
|
return link1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MJob createJob(String connectorName, String jobName, Long jobId, Date created, Date updated) {
|
||||||
|
MJob job = BeanTestUtil.getJob(connectorName);
|
||||||
|
job.setName(jobName);
|
||||||
|
job.setPersistenceId(jobId);
|
||||||
|
job.setCreationDate(created);
|
||||||
|
job.setLastUpdateDate(updated);
|
||||||
|
job.setEnabled(false);
|
||||||
|
return job;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MLink getLink(String connectorName) {
|
||||||
|
return new MLink(1, getConnector(1L, connectorName).getLinkConfig());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MConnector getConnector(Long connectorId, String connectorName) {
|
||||||
|
return getConnector(connectorId, connectorName, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MConnector getConnector(Long id, String name, boolean from, boolean to) {
|
||||||
|
MFromConfig fromConfig = null;
|
||||||
|
MToConfig toConfig = null;
|
||||||
|
if (from) {
|
||||||
|
fromConfig = ConfigTestUtil.getFromConfig();
|
||||||
|
}
|
||||||
|
if (to) {
|
||||||
|
toConfig = ConfigTestUtil.getToConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
MConnector connector = new MConnector(name, name + ".class", "1.0-test",
|
||||||
|
ConfigTestUtil.getLinkConfig(), fromConfig, toConfig);
|
||||||
|
// simulate a persistence id
|
||||||
|
connector.setPersistenceId(id);
|
||||||
|
return connector;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MJob getJob(String connectorName) {
|
||||||
|
return new MJob(1, 2, 1, 2, getConnector(1L, connectorName).getFromConfig(), getConnector(1L, connectorName)
|
||||||
|
.getToConfig(), ConfigTestUtil.getDriverConfig());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -15,7 +15,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.apache.sqoop.json;
|
package org.apache.sqoop.json.util;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -24,52 +24,16 @@
|
|||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import org.apache.sqoop.model.MConfig;
|
import org.apache.sqoop.model.MConfig;
|
||||||
import org.apache.sqoop.model.MConnector;
|
|
||||||
import org.apache.sqoop.model.MDriverConfig;
|
import org.apache.sqoop.model.MDriverConfig;
|
||||||
import org.apache.sqoop.model.MFromConfig;
|
import org.apache.sqoop.model.MFromConfig;
|
||||||
import org.apache.sqoop.model.MInput;
|
import org.apache.sqoop.model.MInput;
|
||||||
import org.apache.sqoop.model.MIntegerInput;
|
import org.apache.sqoop.model.MIntegerInput;
|
||||||
import org.apache.sqoop.model.MJob;
|
|
||||||
import org.apache.sqoop.model.MLink;
|
|
||||||
import org.apache.sqoop.model.MLinkConfig;
|
import org.apache.sqoop.model.MLinkConfig;
|
||||||
import org.apache.sqoop.model.MStringInput;
|
import org.apache.sqoop.model.MStringInput;
|
||||||
import org.apache.sqoop.model.MToConfig;
|
import org.apache.sqoop.model.MToConfig;
|
||||||
import org.apache.sqoop.utils.MapResourceBundle;
|
import org.apache.sqoop.utils.MapResourceBundle;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class ConfigTestUtil {
|
public class ConfigTestUtil {
|
||||||
public static MConnector getConnector(Long id, String name) {
|
|
||||||
return getConnector(id, name, true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MConnector getConnector(Long id, String name, boolean from, boolean to) {
|
|
||||||
MFromConfig fromConfig = null;
|
|
||||||
MToConfig toConfig = null;
|
|
||||||
if (from) {
|
|
||||||
fromConfig = getFromConfig();
|
|
||||||
}
|
|
||||||
if (to) {
|
|
||||||
toConfig = getToConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
MConnector connector = new MConnector(name, name + ".class", "1.0-test",
|
|
||||||
getLinkConfig(), fromConfig, toConfig);
|
|
||||||
// simulate a persistence id
|
|
||||||
connector.setPersistenceId(id);
|
|
||||||
return connector;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static MLink getLink(String name) {
|
|
||||||
return new MLink(1, getConnector(1L, name).getLinkConfig());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MJob getJob(String name) {
|
|
||||||
return new MJob(1, 2, 1, 2, getConnector(1L, name).getFromConfig(), getConnector(1L, name)
|
|
||||||
.getToConfig(), getDriverConfig());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MDriverConfig getDriverConfig() {
|
public static MDriverConfig getDriverConfig() {
|
||||||
List<MInput<?>> inputs;
|
List<MInput<?>> inputs;
|
Loading…
Reference in New Issue
Block a user