Search in sources :

Example 41 with Field

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());
    }
}
Also used : Field(io.atlasmap.v2.Field) JavaEnumField(io.atlasmap.java.v2.JavaEnumField) JavaField(io.atlasmap.java.v2.JavaField) DocumentJavaFieldWriter(io.atlasmap.java.core.DocumentJavaFieldWriter)

Example 42 with Field

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);
        }
    }
}
Also used : Validation(io.atlasmap.v2.Validation)

Example 43 with Field

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());
}
Also used : Validation(io.atlasmap.v2.Validation) AtlasMapping(io.atlasmap.v2.AtlasMapping) JavaField(io.atlasmap.java.v2.JavaField) Mapping(io.atlasmap.v2.Mapping) AtlasMapping(io.atlasmap.v2.AtlasMapping) Test(org.junit.Test)

Example 44 with Field

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());
}
Also used : Validation(io.atlasmap.v2.Validation) AtlasMapping(io.atlasmap.v2.AtlasMapping) JavaField(io.atlasmap.java.v2.JavaField) Mapping(io.atlasmap.v2.Mapping) AtlasMapping(io.atlasmap.v2.AtlasMapping) Test(org.junit.Test)

Example 45 with Field

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;
}
Also used : JsonNode(com.fasterxml.jackson.databind.JsonNode) BigDecimal(java.math.BigDecimal) FieldType(io.atlasmap.v2.FieldType)

Aggregations

Field (io.atlasmap.v2.Field)60 Test (org.junit.Test)27 AtlasMapping (io.atlasmap.v2.AtlasMapping)24 Mapping (io.atlasmap.v2.Mapping)23 JavaField (io.atlasmap.java.v2.JavaField)20 SimpleField (io.atlasmap.v2.SimpleField)17 BaseMapping (io.atlasmap.v2.BaseMapping)15 Validation (io.atlasmap.v2.Validation)14 JavaEnumField (io.atlasmap.java.v2.JavaEnumField)13 AtlasException (io.atlasmap.api.AtlasException)12 FieldType (io.atlasmap.v2.FieldType)12 JsonField (io.atlasmap.json.v2.JsonField)10 AtlasInternalSession (io.atlasmap.spi.AtlasInternalSession)10 XmlField (io.atlasmap.xml.v2.XmlField)9 LookupTable (io.atlasmap.v2.LookupTable)8 AtlasConversionException (io.atlasmap.api.AtlasConversionException)7 ConstantField (io.atlasmap.v2.ConstantField)7 Head (io.atlasmap.spi.AtlasInternalSession.Head)6 PropertyField (io.atlasmap.v2.PropertyField)6 Method (java.lang.reflect.Method)6