mirror of
https://github.com/apache/sqoop.git
synced 2025-05-11 22:41:50 +08:00
SQOOP-1576: Sqoop2: Validations: Migrate Repository upgrade to the new validator infrastructure
(Jarek Jarcec Cecho via Abraham Elmahrek)
This commit is contained in:
parent
3c7e3ea9f2
commit
96cb5ef1f6
@ -20,6 +20,7 @@
|
|||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.sqoop.common.SqoopException;
|
import org.apache.sqoop.common.SqoopException;
|
||||||
import org.apache.sqoop.utils.ClassUtils;
|
import org.apache.sqoop.utils.ClassUtils;
|
||||||
|
import org.apache.sqoop.validation.ConfigValidationRunner;
|
||||||
import org.apache.sqoop.validation.Message;
|
import org.apache.sqoop.validation.Message;
|
||||||
import org.apache.sqoop.validation.Status;
|
import org.apache.sqoop.validation.Status;
|
||||||
import org.apache.sqoop.validation.ConfigValidator;
|
import org.apache.sqoop.validation.ConfigValidator;
|
||||||
@ -207,6 +208,38 @@ private static Field getFieldFromName(Class<?> klass, String name) {
|
|||||||
return configField;
|
return configField;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenience method to directly validate given model classes without the need to
|
||||||
|
* manually create the configuration instance.
|
||||||
|
*
|
||||||
|
* @param configs Model representation with filled values
|
||||||
|
* @param configClass Configuration class
|
||||||
|
* @return Validation result
|
||||||
|
*/
|
||||||
|
public static ConfigValidationResult validateConfigs(List<MConfig> configs, Class configClass) {
|
||||||
|
ConfigValidationRunner validationRunner = new ConfigValidationRunner();
|
||||||
|
Object configInstance = fromConfigs(configs, configClass);
|
||||||
|
return validationRunner.validate(configInstance);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenience method to convert given model structure into configuration object
|
||||||
|
* that will be created from given class.
|
||||||
|
*
|
||||||
|
* @param configs Model representation with filled values
|
||||||
|
* @param configClass Configuration class
|
||||||
|
* @return Created instance based on the class with filled values
|
||||||
|
*/
|
||||||
|
public static Object fromConfigs(List<MConfig> configs, Class configClass) {
|
||||||
|
Object configInstance = ClassUtils.instantiate(configClass);
|
||||||
|
if(configInstance == null) {
|
||||||
|
throw new SqoopException(ModelError.MODEL_016, configClass.getCanonicalName());
|
||||||
|
}
|
||||||
|
|
||||||
|
fromConfigs(configs, configInstance);
|
||||||
|
return configInstance;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Move config values from config list into corresponding configuration object.
|
* Move config values from config list into corresponding configuration object.
|
||||||
*
|
*
|
||||||
|
@ -52,7 +52,9 @@ public enum ModelError implements ErrorCode {
|
|||||||
|
|
||||||
MODEL_014("Form name attribute cannot be more than 30 characters long"),
|
MODEL_014("Form name attribute cannot be more than 30 characters long"),
|
||||||
|
|
||||||
MODEL_015("Can't get value from object")
|
MODEL_015("Can't get value from object"),
|
||||||
|
|
||||||
|
MODEL_016("Can't instantiate class"),
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -111,6 +111,15 @@ public void testFillValues() {
|
|||||||
assertEquals("value", config.aConfig.a1);
|
assertEquals("value", config.aConfig.a1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testFromConfigWithClass() {
|
||||||
|
List<MConfig> configs = getConfigs();
|
||||||
|
|
||||||
|
((MStringInput)configs.get(0).getInputs().get(0)).setValue("value");
|
||||||
|
|
||||||
|
TestConfiguration config = (TestConfiguration) ConfigUtils.fromConfigs(configs, TestConfiguration.class);
|
||||||
|
assertEquals("value", config.aConfig.a1);
|
||||||
|
}
|
||||||
|
|
||||||
public void testFillValuesObjectReuse() {
|
public void testFillValuesObjectReuse() {
|
||||||
List<MConfig> configs = getConfigs();
|
List<MConfig> configs = getConfigs();
|
||||||
|
|
||||||
|
@ -21,7 +21,9 @@
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
import org.apache.sqoop.common.Direction;
|
||||||
import org.apache.sqoop.common.SqoopException;
|
import org.apache.sqoop.common.SqoopException;
|
||||||
import org.apache.sqoop.connector.ConnectorManager;
|
import org.apache.sqoop.connector.ConnectorManager;
|
||||||
import org.apache.sqoop.connector.spi.ConnectorConfigurableUpgrader;
|
import org.apache.sqoop.connector.spi.ConnectorConfigurableUpgrader;
|
||||||
@ -41,9 +43,8 @@
|
|||||||
import org.apache.sqoop.model.MPersistableEntity;
|
import org.apache.sqoop.model.MPersistableEntity;
|
||||||
import org.apache.sqoop.model.MSubmission;
|
import org.apache.sqoop.model.MSubmission;
|
||||||
import org.apache.sqoop.model.MToConfig;
|
import org.apache.sqoop.model.MToConfig;
|
||||||
import org.apache.sqoop.utils.ClassUtils;
|
import org.apache.sqoop.validation.ConfigValidationResult;
|
||||||
import org.apache.sqoop.validation.ConfigValidator;
|
import org.apache.sqoop.validation.Message;
|
||||||
import org.apache.sqoop.validation.Validator;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -402,7 +403,6 @@ public final void upgradeConnector(MConnector oldConnector, MConnector newConnec
|
|||||||
SqoopConnector connector = ConnectorManager.getInstance().getSqoopConnector(
|
SqoopConnector connector = ConnectorManager.getInstance().getSqoopConnector(
|
||||||
newConnector.getUniqueName());
|
newConnector.getUniqueName());
|
||||||
|
|
||||||
Validator connectorConfigValidator = connector.getConfigValidator();
|
|
||||||
boolean upgradeSuccessful = true;
|
boolean upgradeSuccessful = true;
|
||||||
// 1. Get an upgrader for the connector
|
// 1. Get an upgrader for the connector
|
||||||
ConnectorConfigurableUpgrader upgrader = connector.getConfigurableUpgrader();
|
ConnectorConfigurableUpgrader upgrader = connector.getConfigurableUpgrader();
|
||||||
@ -430,19 +430,17 @@ public final void upgradeConnector(MConnector oldConnector, MConnector newConnec
|
|||||||
upgrader.upgradeLinkConfig(oldLinkConfig, newLinkConfig);
|
upgrader.upgradeLinkConfig(oldLinkConfig, newLinkConfig);
|
||||||
MLink newlink = new MLink(link, newLinkConfig);
|
MLink newlink = new MLink(link, newLinkConfig);
|
||||||
|
|
||||||
Object newConfigurationObject = ClassUtils.instantiate(connector
|
|
||||||
.getLinkConfigurationClass());
|
|
||||||
ConfigUtils.fromConfigs(newlink.getConnectorLinkConfig().getConfigs(),
|
|
||||||
newConfigurationObject);
|
|
||||||
// 7. Run link config validation
|
// 7. Run link config validation
|
||||||
ConfigValidator configValidator = connectorConfigValidator
|
ConfigValidationResult validationResult = ConfigUtils.validateConfigs(
|
||||||
.validateConfigForLink(newConfigurationObject);
|
newlink.getConnectorLinkConfig().getConfigs(),
|
||||||
if (configValidator.getStatus().canProceed()) {
|
connector.getLinkConfigurationClass()
|
||||||
|
);
|
||||||
|
if (validationResult.getStatus().canProceed()) {
|
||||||
updateLink(newlink, tx);
|
updateLink(newlink, tx);
|
||||||
} else {
|
} else {
|
||||||
// If any invalid links or jobs detected, throw an exception
|
// If any invalid links or jobs detected, throw an exception
|
||||||
// and stop the bootup of Sqoop server
|
// and stop the bootup of Sqoop server
|
||||||
logInvalidModelObject("link", newlink, configValidator);
|
logInvalidModelObject("link", newlink, validationResult);
|
||||||
upgradeSuccessful = false;
|
upgradeSuccessful = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -461,10 +459,20 @@ public final void upgradeConnector(MConnector oldConnector, MConnector newConnec
|
|||||||
// create a job with new FROM direction configs but old TO direction
|
// create a job with new FROM direction configs but old TO direction
|
||||||
// configs
|
// configs
|
||||||
MJob newJob = new MJob(job, newFromConfig, oldToConfig, job.getDriverConfig());
|
MJob newJob = new MJob(job, newFromConfig, oldToConfig, job.getDriverConfig());
|
||||||
// TODO( jarcec) : will add the job config validation logic similar
|
|
||||||
// to the link config validation before updating job
|
ConfigValidationResult validationResult = ConfigUtils.validateConfigs(
|
||||||
updateJob(newJob, tx);
|
newJob.getFromJobConfig().getConfigs(),
|
||||||
|
connector.getJobConfigurationClass(Direction.FROM)
|
||||||
|
);
|
||||||
|
|
||||||
|
if(validationResult.getStatus().canProceed()) {
|
||||||
|
updateJob(newJob, tx);
|
||||||
|
} else {
|
||||||
|
logInvalidModelObject("job", newJob, validationResult);
|
||||||
|
upgradeSuccessful = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<MConfig> toConfig = newConnector.getToConfig().clone(false).getConfigs();
|
List<MConfig> toConfig = newConnector.getToConfig().clone(false).getConfigs();
|
||||||
if (job.getToConnectorId() == newConnector.getPersistenceId()) {
|
if (job.getToConnectorId() == newConnector.getPersistenceId()) {
|
||||||
MToConfig oldToConfig = job.getToJobConfig();
|
MToConfig oldToConfig = job.getToJobConfig();
|
||||||
@ -474,9 +482,18 @@ public final void upgradeConnector(MConnector oldConnector, MConnector newConnec
|
|||||||
// create a job with old FROM direction configs but new TO direction
|
// create a job with old FROM direction configs but new TO direction
|
||||||
// configs
|
// configs
|
||||||
MJob newJob = new MJob(job, oldFromConfig, newToConfig, job.getDriverConfig());
|
MJob newJob = new MJob(job, oldFromConfig, newToConfig, job.getDriverConfig());
|
||||||
// TODO( jarcec) : will add the job config validation logic similar
|
|
||||||
// to the link config validation before updating job
|
ConfigValidationResult validationResult = ConfigUtils.validateConfigs(
|
||||||
updateJob(newJob, tx);
|
newJob.getToJobConfig().getConfigs(),
|
||||||
|
connector.getJobConfigurationClass(Direction.TO)
|
||||||
|
);
|
||||||
|
|
||||||
|
if(validationResult.getStatus().canProceed()) {
|
||||||
|
updateJob(newJob, tx);
|
||||||
|
} else {
|
||||||
|
logInvalidModelObject("job", newJob, validationResult);
|
||||||
|
upgradeSuccessful = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -512,7 +529,6 @@ public final void upgradeDriver(MDriver driver) {
|
|||||||
DriverUpgrader upgrader = Driver.getInstance().getConfigurableUpgrader();
|
DriverUpgrader upgrader = Driver.getInstance().getConfigurableUpgrader();
|
||||||
//2. find all jobs in the system
|
//2. find all jobs in the system
|
||||||
List<MJob> existingJobs = findJobs();
|
List<MJob> existingJobs = findJobs();
|
||||||
Validator validator = Driver.getInstance().getValidator();
|
|
||||||
boolean upgradeSuccessful = true;
|
boolean upgradeSuccessful = true;
|
||||||
|
|
||||||
// -- BEGIN TXN --
|
// -- BEGIN TXN --
|
||||||
@ -533,16 +549,16 @@ public final void upgradeDriver(MDriver driver) {
|
|||||||
// create a new job with old FROM and TO configs but new driver configs
|
// create a new job with old FROM and TO configs but new driver configs
|
||||||
MJob newJob = new MJob(job, job.getFromJobConfig(), job.getToJobConfig(), newDriver.getDriverConfig());
|
MJob newJob = new MJob(job, job.getFromJobConfig(), job.getToJobConfig(), newDriver.getDriverConfig());
|
||||||
|
|
||||||
Object newConfigurationObject = ClassUtils.instantiate(Driver.getInstance().getDriverJobConfigurationClass());
|
|
||||||
ConfigUtils.fromConfigs(newJob.getDriverConfig().getConfigs(), newConfigurationObject);
|
|
||||||
|
|
||||||
// 5. validate configs
|
// 5. validate configs
|
||||||
ConfigValidator validation = validator.validateConfigForJob(newConfigurationObject);
|
ConfigValidationResult validationResult = ConfigUtils.validateConfigs(
|
||||||
if (validation.getStatus().canProceed()) {
|
newJob.getDriverConfig().getConfigs(),
|
||||||
|
Driver.getInstance().getDriverJobConfigurationClass()
|
||||||
|
);
|
||||||
|
if (validationResult.getStatus().canProceed()) {
|
||||||
// 6. update job
|
// 6. update job
|
||||||
updateJob(newJob, tx);
|
updateJob(newJob, tx);
|
||||||
} else {
|
} else {
|
||||||
logInvalidModelObject("job", newJob, validation);
|
logInvalidModelObject("job", newJob, validationResult);
|
||||||
upgradeSuccessful = false;
|
upgradeSuccessful = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -570,11 +586,12 @@ public final void upgradeDriver(MDriver driver) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void logInvalidModelObject(String objectType, MPersistableEntity entity, ConfigValidator validation) {
|
private void logInvalidModelObject(String objectType, MPersistableEntity entity, ConfigValidationResult validation) {
|
||||||
LOG.error("Upgrader created invalid " + objectType + " with id" + entity.getPersistenceId());
|
LOG.error("Upgrader created invalid " + objectType + " with id " + entity.getPersistenceId());
|
||||||
|
LOG.error("Validation errors:");
|
||||||
|
|
||||||
for(Map.Entry<ConfigValidator.ConfigInput, ConfigValidator.Message> entry : validation.getMessages().entrySet()) {
|
for(Map.Entry<String, List<Message>> entry : validation.getMessages().entrySet()) {
|
||||||
LOG.error("\t" + entry.getKey() + ": " + entry.getValue());
|
LOG.error("\t" + entry.getKey() + ": " + StringUtils.join(entry.getValue(), ","));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -21,7 +21,6 @@
|
|||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Matchers.anyLong;
|
import static org.mockito.Matchers.anyLong;
|
||||||
import static org.mockito.Matchers.anyObject;
|
|
||||||
import static org.mockito.Matchers.anyString;
|
import static org.mockito.Matchers.anyString;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
@ -43,6 +42,7 @@
|
|||||||
import org.apache.sqoop.common.Direction;
|
import org.apache.sqoop.common.Direction;
|
||||||
import org.apache.sqoop.common.SqoopException;
|
import org.apache.sqoop.common.SqoopException;
|
||||||
import org.apache.sqoop.connector.ConnectorManager;
|
import org.apache.sqoop.connector.ConnectorManager;
|
||||||
|
import org.apache.sqoop.connector.common.EmptyConfiguration;
|
||||||
import org.apache.sqoop.connector.spi.ConnectorConfigurableUpgrader;
|
import org.apache.sqoop.connector.spi.ConnectorConfigurableUpgrader;
|
||||||
import org.apache.sqoop.connector.spi.SqoopConnector;
|
import org.apache.sqoop.connector.spi.SqoopConnector;
|
||||||
import org.apache.sqoop.driver.Driver;
|
import org.apache.sqoop.driver.Driver;
|
||||||
@ -59,9 +59,9 @@
|
|||||||
import org.apache.sqoop.model.MLink;
|
import org.apache.sqoop.model.MLink;
|
||||||
import org.apache.sqoop.model.MLinkConfig;
|
import org.apache.sqoop.model.MLinkConfig;
|
||||||
import org.apache.sqoop.model.MToConfig;
|
import org.apache.sqoop.model.MToConfig;
|
||||||
import org.apache.sqoop.validation.ConfigValidator;
|
import org.apache.sqoop.model.Validator;
|
||||||
import org.apache.sqoop.validation.Status;
|
import org.apache.sqoop.validation.Status;
|
||||||
import org.apache.sqoop.validation.Validator;
|
import org.apache.sqoop.validation.validators.AbstractValidator;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.InOrder;
|
import org.mockito.InOrder;
|
||||||
@ -73,20 +73,15 @@ public class TestJdbcRepository {
|
|||||||
private ConnectorManager connectorMgrMock;
|
private ConnectorManager connectorMgrMock;
|
||||||
private Driver driverMock;
|
private Driver driverMock;
|
||||||
private JdbcRepositoryHandler repoHandlerMock;
|
private JdbcRepositoryHandler repoHandlerMock;
|
||||||
private Validator validatorMock;
|
|
||||||
private ConnectorConfigurableUpgrader connectorUpgraderMock;
|
private ConnectorConfigurableUpgrader connectorUpgraderMock;
|
||||||
private DriverUpgrader driverUpgraderMock;
|
private DriverUpgrader driverUpgraderMock;
|
||||||
|
|
||||||
private ConfigValidator validRepoMock;
|
|
||||||
private ConfigValidator invalidRepoMock;
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
repoTransactionMock = mock(JdbcRepositoryTransaction.class);
|
repoTransactionMock = mock(JdbcRepositoryTransaction.class);
|
||||||
connectorMgrMock = mock(ConnectorManager.class);
|
connectorMgrMock = mock(ConnectorManager.class);
|
||||||
driverMock = mock(Driver.class);
|
driverMock = mock(Driver.class);
|
||||||
repoHandlerMock = mock(JdbcRepositoryHandler.class);
|
repoHandlerMock = mock(JdbcRepositoryHandler.class);
|
||||||
validatorMock = mock(Validator.class);
|
|
||||||
connectorUpgraderMock = mock(ConnectorConfigurableUpgrader.class);
|
connectorUpgraderMock = mock(ConnectorConfigurableUpgrader.class);
|
||||||
driverUpgraderMock = mock(DriverUpgrader.class);
|
driverUpgraderMock = mock(DriverUpgrader.class);
|
||||||
repoSpy = spy(new JdbcRepository(repoHandlerMock, null));
|
repoSpy = spy(new JdbcRepository(repoHandlerMock, null));
|
||||||
@ -96,11 +91,6 @@ public void setUp() throws Exception {
|
|||||||
ConnectorManager.setInstance(connectorMgrMock);
|
ConnectorManager.setInstance(connectorMgrMock);
|
||||||
Driver.setInstance(driverMock);
|
Driver.setInstance(driverMock);
|
||||||
|
|
||||||
validRepoMock = mock(ConfigValidator.class);
|
|
||||||
when(validRepoMock.getStatus()).thenReturn(Status.ACCEPTABLE);
|
|
||||||
invalidRepoMock = mock(ConfigValidator.class);
|
|
||||||
when(invalidRepoMock.getStatus()).thenReturn(Status.UNACCEPTABLE);
|
|
||||||
|
|
||||||
doNothing().when(connectorUpgraderMock).upgradeLinkConfig(any(MLinkConfig.class),
|
doNothing().when(connectorUpgraderMock).upgradeLinkConfig(any(MLinkConfig.class),
|
||||||
any(MLinkConfig.class));
|
any(MLinkConfig.class));
|
||||||
doNothing().when(connectorUpgraderMock).upgradeFromJobConfig(any(MFromConfig.class),
|
doNothing().when(connectorUpgraderMock).upgradeFromJobConfig(any(MFromConfig.class),
|
||||||
@ -223,13 +213,9 @@ public void testConnectorConfigUpgradeWithValidLinksAndJobs() {
|
|||||||
|
|
||||||
// prepare the sqoop connector
|
// prepare the sqoop connector
|
||||||
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
||||||
when(validatorMock.validateConfigForLink(any(MLink.class))).thenReturn(validRepoMock);
|
|
||||||
when(validatorMock.validateConfigForJob(any(MJob.class))).thenReturn(validRepoMock);
|
|
||||||
when(sqconnector.getConfigValidator()).thenReturn(validatorMock);
|
|
||||||
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
||||||
when(sqconnector.getLinkConfigurationClass()).thenReturn(EmptyLinkConfiguration.class);
|
when(sqconnector.getLinkConfigurationClass()).thenReturn(EmptyConfiguration.class);
|
||||||
when(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(
|
when(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(EmptyConfiguration.class);
|
||||||
EmptyJobConfiguration.class);
|
|
||||||
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
||||||
|
|
||||||
// prepare the links and jobs
|
// prepare the links and jobs
|
||||||
@ -249,7 +235,6 @@ public void testConnectorConfigUpgradeWithValidLinksAndJobs() {
|
|||||||
InOrder repoOrder = inOrder(repoSpy);
|
InOrder repoOrder = inOrder(repoSpy);
|
||||||
InOrder txOrder = inOrder(repoTransactionMock);
|
InOrder txOrder = inOrder(repoTransactionMock);
|
||||||
InOrder upgraderOrder = inOrder(connectorUpgraderMock);
|
InOrder upgraderOrder = inOrder(connectorUpgraderMock);
|
||||||
InOrder validatorOrder = inOrder(validatorMock);
|
|
||||||
|
|
||||||
repoOrder.verify(repoSpy, times(1)).findLinksForConnector(anyLong());
|
repoOrder.verify(repoSpy, times(1)).findLinksForConnector(anyLong());
|
||||||
repoOrder.verify(repoSpy, times(1)).findJobsForConnector(anyLong());
|
repoOrder.verify(repoSpy, times(1)).findJobsForConnector(anyLong());
|
||||||
@ -272,9 +257,6 @@ public void testConnectorConfigUpgradeWithValidLinksAndJobs() {
|
|||||||
upgraderOrder.verify(connectorUpgraderMock, times(1)).upgradeFromJobConfig(any(MFromConfig.class), any(MFromConfig.class));
|
upgraderOrder.verify(connectorUpgraderMock, times(1)).upgradeFromJobConfig(any(MFromConfig.class), any(MFromConfig.class));
|
||||||
upgraderOrder.verify(connectorUpgraderMock, times(1)).upgradeToJobConfig(any(MToConfig.class), any(MToConfig.class));
|
upgraderOrder.verify(connectorUpgraderMock, times(1)).upgradeToJobConfig(any(MToConfig.class), any(MToConfig.class));
|
||||||
upgraderOrder.verifyNoMoreInteractions();
|
upgraderOrder.verifyNoMoreInteractions();
|
||||||
validatorOrder.verify(validatorMock, times(2)).validateConfigForLink(anyObject());
|
|
||||||
validatorOrder.verify(validatorMock, times(0)).validateConfigForJob(anyObject());
|
|
||||||
validatorOrder.verifyNoMoreInteractions();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -285,11 +267,8 @@ public void testConnectorConfigUpgradeWithValidLinksAndJobs() {
|
|||||||
public void testDriverConfigUpgradeWithValidJobs() {
|
public void testDriverConfigUpgradeWithValidJobs() {
|
||||||
MDriver newDriverConfig = driver();
|
MDriver newDriverConfig = driver();
|
||||||
|
|
||||||
when(validatorMock.validateConfigForLink(any(MLink.class))).thenReturn(validRepoMock);
|
|
||||||
when(validatorMock.validateConfigForJob(any(MJob.class))).thenReturn(validRepoMock);
|
|
||||||
when(driverMock.getValidator()).thenReturn(validatorMock);
|
|
||||||
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
||||||
when(driverMock.getDriverJobConfigurationClass()).thenReturn(EmptyJobConfiguration.class);
|
when(driverMock.getDriverJobConfigurationClass()).thenReturn(ValidConfiguration.class);
|
||||||
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
||||||
|
|
||||||
doReturn(jobList).when(repoSpy).findJobs();
|
doReturn(jobList).when(repoSpy).findJobs();
|
||||||
@ -302,7 +281,6 @@ public void testDriverConfigUpgradeWithValidJobs() {
|
|||||||
InOrder repoOrder = inOrder(repoSpy);
|
InOrder repoOrder = inOrder(repoSpy);
|
||||||
InOrder txOrder = inOrder(repoTransactionMock);
|
InOrder txOrder = inOrder(repoTransactionMock);
|
||||||
InOrder upgraderOrder = inOrder(driverUpgraderMock);
|
InOrder upgraderOrder = inOrder(driverUpgraderMock);
|
||||||
InOrder validatorOrder = inOrder(validatorMock);
|
|
||||||
|
|
||||||
repoOrder.verify(repoSpy, times(1)).findJobs();
|
repoOrder.verify(repoSpy, times(1)).findJobs();
|
||||||
repoOrder.verify(repoSpy, times(1)).getTransaction();
|
repoOrder.verify(repoSpy, times(1)).getTransaction();
|
||||||
@ -317,8 +295,6 @@ public void testDriverConfigUpgradeWithValidJobs() {
|
|||||||
txOrder.verifyNoMoreInteractions();
|
txOrder.verifyNoMoreInteractions();
|
||||||
upgraderOrder.verify(driverUpgraderMock, times(2)).upgradeJobConfig(any(MDriverConfig.class), any(MDriverConfig.class));
|
upgraderOrder.verify(driverUpgraderMock, times(2)).upgradeJobConfig(any(MDriverConfig.class), any(MDriverConfig.class));
|
||||||
upgraderOrder.verifyNoMoreInteractions();
|
upgraderOrder.verifyNoMoreInteractions();
|
||||||
validatorOrder.verify(validatorMock, times(2)).validateConfigForJob(anyObject());
|
|
||||||
validatorOrder.verifyNoMoreInteractions();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -329,11 +305,8 @@ public void testDriverConfigUpgradeWithValidJobs() {
|
|||||||
public void testDriverConfigUpgradeWithInvalidJobs() {
|
public void testDriverConfigUpgradeWithInvalidJobs() {
|
||||||
MDriver newDriverConfig = driver();
|
MDriver newDriverConfig = driver();
|
||||||
|
|
||||||
when(validatorMock.validateConfigForLink(any(MLink.class))).thenReturn(invalidRepoMock);
|
|
||||||
when(validatorMock.validateConfigForJob(any(MJob.class))).thenReturn(invalidRepoMock);
|
|
||||||
when(driverMock.getValidator()).thenReturn(validatorMock);
|
|
||||||
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
||||||
when(driverMock.getDriverJobConfigurationClass()).thenReturn(EmptyJobConfiguration.class);
|
when(driverMock.getDriverJobConfigurationClass()).thenReturn(InvalidConfiguration.class);
|
||||||
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
||||||
|
|
||||||
doReturn(jobList).when(repoSpy).findJobs();
|
doReturn(jobList).when(repoSpy).findJobs();
|
||||||
@ -348,7 +321,6 @@ public void testDriverConfigUpgradeWithInvalidJobs() {
|
|||||||
InOrder repoOrder = inOrder(repoSpy);
|
InOrder repoOrder = inOrder(repoSpy);
|
||||||
InOrder txOrder = inOrder(repoTransactionMock);
|
InOrder txOrder = inOrder(repoTransactionMock);
|
||||||
InOrder upgraderOrder = inOrder(driverUpgraderMock);
|
InOrder upgraderOrder = inOrder(driverUpgraderMock);
|
||||||
InOrder validatorOrder = inOrder(validatorMock);
|
|
||||||
|
|
||||||
repoOrder.verify(repoSpy, times(1)).findJobs();
|
repoOrder.verify(repoSpy, times(1)).findJobs();
|
||||||
repoOrder.verify(repoSpy, times(1)).getTransaction();
|
repoOrder.verify(repoSpy, times(1)).getTransaction();
|
||||||
@ -362,9 +334,6 @@ public void testDriverConfigUpgradeWithInvalidJobs() {
|
|||||||
txOrder.verifyNoMoreInteractions();
|
txOrder.verifyNoMoreInteractions();
|
||||||
upgraderOrder.verify(driverUpgraderMock, times(2)).upgradeJobConfig(any(MDriverConfig.class), any(MDriverConfig.class));
|
upgraderOrder.verify(driverUpgraderMock, times(2)).upgradeJobConfig(any(MDriverConfig.class), any(MDriverConfig.class));
|
||||||
upgraderOrder.verifyNoMoreInteractions();
|
upgraderOrder.verifyNoMoreInteractions();
|
||||||
// driver configs are per job.
|
|
||||||
validatorOrder.verify(validatorMock, times(2)).validateConfigForJob(anyObject());
|
|
||||||
validatorOrder.verifyNoMoreInteractions();
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,7 +350,6 @@ public void testConnectorConfigUpgradeHandlerWithFindLinksForConnectorError() {
|
|||||||
MConnector oldConnector = connector(1);
|
MConnector oldConnector = connector(1);
|
||||||
|
|
||||||
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
||||||
when(sqconnector.getConfigValidator()).thenReturn(validatorMock);
|
|
||||||
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
||||||
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
||||||
|
|
||||||
@ -411,7 +379,6 @@ public void testConnectorConfigUpgradeHandlerWithFindJobsForConnectorError() {
|
|||||||
MConnector oldConnector = connector(1);
|
MConnector oldConnector = connector(1);
|
||||||
|
|
||||||
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
||||||
when(sqconnector.getConfigValidator()).thenReturn(validatorMock);
|
|
||||||
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
||||||
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
||||||
|
|
||||||
@ -445,7 +412,6 @@ public void testConnectorConfigUpgradeHandlerWithDeleteJobInputsError() {
|
|||||||
MConnector oldConnector = connector(1);
|
MConnector oldConnector = connector(1);
|
||||||
|
|
||||||
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
||||||
when(sqconnector.getConfigValidator()).thenReturn(validatorMock);
|
|
||||||
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
||||||
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
||||||
|
|
||||||
@ -482,7 +448,6 @@ public void testConnectorConfigUpgradeHandlerWithDeleteLinkInputsError() {
|
|||||||
MConnector oldConnector = connector(1);
|
MConnector oldConnector = connector(1);
|
||||||
|
|
||||||
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
||||||
when(sqconnector.getConfigValidator()).thenReturn(validatorMock);
|
|
||||||
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
||||||
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
||||||
|
|
||||||
@ -521,7 +486,6 @@ public void testConnectorConfigUpgradeHandlerWithUpdateConnectorError() {
|
|||||||
MConnector oldConnector = connector(1);
|
MConnector oldConnector = connector(1);
|
||||||
|
|
||||||
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
||||||
when(sqconnector.getConfigValidator()).thenReturn(validatorMock);
|
|
||||||
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
||||||
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
||||||
|
|
||||||
@ -562,12 +526,9 @@ public void testConnectorConfigUpgradeHandlerWithUpdateLinkError() {
|
|||||||
MConnector oldConnector = connector(1);
|
MConnector oldConnector = connector(1);
|
||||||
|
|
||||||
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
||||||
when(validatorMock.validateConfigForLink(any(MLink.class))).thenReturn(validRepoMock);
|
|
||||||
when(validatorMock.validateConfigForJob(any(MJob.class))).thenReturn(validRepoMock);
|
|
||||||
when(sqconnector.getConfigValidator()).thenReturn(validatorMock);
|
|
||||||
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
||||||
when(sqconnector.getLinkConfigurationClass()).thenReturn(EmptyLinkConfiguration.class);
|
when(sqconnector.getLinkConfigurationClass()).thenReturn(ValidConfiguration.class);
|
||||||
when(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(EmptyJobConfiguration.class);
|
when(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(ValidConfiguration.class);
|
||||||
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
||||||
|
|
||||||
List<MLink> linkList = links(link(1,1), link(2,1));
|
List<MLink> linkList = links(link(1,1), link(2,1));
|
||||||
@ -611,12 +572,9 @@ public void testConnectorConfigUpgradeHandlerWithUpdateJobError() {
|
|||||||
MConnector oldConnector = connector(1);
|
MConnector oldConnector = connector(1);
|
||||||
|
|
||||||
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
SqoopConnector sqconnector = mock(SqoopConnector.class);
|
||||||
when(validatorMock.validateConfigForLink(any(MLink.class))).thenReturn(validRepoMock);
|
|
||||||
when(validatorMock.validateConfigForJob(any(MJob.class))).thenReturn(validRepoMock);
|
|
||||||
when(sqconnector.getConfigValidator()).thenReturn(validatorMock);
|
|
||||||
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
when(sqconnector.getConfigurableUpgrader()).thenReturn(connectorUpgraderMock);
|
||||||
when(sqconnector.getLinkConfigurationClass()).thenReturn(EmptyLinkConfiguration.class);
|
when(sqconnector.getLinkConfigurationClass()).thenReturn(ValidConfiguration.class);
|
||||||
when(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(EmptyJobConfiguration.class);
|
when(sqconnector.getJobConfigurationClass(any(Direction.class))).thenReturn(ValidConfiguration.class);
|
||||||
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
when(connectorMgrMock.getSqoopConnector(anyString())).thenReturn(sqconnector);
|
||||||
|
|
||||||
List<MLink> linkList = links(link(1,1), link(2,1));
|
List<MLink> linkList = links(link(1,1), link(2,1));
|
||||||
@ -662,7 +620,6 @@ public void testConnectorConfigUpgradeHandlerWithUpdateJobError() {
|
|||||||
public void testDriverConfigUpgradeHandlerWithFindJobsError() {
|
public void testDriverConfigUpgradeHandlerWithFindJobsError() {
|
||||||
MDriver newDriverConfig = driver();
|
MDriver newDriverConfig = driver();
|
||||||
|
|
||||||
when(driverMock.getValidator()).thenReturn(validatorMock);
|
|
||||||
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
||||||
|
|
||||||
SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
|
SqoopException exception = new SqoopException(RepositoryError.JDBCREPO_0000,
|
||||||
@ -689,7 +646,6 @@ public void testDriverConfigUpgradeHandlerWithFindJobsError() {
|
|||||||
public void testDriverConfigUpgradeHandlerWithDeleteJobInputsError() {
|
public void testDriverConfigUpgradeHandlerWithDeleteJobInputsError() {
|
||||||
MDriver newDriverConfig = driver();
|
MDriver newDriverConfig = driver();
|
||||||
|
|
||||||
when(driverMock.getValidator()).thenReturn(validatorMock);
|
|
||||||
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
||||||
|
|
||||||
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
||||||
@ -720,7 +676,6 @@ public void testDriverConfigUpgradeHandlerWithDeleteJobInputsError() {
|
|||||||
public void testDriverConfigUpgradeHandlerWithUpdateDriverConfigError() {
|
public void testDriverConfigUpgradeHandlerWithUpdateDriverConfigError() {
|
||||||
MDriver newDriverConfig = driver();
|
MDriver newDriverConfig = driver();
|
||||||
|
|
||||||
when(driverMock.getValidator()).thenReturn(validatorMock);
|
|
||||||
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
||||||
|
|
||||||
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
||||||
@ -755,11 +710,8 @@ public void testDriverConfigUpgradeHandlerWithUpdateDriverConfigError() {
|
|||||||
public void testDriverConfigUpgradeHandlerWithUpdateJobError() {
|
public void testDriverConfigUpgradeHandlerWithUpdateJobError() {
|
||||||
MDriver driverConfig = driver();
|
MDriver driverConfig = driver();
|
||||||
|
|
||||||
when(validatorMock.validateConfigForLink(any(MLink.class))).thenReturn(validRepoMock);
|
|
||||||
when(validatorMock.validateConfigForJob(any(MJob.class))).thenReturn(validRepoMock);
|
|
||||||
when(driverMock.getValidator()).thenReturn(validatorMock);
|
|
||||||
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
when(driverMock.getConfigurableUpgrader()).thenReturn(driverUpgraderMock);
|
||||||
when(driverMock.getDriverJobConfigurationClass()).thenReturn(EmptyJobConfiguration.class);
|
when(driverMock.getDriverJobConfigurationClass()).thenReturn(ValidConfiguration.class);
|
||||||
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
List<MJob> jobList = jobs(job(1,1,1,1,1), job(2,1,1,2,1));
|
||||||
doReturn(jobList).when(repoHandlerMock).findJobs(any(Connection.class));
|
doReturn(jobList).when(repoHandlerMock).findJobs(any(Connection.class));
|
||||||
doNothing().when(repoHandlerMock).deleteJobInputs(anyLong(), any(Connection.class));
|
doNothing().when(repoHandlerMock).deleteJobInputs(anyLong(), any(Connection.class));
|
||||||
@ -789,8 +741,8 @@ public void testDriverConfigUpgradeHandlerWithUpdateJobError() {
|
|||||||
private MConnector connector(long connectorId, String version) {
|
private MConnector connector(long connectorId, String version) {
|
||||||
MConnector connector = new MConnector("A" + connectorId, "A" + connectorId, version + connectorId,
|
MConnector connector = new MConnector("A" + connectorId, "A" + connectorId, version + connectorId,
|
||||||
new MLinkConfig(new LinkedList<MConfig>()),
|
new MLinkConfig(new LinkedList<MConfig>()),
|
||||||
new MFromConfig(ConfigUtils.toConfigs(EmptyJobConfiguration.class)),
|
new MFromConfig(ConfigUtils.toConfigs(ValidConfiguration.class)),
|
||||||
new MToConfig(ConfigUtils.toConfigs(EmptyJobConfiguration.class)));
|
new MToConfig(ConfigUtils.toConfigs(ValidConfiguration.class)));
|
||||||
connector.setPersistenceId(connectorId);
|
connector.setPersistenceId(connectorId);
|
||||||
return connector;
|
return connector;
|
||||||
}
|
}
|
||||||
@ -840,9 +792,16 @@ private List<MJob> jobs(MJob ... js) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ConfigurationClass
|
@ConfigurationClass
|
||||||
public static class EmptyLinkConfiguration {
|
public static class ValidConfiguration {
|
||||||
}
|
}
|
||||||
@ConfigurationClass
|
|
||||||
public static class EmptyJobConfiguration {
|
@ConfigurationClass(validators = { @Validator(InvalidConfiguration.InternalValidator.class)})
|
||||||
|
public static class InvalidConfiguration {
|
||||||
|
public static class InternalValidator extends AbstractValidator {
|
||||||
|
@Override
|
||||||
|
public void validate(Object instance) {
|
||||||
|
addMessage(Status.UNACCEPTABLE, "Simply because.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -191,27 +191,24 @@ private JsonBean createUpdateJob(RequestContext ctx, boolean update) {
|
|||||||
+ " does not support TO direction.");
|
+ " does not support TO direction.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need translate configs
|
// Validate user supplied data
|
||||||
Object fromConfigObject = ClassUtils.instantiate(fromConnector.getJobConfigurationClass(Direction.FROM));
|
ConfigValidationResult fromConfigValidator = ConfigUtils.validateConfigs(
|
||||||
Object toConfigObject = ClassUtils.instantiate(toConnector.getJobConfigurationClass(Direction.TO));
|
job.getJobConfig(Direction.FROM).getConfigs(),
|
||||||
|
fromConnector.getJobConfigurationClass(Direction.FROM)
|
||||||
|
);
|
||||||
|
ConfigValidationResult toConfigValidator = ConfigUtils.validateConfigs(
|
||||||
|
job.getJobConfig(Direction.TO).getConfigs(),
|
||||||
|
toConnector.getJobConfigurationClass(Direction.TO)
|
||||||
|
);
|
||||||
|
ConfigValidationResult driverConfigValidator = ConfigUtils.validateConfigs(
|
||||||
|
job.getDriverConfig().getConfigs(),
|
||||||
|
Driver.getInstance().getDriverJobConfigurationClass()
|
||||||
|
);
|
||||||
|
|
||||||
Object driverConfigObject = ClassUtils.instantiate(Driver.getInstance().getDriverJobConfigurationClass());
|
Status finalStatus = Status.getWorstStatus(fromConfigValidator.getStatus(), toConfigValidator.getStatus(), driverConfigValidator.getStatus());
|
||||||
|
|
||||||
ConfigUtils.fromConfigs(job.getJobConfig(Direction.FROM).getConfigs(), fromConfigObject);
|
|
||||||
ConfigUtils.fromConfigs(job.getJobConfig(Direction.TO).getConfigs(), toConfigObject);
|
|
||||||
ConfigUtils.fromConfigs(job.getDriverConfig().getConfigs(), driverConfigObject);
|
|
||||||
|
|
||||||
// Validate all configs
|
|
||||||
ConfigValidationRunner validationRunner = new ConfigValidationRunner();
|
|
||||||
ConfigValidationResult fromConfigvalidator = validationRunner.validate(fromConfigObject);
|
|
||||||
ConfigValidationResult toConfigValidator = validationRunner.validate(toConfigObject);
|
|
||||||
ConfigValidationResult driverConfigValidator = validationRunner.validate(driverConfigObject);
|
|
||||||
|
|
||||||
|
|
||||||
Status finalStatus = Status.getWorstStatus(fromConfigvalidator.getStatus(), toConfigValidator.getStatus(), driverConfigValidator.getStatus());
|
|
||||||
|
|
||||||
// Return back validations in all cases
|
// Return back validations in all cases
|
||||||
ValidationResultBean validationResultBean = new ValidationResultBean(fromConfigvalidator, toConfigValidator);
|
ValidationResultBean validationResultBean = new ValidationResultBean(fromConfigValidator, toConfigValidator);
|
||||||
|
|
||||||
// If we're good enough let's perform the action
|
// If we're good enough let's perform the action
|
||||||
if(finalStatus.canProceed()) {
|
if(finalStatus.canProceed()) {
|
||||||
|
@ -168,22 +168,17 @@ private JsonBean createUpdateLink(RequestContext ctx, boolean update) {
|
|||||||
// Responsible connector for this session
|
// Responsible connector for this session
|
||||||
SqoopConnector connector = ConnectorManager.getInstance().getSqoopConnector(link.getConnectorId());
|
SqoopConnector connector = ConnectorManager.getInstance().getSqoopConnector(link.getConnectorId());
|
||||||
|
|
||||||
// We need translate configs
|
// Validate user supplied data
|
||||||
Object connectorLinkConfig = ClassUtils.instantiate(connector.getLinkConfigurationClass());
|
ConfigValidationResult connectorLinkValidation = ConfigUtils.validateConfigs(
|
||||||
|
link.getConnectorLinkConfig().getConfigs(),
|
||||||
ConfigUtils.fromConfigs(link.getConnectorLinkConfig().getConfigs(), connectorLinkConfig);
|
connector.getLinkConfigurationClass()
|
||||||
|
);
|
||||||
// Validate both parts
|
|
||||||
ConfigValidationRunner validationRunner = new ConfigValidationRunner();
|
|
||||||
ConfigValidationResult connectorLinkValidation = validationRunner.validate(connectorLinkConfig);
|
|
||||||
|
|
||||||
Status finalStatus = Status.getWorstStatus(connectorLinkValidation.getStatus());
|
|
||||||
|
|
||||||
// Return back validations in all cases
|
// Return back validations in all cases
|
||||||
ValidationResultBean outputBean = new ValidationResultBean(connectorLinkValidation);
|
ValidationResultBean outputBean = new ValidationResultBean(connectorLinkValidation);
|
||||||
|
|
||||||
// If we're good enough let's perform the action
|
// If we're good enough let's perform the action
|
||||||
if(finalStatus.canProceed()) {
|
if(connectorLinkValidation.getStatus().canProceed()) {
|
||||||
if(update) {
|
if(update) {
|
||||||
AuditLoggerManager.getInstance()
|
AuditLoggerManager.getInstance()
|
||||||
.logAuditEvent(ctx.getUserName(), ctx.getRequest().getRemoteAddr(),
|
.logAuditEvent(ctx.getUserName(), ctx.getRequest().getRemoteAddr(),
|
||||||
|
Loading…
Reference in New Issue
Block a user