use of io.atlasmap.v2.Field in project atlasmap by atlasmap.
the class JavaModule method processTargetFieldMapping.
@Override
public void processTargetFieldMapping(AtlasInternalSession session) throws AtlasException {
DocumentJavaFieldWriter writer = session.getFieldWriter(getDocId(), DocumentJavaFieldWriter.class);
writer.write(session);
if (LOG.isDebugEnabled()) {
Field sourceField = session.head().getSourceField();
Field targetField = session.head().getTargetField();
LOG.debug("{}: processTargetFieldMapping completed: SourceField:[docId={}, path={}, type={}, value={}], TargetField:[docId={}, path={}, type={}, value={}]", getDocId(), sourceField.getDocId(), sourceField.getPath(), sourceField.getFieldType(), sourceField.getValue(), targetField.getDocId(), targetField.getPath(), targetField.getFieldType(), targetField.getValue());
}
}
use of io.atlasmap.v2.Field in project atlasmap by atlasmap.
the class JavaValidationService method validateClass.
private void validateClass(String mappingId, JavaField field, List<Validation> validations) {
String clazzName = field.getClassName();
if (clazzName != null && !clazzName.isEmpty()) {
Integer major = detectClassVersion(clazzName);
if (major != null) {
if (major > versionMap.get(System.getProperty("java.vm.specification.version"))) {
Validation validation = new Validation();
validation.setScope(ValidationScope.MAPPING);
validation.setId(mappingId);
validation.setMessage(String.format("Class '%s' for field is compiled against unsupported JDK version: %d current JDK: %d", clazzName, major, versionMap.get(System.getProperty("java.vm.specification.version"))));
validation.setStatus(ValidationStatus.ERROR);
validations.add(validation);
}
} else {
Validation validation = new Validation();
validation.setScope(ValidationScope.MAPPING);
validation.setId(mappingId);
validation.setMessage(String.format("Class '%s' for field is not found on the classpath", clazzName));
validation.setStatus(ValidationStatus.ERROR);
validations.add(validation);
}
}
}
use of io.atlasmap.v2.Field in project atlasmap by atlasmap.
the class JavaValidationServiceTest method testValidateMappingInvalidSeparateSourceFieldType.
@Test
public void testValidateMappingInvalidSeparateSourceFieldType() {
AtlasMapping atlasMapping = getAtlasMappingFullValid();
Mapping separateFieldMapping = AtlasModelFactory.createMapping(MappingType.SEPARATE);
separateFieldMapping.setId("separate.firstName.lastName");
JavaField bIJavaField = javaModelFactory.createJavaField();
bIJavaField.setFieldType(FieldType.BOOLEAN);
bIJavaField.setValue(Boolean.TRUE);
bIJavaField.setPath("firstName");
separateFieldMapping.getInputField().add(bIJavaField);
JavaField sOJavaField = javaModelFactory.createJavaField();
sOJavaField.setFieldType(FieldType.STRING);
sOJavaField.setPath("lastName");
sOJavaField.setIndex(0);
separateFieldMapping.getOutputField().add(sOJavaField);
atlasMapping.getMappings().getMapping().add(separateFieldMapping);
validations.addAll(sourceValidationService.validateMapping(atlasMapping));
validations.addAll(targetValidationService.validateMapping(atlasMapping));
assertTrue(validationHelper.hasErrors());
assertFalse(validationHelper.hasWarnings());
assertFalse(validationHelper.hasInfos());
assertEquals(new Integer(1), new Integer(validationHelper.getCount()));
Validation validation = validations.get(0);
assertNotNull(validation);
assertEquals(ValidationScope.MAPPING, validation.getScope());
assertEquals("separate.firstName.lastName", validation.getId());
assertEquals("Input field 'firstName' must be of type 'STRING' for a Separate Mapping", validation.getMessage());
assertEquals(ValidationStatus.ERROR, validation.getStatus());
}
use of io.atlasmap.v2.Field in project atlasmap by atlasmap.
the class JavaValidationServiceTest method testValidateMappingInvalidCombineSourceFieldType.
@Test
public void testValidateMappingInvalidCombineSourceFieldType() {
AtlasMapping atlasMapping = getAtlasMappingFullValid();
Mapping combineFieldMapping = AtlasModelFactory.createMapping(MappingType.COMBINE);
combineFieldMapping.setId("combine.firstName.lastName");
JavaField bIJavaField = javaModelFactory.createJavaField();
bIJavaField.setFieldType(FieldType.STRING);
bIJavaField.setValue(Boolean.TRUE);
bIJavaField.setPath("firstName");
combineFieldMapping.getInputField().add(bIJavaField);
JavaField sOJavaField = javaModelFactory.createJavaField();
sOJavaField.setFieldType(FieldType.BOOLEAN);
sOJavaField.setPath("lastName");
sOJavaField.setIndex(0);
combineFieldMapping.getOutputField().add(sOJavaField);
atlasMapping.getMappings().getMapping().add(combineFieldMapping);
validations.addAll(sourceValidationService.validateMapping(atlasMapping));
validations.addAll(targetValidationService.validateMapping(atlasMapping));
assertTrue(validationHelper.hasErrors());
assertFalse(validationHelper.hasWarnings());
assertFalse(validationHelper.hasInfos());
assertEquals(new Integer(1), new Integer(validationHelper.getCount()));
Validation validation = validations.get(0);
assertNotNull(validation);
assertEquals(ValidationScope.MAPPING, validation.getScope());
assertEquals("combine.firstName.lastName", validation.getId());
assertEquals("Output field 'lastName' must be of type 'STRING' for a Combine Mapping", validation.getMessage());
assertEquals(ValidationStatus.ERROR, validation.getStatus());
}
use of io.atlasmap.v2.Field in project atlasmap by atlasmap.
the class JsonFieldWriter method createValueNode.
private JsonNode createValueNode(Field jsonField) {
FieldType type = jsonField.getFieldType();
Object value = jsonField.getValue();
JsonNode valueNode = null;
if (FieldType.STRING.equals(type)) {
if (value != null) {
valueNode = rootNode.textNode(String.valueOf(value));
} else {
valueNode = rootNode.nullNode();
}
} else if (FieldType.CHAR.equals(type)) {
valueNode = rootNode.textNode(Character.toString((char) value));
} else if (FieldType.BOOLEAN.equals(type)) {
valueNode = rootNode.booleanNode((Boolean) value);
} else if (FieldType.INTEGER.equals(type)) {
valueNode = rootNode.numberNode((Integer) value);
} else if (FieldType.DOUBLE.equals(type) || FieldType.FLOAT.equals(type)) {
valueNode = rootNode.numberNode(new BigDecimal(String.valueOf(value)));
} else if (FieldType.SHORT.equals(type)) {
valueNode = rootNode.numberNode(Short.valueOf(String.valueOf(value)));
} else if (FieldType.LONG.equals(type)) {
valueNode = rootNode.numberNode(Long.valueOf(String.valueOf(value)));
} else if (FieldType.BYTE.equals(type)) {
valueNode = rootNode.numberNode(Byte.valueOf(String.valueOf(value)));
} else {
valueNode = rootNode.nullNode();
}
if (LOG.isDebugEnabled()) {
String valueClass = value == null ? "null" : value.getClass().getName();
LOG.debug("Converted JsonField value to ValueNode. Type: " + type + ", value: " + value + "(" + valueClass + "), node class: " + valueNode.getClass().getName() + ", node: " + valueNode);
}
return valueNode;
}
Aggregations