package org.jboss.tools.smooks.test.jsonparse; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Iterator; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import org.eclipse.emf.ecore.resource.Resource; import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject; import org.jboss.tools.smooks.configuration.editors.utils.JsonInputDataParser; import org.jboss.tools.smooks.model.json12.Json12Reader; import org.jboss.tools.smooks.model.smooks.SmooksResourceListType; import org.jboss.tools.smooks.model.smooks.util.SmooksResourceFactoryImpl; import org.jboss.tools.smooks.test.model11.BaseTestCase; public class JsonParserTest extends BaseTestCase { public void testParser1() throws IOException, ParserConfigurationException, InvocationTargetException { Resource smooksResource = new SmooksResourceFactoryImpl().createResource(null); smooksResource.load(JsonParserTest.class.getResourceAsStream("smooks-config.xml"), null); SmooksResourceListType resourceList = ((org.jboss.tools.smooks.model.smooks.DocumentRoot) smooksResource .getContents().get(0)).getSmooksResourceList(); assertNotNull(resourceList); JsonInputDataParser parser = new JsonInputDataParser(); Json12Reader reader = null; List<?> list = resourceList.getAbstractReader(); for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) { Object object = (Object) iterator.next(); if (object instanceof Json12Reader) { reader = (Json12Reader) object; } } try { IXMLStructuredObject model = parser.parseJsonFile(JsonParserTest.class .getResourceAsStream("input-message.jsn"), reader); List<IXMLStructuredObject> children = model.getChildren(); assertEquals(children.size(), 1); IXMLStructuredObject rootModel = children.get(0); checkModel(rootModel); parser = new JsonInputDataParser(); model = parser.parseJsonFile(JsonParserTest.class.getResourceAsStream("input-message.jsn"), resourceList); children = model.getChildren(); assertEquals(children.size(), 1); rootModel = children.get(0); checkModel(rootModel); } catch (Throwable t) { t.printStackTrace(); } } private void checkModel(IXMLStructuredObject model) { assertEquals("root", model.getNodeName()); assertEquals(2, model.getChildren().size()); for (Iterator<?> iterator = model.getChildren().iterator(); iterator.hasNext();) { IXMLStructuredObject child = (IXMLStructuredObject) iterator.next(); if (child.getNodeName().equals("header")) { List<?> list = child.getChildren(); boolean checked = false; for (Iterator<?> iterator2 = list.iterator(); iterator2.hasNext();) { Object object = (Object) iterator2.next(); if (object instanceof IXMLStructuredObject) { if (((IXMLStructuredObject) object).getNodeName().equals("date-time") || ((IXMLStructuredObject) object).getNodeName().equals("timeanddate")) { checked = true; } } } assertEquals(checked, true); } } } }