use of io.atlasmap.xml.v2.XmlField in project atlasmap by atlasmap.
the class BaseXmlInspectionServiceTest method debugFields.
protected void debugFields(Fields xmlFields) {
for (Field field : xmlFields.getField()) {
Assert.assertTrue(field instanceof XmlField);
XmlField xmlField = (XmlField) field;
printXmlField(xmlField);
if (xmlField instanceof XmlComplexType) {
debugFields(((XmlComplexType) xmlField).getXmlFields());
}
}
}
use of io.atlasmap.xml.v2.XmlField in project atlasmap by atlasmap.
the class XmlSchemaInspectionMultipleNamespacesTest method testMultipleNoNamespaceRootSchema.
@Test
public void testMultipleNoNamespaceRootSchema() throws Exception {
File schemaFile = Paths.get("src/test/resources/inspect/multiple-no-namespace-root-schema.xml").toFile();
XmlInspectionService service = new XmlInspectionService();
XmlDocument answer = service.inspectSchema(schemaFile);
Assert.assertEquals(1, answer.getXmlNamespaces().getXmlNamespace().size());
XmlNamespace namespace = answer.getXmlNamespaces().getXmlNamespace().get(0);
Assert.assertEquals("second", namespace.getAlias());
Assert.assertEquals("io.atlasmap.xml.test:Second", namespace.getUri());
Assert.assertEquals(null, namespace.isTargetNamespace());
// Note that the FirstElement also appears here as it's a top level element of namespace ""
Assert.assertEquals(2, answer.getFields().getField().size());
XmlComplexType complex = XmlComplexType.class.cast(answer.getFields().getField().get(1));
Assert.assertEquals("RootDocument", complex.getName());
Assert.assertEquals(2, complex.getXmlFields().getXmlField().size());
for (XmlField field : complex.getXmlFields().getXmlField()) {
switch(field.getName()) {
case "FirstElement":
Assert.assertEquals(FieldType.COMPLEX, field.getFieldType());
Assert.assertEquals("/RootDocument/FirstElement", field.getPath());
List<XmlField> firstFields = XmlComplexType.class.cast(field).getXmlFields().getXmlField();
Assert.assertEquals(1, firstFields.size());
XmlField firstField = firstFields.get(0);
Assert.assertEquals("FirstValue", firstField.getName());
Assert.assertEquals(FieldType.STRING, firstField.getFieldType());
Assert.assertEquals("/RootDocument/FirstElement/FirstValue", firstField.getPath());
break;
case "second:SecondElement":
Assert.assertEquals(FieldType.COMPLEX, field.getFieldType());
Assert.assertEquals("/RootDocument/second:SecondElement", field.getPath());
List<XmlField> secondFields = XmlComplexType.class.cast(field).getXmlFields().getXmlField();
Assert.assertEquals(1, secondFields.size());
XmlField secondField = secondFields.get(0);
Assert.assertEquals("second:SecondValue", secondField.getName());
Assert.assertEquals(FieldType.STRING, secondField.getFieldType());
Assert.assertEquals("/RootDocument/second:SecondElement/second:SecondValue", secondField.getPath());
break;
default:
Assert.fail(String.format("Unknown field '%s'", field.getPath()));
}
}
}
use of io.atlasmap.xml.v2.XmlField in project atlasmap by atlasmap.
the class XmlSchemaInspectionMultipleNamespacesTest method testSyndesis.
@Test
public void testSyndesis() throws Exception {
File schemaFile = Paths.get("src/test/resources/inspect/multiple-namespaces-syndesis.xml").toFile();
XmlInspectionService service = new XmlInspectionService();
XmlDocument answer = service.inspectSchema(schemaFile);
Assert.assertEquals(1, answer.getXmlNamespaces().getXmlNamespace().size());
XmlNamespace namespace = answer.getXmlNamespaces().getXmlNamespace().get(0);
Assert.assertEquals("tns", namespace.getAlias());
Assert.assertEquals("http://syndesis.io/v1/swagger-connector-template/request", namespace.getUri());
Assert.assertEquals(null, namespace.isTargetNamespace());
List<Field> fields = answer.getFields().getField();
Assert.assertEquals(1, fields.size());
XmlComplexType complex = XmlComplexType.class.cast(fields.get(0));
Assert.assertEquals("tns:request", complex.getName());
List<XmlField> rootFields = complex.getXmlFields().getXmlField();
Assert.assertEquals(1, rootFields.size());
complex = XmlComplexType.class.cast(rootFields.get(0));
Assert.assertEquals("tns:body", complex.getName());
List<XmlField> bodyFields = complex.getXmlFields().getXmlField();
Assert.assertEquals(1, bodyFields.size());
complex = XmlComplexType.class.cast(bodyFields.get(0));
Assert.assertEquals("Pet", complex.getName());
List<XmlField> petFields = complex.getXmlFields().getXmlField();
Assert.assertEquals(6, petFields.size());
for (XmlField xmlField : petFields) {
switch(xmlField.getName()) {
case "id":
Assert.assertEquals(FieldType.DECIMAL, xmlField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/id", xmlField.getPath());
break;
case "Category":
Assert.assertEquals(FieldType.COMPLEX, xmlField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/Category", xmlField.getPath());
List<XmlField> categoryFields = XmlComplexType.class.cast(xmlField).getXmlFields().getXmlField();
Assert.assertEquals(2, categoryFields.size());
for (XmlField categoryField : categoryFields) {
switch(categoryField.getName()) {
case "id":
Assert.assertEquals(FieldType.DECIMAL, categoryField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/Category/id", categoryField.getPath());
break;
case "name":
Assert.assertEquals(FieldType.STRING, categoryField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/Category/name", categoryField.getPath());
break;
default:
Assert.fail(String.format("Unknown field '%s'", categoryField.getPath()));
}
}
break;
case "name":
Assert.assertEquals(FieldType.STRING, xmlField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/name", xmlField.getPath());
break;
case "photoUrl":
Assert.assertEquals(FieldType.COMPLEX, xmlField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/photoUrl", xmlField.getPath());
List<XmlField> photoUrlFields = XmlComplexType.class.cast(xmlField).getXmlFields().getXmlField();
Assert.assertEquals(1, photoUrlFields.size());
XmlField photoUrlField = photoUrlFields.get(0);
Assert.assertEquals(FieldType.STRING, photoUrlField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/photoUrl/photoUrl", photoUrlField.getPath());
break;
case "tag":
Assert.assertEquals(FieldType.COMPLEX, xmlField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/tag", xmlField.getPath());
List<XmlField> tagFields = XmlComplexType.class.cast(xmlField).getXmlFields().getXmlField();
Assert.assertEquals(1, tagFields.size());
XmlField tagField = tagFields.get(0);
Assert.assertEquals(FieldType.COMPLEX, tagField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/tag/Tag", tagField.getPath());
List<XmlField> tagTagFields = XmlComplexType.class.cast(tagField).getXmlFields().getXmlField();
Assert.assertEquals(2, tagTagFields.size());
for (XmlField tagTagField : tagTagFields) {
switch(tagTagField.getName()) {
case "id":
Assert.assertEquals(FieldType.DECIMAL, tagTagField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/tag/Tag/id", tagTagField.getPath());
break;
case "name":
Assert.assertEquals(FieldType.STRING, tagTagField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/tag/Tag/name", tagTagField.getPath());
break;
default:
Assert.fail(String.format("Unknown field '%s'", tagTagField.getPath()));
}
}
break;
case "status":
Assert.assertEquals(FieldType.STRING, xmlField.getFieldType());
Assert.assertEquals("/tns:request/tns:body/Pet/status", xmlField.getPath());
break;
default:
Assert.fail(String.format("Unknown field '%s'", xmlField.getPath()));
}
}
}
use of io.atlasmap.xml.v2.XmlField in project atlasmap by atlasmap.
the class XmlFieldReaderTest method testReadDocumentMultipleFieldsSetElementValuesComplex.
@Test
public void testReadDocumentMultipleFieldsSetElementValuesComplex() throws Exception {
String doc = getDocumentString("src/test/resources/complex_example.xml");
reader.setDocument(doc, false);
LinkedList<XmlField> fieldList = new LinkedList<>();
XmlField xmlField = AtlasXmlModelFactory.createXmlField();
xmlField.setPath("/orders/order[3]/id[1]");
fieldList.addLast(xmlField);
XmlField xmlField2 = AtlasXmlModelFactory.createXmlField();
xmlField2.setPath("/orders/order[1]/id");
fieldList.addLast(xmlField2);
XmlField xmlField3 = AtlasXmlModelFactory.createXmlField();
xmlField3.setPath("/orders/order[2]/id[2]");
fieldList.addLast(xmlField3);
AtlasInternalSession session = mock(AtlasInternalSession.class);
when(session.head()).thenReturn(mock(Head.class));
for (XmlField field : fieldList) {
assertNull(field.getValue());
when(session.head().getSourceField()).thenReturn(field);
reader.read(session);
assertNotNull(field.getValue());
}
assertThat(fieldList.getFirst().getValue(), is("54554555"));
assertThat(fieldList.get(1).getValue(), is("12312"));
assertThat(fieldList.getLast().getValue(), is("54554555"));
}
use of io.atlasmap.xml.v2.XmlField in project atlasmap by atlasmap.
the class XmlFieldReaderTest method testThrowExceptionOnNullXmlField.
@Test(expected = AtlasException.class)
public void testThrowExceptionOnNullXmlField() throws Exception {
String doc = getDocumentString("src/test/resources/complex_example.xml");
reader.setDocument(doc, false);
XmlField xmlField = null;
AtlasInternalSession session = mock(AtlasInternalSession.class);
when(session.head()).thenReturn(mock(Head.class));
when(session.head().getSourceField()).thenReturn(xmlField);
reader.read(session);
}
Aggregations