use of io.atlasmap.v2.Validations in project atlasmap by atlasmap.
the class BaseModuleValidationService method validateField.
@SuppressWarnings("unchecked")
protected void validateField(String mappingId, Field field, FieldDirection direction, List<Validation> validations) {
if (field == null) {
Validation validation = new Validation();
validation.setScope(ValidationScope.MAPPING);
validation.setId(mappingId);
validation.setMessage(String.format("%s field %s is null", direction.value(), getFieldName(field)));
validation.setStatus(ValidationStatus.ERROR);
validations.add(validation);
} else if (getFieldType().isAssignableFrom(field.getClass())) {
validateModuleField(mappingId, (T) field, direction, validations);
}
}
use of io.atlasmap.v2.Validations in project atlasmap by atlasmap.
the class AtlasService method validateMapping.
protected Response validateMapping(AtlasMapping mapping, UriInfo uriInfo) throws IOException, AtlasException {
File temporaryMappingFile = File.createTempFile("atlas-mapping", "xml");
temporaryMappingFile.deleteOnExit();
atlasContextFactory.getMappingService().saveMappingAsFile(mapping, temporaryMappingFile);
AtlasContext context = atlasContextFactory.createContext(temporaryMappingFile.toURI());
AtlasSession session = context.createSession();
context.processValidation(session);
Validations validations = session.getValidations();
if (session.getValidations() == null) {
validations = new Validations();
}
if (temporaryMappingFile.exists() && !temporaryMappingFile.delete()) {
LOG.warn("Failed to deleting temporary file: " + (temporaryMappingFile != null ? temporaryMappingFile.toString() : null));
}
return Response.ok().entity(toJson(validations)).build();
}
use of io.atlasmap.v2.Validations in project atlasmap by atlasmap.
the class XmlValidationServiceTest method testValidateMappingSupportedSourceToTargetConversion.
@Test
public void testValidateMappingSupportedSourceToTargetConversion() throws Exception {
AtlasMapping mapping = mappingUtil.loadMapping("src/test/resources/mappings/HappyPathMapping.xml");
assertNotNull(mapping);
Mapping fieldMapping = (Mapping) mapping.getMappings().getMapping().get(0);
XmlField in = (XmlField) fieldMapping.getInputField().get(0);
in.setFieldType(FieldType.CHAR);
validations.addAll(sourceValidationService.validateMapping(mapping));
validations.addAll(targetValidationService.validateMapping(mapping));
if (LOG.isDebugEnabled()) {
debugErrors(validations);
}
assertFalse(validationHelper.hasErrors());
assertFalse(validationHelper.hasWarnings());
assertTrue(validationHelper.hasInfos());
}
use of io.atlasmap.v2.Validations in project atlasmap by atlasmap.
the class XmlValidationService method validateModuleField.
@Override
protected void validateModuleField(String mappingId, XmlField field, FieldDirection direction, List<Validation> validations) {
// TODO check that it is a valid type on the AtlasContext
validatorMap.get("xml.field.type.not.null").validate(field, validations, mappingId, ValidationStatus.WARN);
if (direction == FieldDirection.SOURCE) {
if (field != null) {
validatorMap.get("input.field.type.not.null").validate(field.getFieldType(), validations, mappingId, ValidationStatus.WARN);
}
} else {
if (field != null) {
validatorMap.get("output.field.type.not.null").validate(field.getFieldType(), validations, mappingId, ValidationStatus.WARN);
}
}
if (field != null) {
if ((field.getName() == null && field.getPath() == null)) {
Validation validation = new Validation();
validation.setScope(ValidationScope.MAPPING);
validation.setId(mappingId);
validation.setMessage("One of path or name must be specified");
validation.setStatus(ValidationStatus.ERROR);
validations.add(validation);
} else if (field.getName() != null && field.getPath() == null) {
validatorMap.get("xml.field.name.not.null").validate(field.getName(), validations, mappingId);
} else if (field.getName() == null && field.getPath() != null) {
validatorMap.get("xml.field.path.not.null").validate(field.getPath(), validations, mappingId);
}
}
}
use of io.atlasmap.v2.Validations in project atlasmap by atlasmap.
the class DefaultAtlasContextTest method testProcess.
@Test
public void testProcess() throws AtlasException {
DefaultAtlasSession session = mock(DefaultAtlasSession.class);
when(session.getAtlasContext()).thenReturn(context);
Head head = mock(Head.class);
when(session.head()).thenReturn(head);
when(head.setMapping(any(Mapping.class))).thenReturn(head);
when(head.setLookupTable(any(LookupTable.class))).thenReturn(head);
Field headField = mock(ConstantField.class);
when(head.getSourceField()).thenReturn(headField);
Audits audits = mock(Audits.class);
when(session.getAudits()).thenReturn(audits);
Validations validations = mock(Validations.class);
when(session.getValidations()).thenReturn(validations);
AtlasMapping mapping = mock(AtlasMapping.class);
when(session.getMapping()).thenReturn(mapping);
when(session.hasErrors()).thenReturn(true);
context.process(session);
when(session.hasErrors()).thenReturn(false);
Mappings mappings = mock(Mappings.class);
when(mapping.getMappings()).thenReturn(mappings);
List<BaseMapping> baseMappings = new ArrayList<>();
Collection baseMapping = mock(Collection.class);
when(baseMapping.getMappingType()).thenReturn(MappingType.COLLECTION);
baseMappings.add(baseMapping);
when(mappings.getMapping()).thenReturn(baseMappings);
Mappings subMappings = mock(Mappings.class);
when(baseMapping.getMappings()).thenReturn(subMappings);
List<BaseMapping> baseMappingList = new ArrayList<>();
Mapping mappingElement1 = mock(Mapping.class);
List<Field> sourceFieldList = new ArrayList<>();
ConstantField sourceField = mock(ConstantField.class);
sourceFieldList.add(sourceField);
when(sourceField.getPath()).thenReturn("contact.firstName");
when(mappingElement1.getInputField()).thenReturn(sourceFieldList);
List<Field> outputFieldList = new ArrayList<>();
Field outputField = mock(Field.class);
outputFieldList.add(outputField);
when(outputField.getPath()).thenReturn("contact.firstName");
when(mappingElement1.getOutputField()).thenReturn(outputFieldList);
when(mappingElement1.getMappingType()).thenReturn(MappingType.ALL);
baseMappingList.add(mappingElement1);
when(subMappings.getMapping()).thenReturn(baseMappingList);
Mapping mappingElement2 = mock(Mapping.class);
when(mappingElement2.getMappingType()).thenReturn(MappingType.ALL);
baseMappingList.add(mappingElement2);
List<Field> sourceFieldList2 = new ArrayList<>();
ConstantField sourceField2 = mock(ConstantField.class);
sourceFieldList2.add(sourceField2);
when(sourceField2.getPath()).thenReturn("contact[1]");
when(mappingElement2.getInputField()).thenReturn(sourceFieldList2);
ConstantModule mockConstantModule = mock(ConstantModule.class);
when(mockConstantModule.getCollectionSize(any(AtlasInternalSession.class), any(Field.class))).thenReturn(1);
ConstantField clonedField = mock(ConstantField.class);
when(clonedField.getPath()).thenReturn("cloned[1]");
when(mockConstantModule.cloneField(any(Field.class))).thenReturn(clonedField);
List<Field> mockSourceFieldList = new ArrayList<>();
ConstantField mockSourceField = mock(ConstantField.class);
mockSourceFieldList.add(mockSourceField);
when(mockSourceField.getPath()).thenReturn("source[1]");
when(mappingElement2.getInputField()).thenReturn(mockSourceFieldList);
List<Field> mockOutputFieldList = new ArrayList<>();
ConstantField mockOutputField = mock(ConstantField.class);
mockOutputFieldList.add(mockOutputField);
when(mockOutputField.getPath()).thenReturn("output[1]");
when(mappingElement2.getOutputField()).thenReturn(mockOutputFieldList);
context.getSourceModules().put(DefaultAtlasContext.CONSTANTS_DOCUMENT_ID, mockConstantModule);
context.process(session);
}
Aggregations