Author: DartPeng
Date: 2009-07-22 06:29:19 -0400 (Wed, 22 Jul 2009)
New Revision: 16734
Added:
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/EDIParserTest.java
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/edi-to-xml-order-mapping.xml
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/input-message.edi
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/smooks-config.xml
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/smooks-config.xml.ext
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
Log:
JBIDE-4217
Add new unit test case for EDI parser
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF 2009-07-22
09:34:47 UTC (rev 16733)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF 2009-07-22
10:29:19 UTC (rev 16734)
@@ -35,6 +35,7 @@
.
Export-Package: org.jboss.tools.smooks.configuration.editors,
org.jboss.tools.smooks.configuration.editors.csv,
+ org.jboss.tools.smooks.configuration.editors.edi,
org.jboss.tools.smooks.configuration.editors.javabean,
org.jboss.tools.smooks.configuration.editors.uitls,
org.jboss.tools.smooks.configuration.editors.xml
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java 2009-07-22
09:34:47 UTC (rev 16733)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java 2009-07-22
10:29:19 UTC (rev 16734)
@@ -26,6 +26,7 @@
import org.dom4j.DocumentException;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.emf.ecore.EObject;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
@@ -53,7 +54,51 @@
public static final String ENCODING = "encoding";
public static final Object MAPPING_MODEL = "mappingModelFile";
+
+ public TagList parseEDIFile(InputStream stream, InputType
inputType,SmooksResourceListType resourceList , IProject project)
+ throws IOException, DocumentException {
+ List<ParamType> paramList = inputType.getParam();
+ String encoding = null;
+ String mappingModel = null;
+ for (Iterator<?> iterator = paramList.iterator(); iterator.hasNext();) {
+ ParamType paramType = (ParamType) iterator.next();
+ if (paramType.getName().equals(USE_AVAILABEL_READER)) {
+ if (paramType.getValue().equalsIgnoreCase("true") && resourceList
!= null) {
+ List<AbstractReader> readers = resourceList.getAbstractReader();
+ int count = 0;
+ int index = -1;
+ for (Iterator<?> iterator2 = readers.iterator(); iterator2.hasNext();) {
+ AbstractReader abstractReader = (AbstractReader) iterator2.next();
+ if (abstractReader instanceof EDIReader) {
+ count++;
+ if (index == -1) {
+ index = readers.indexOf(abstractReader);
+ }
+ }
+ }
+
+ if (count > 1) {
+ // throw new
+ // RuntimeException("The smooks config file should have only one JSON
reader");
+ }
+ if (index != -1) {
+ return parseEDIFile(stream, (EDIReader) readers.get(index) , project);
+ }
+
+ }
+ }
+ if (paramType.getName().equals(ENCODING)) {
+ encoding = paramType.getValue();
+ }
+ if (paramType.getName().equals(MAPPING_MODEL)) {
+ mappingModel = paramType.getValue();
+ }
+ }
+
+ return parseEDIFile(stream, mappingModel, encoding, project);
+ }
+
public TagList parseEDIFile(InputStream stream, InputType inputType,
SmooksResourceListType resourceList)
throws IOException, DocumentException {
@@ -98,6 +143,11 @@
return parseEDIFile(stream, mappingModel, encoding, resourceList);
}
+ public TagList parseEDIFile(InputStream ediInputStream, EDIReader reader , IProject
project) throws IOException, DocumentException {
+ String encoding = reader.getEncoding();
+ String mappingModel = reader.getMappingModel();
+ return parseEDIFile(ediInputStream, mappingModel, encoding, project);
+ }
public TagList parseEDIFile(InputStream ediInputStream, EDIReader reader) throws
IOException, DocumentException {
String encoding = reader.getEncoding();
@@ -107,6 +157,16 @@
public TagList parseEDIFile(InputStream ediInputStream, String mappingModel, String
ediFileEncoding, EObject emodel)
throws IOException, DocumentException {
+ IResource resource = SmooksUIUtils.getResource(emodel);
+ IProject project = null;
+ if (resource != null) {
+ project = resource.getProject();
+ }
+ return parseEDIFile(ediInputStream, mappingModel, ediFileEncoding, project);
+ }
+
+ public TagList parseEDIFile(InputStream ediInputStream, String mappingModel, String
ediFileEncoding,
+ IProject project) throws IOException, DocumentException {
Smooks smooks = new Smooks();
SmooksResourceConfiguration readerConfig = new
SmooksResourceConfiguration("org.xml.sax.driver",
@@ -116,12 +176,9 @@
if (f.exists()) {
modelPath = f.toURI().toString();
} else {
- IResource resource = SmooksUIUtils.getResource(emodel);
- if (resource != null) {
- IFile tf = SmooksUIUtils.getFile(mappingModel, resource.getProject());
- if (tf != null) {
- modelPath = tf.getLocation().toFile().toURI().toString();
- }
+ IFile tf = SmooksUIUtils.getFile(mappingModel, project);
+ if (tf != null) {
+ modelPath = tf.getLocation().toFile().toURI().toString();
}
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-07-22
09:34:47 UTC (rev 16733)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-07-22
10:29:19 UTC (rev 16734)
@@ -1105,6 +1105,8 @@
if (resource == null)
return null;
URI uri = resource.getURI();
+
+ if(uri == null) return null;
IResource workspaceResource = null;
if (uri.isPlatformResource()) {
String path = uri.toPlatformString(true);
@@ -1483,6 +1485,7 @@
}
public static IFile getFile(String uri, IProject project) {
+ if(project == null) return null;
if (uri.charAt(0) == '\\' || uri.charAt(0) == '/') {
uri = uri.substring(1);
}
Added:
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/EDIParserTest.java
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/EDIParserTest.java
(rev 0)
+++
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/EDIParserTest.java 2009-07-22
10:29:19 UTC (rev 16734)
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.test.ediparser;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.dom4j.DocumentException;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
+import org.jboss.tools.smooks.configuration.editors.edi.EDIDataParser;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.configuration.editors.xml.TagList;
+import org.jboss.tools.smooks.model.graphics.ext.InputType;
+import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphExtensionDocumentRoot;
+import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtType;
+import
org.jboss.tools.smooks.model.graphics.ext.util.SmooksGraphicsExtResourceFactoryImpl;
+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;
+
+/**
+ * @author Dart (dpeng(a)redhat.com)
+ *
+ */
+public class EDIParserTest extends BaseTestCase {
+
+ public void testEDIParser() throws IOException, DocumentException,
ParserConfigurationException {
+ Resource extResource = new
SmooksGraphicsExtResourceFactoryImpl().createResource(null);
+ extResource.load(EDIParserTest.class.getResourceAsStream("smooks-config.xml.ext"),
null);
+ SmooksGraphicsExtType extType = ((SmooksGraphExtensionDocumentRoot)
extResource.getContents().get(0))
+ .getSmooksGraphicsExt();
+ Resource smooksResource = new SmooksResourceFactoryImpl().createResource(null);
+
+ assertNotNull(extType);
+ InputType inputType = null;
+ List<?> ilist = extType.getInput();
+ for (Iterator<?> iterator = ilist.iterator(); iterator.hasNext();) {
+ Object object = (Object) iterator.next();
+ if (object instanceof InputType) {
+ if ("EDI".equalsIgnoreCase(((InputType) object).getType())) {
+ inputType = (InputType) object;
+ break;
+ }
+ }
+ }
+ assertNotNull(inputType);
+
+
+ smooksResource.load(EDIParserTest.class.getResourceAsStream("smooks-config.xml"),
null);
+
+ SmooksResourceListType resourceList =
((org.jboss.tools.smooks.model.smooks.DocumentRoot) smooksResource
+ .getContents().get(0)).getSmooksResourceList();
+ assertNotNull(resourceList);
+
+ EDIDataParser parser = new EDIDataParser();
+ TagList tagList =
parser.parseEDIFile(EDIParserTest.class.getResourceAsStream("input-message.edi"),
inputType,resourceList);
+ assertNotNull(tagList);
+ List<String> namesList = new ArrayList<String>();
+ namesList.add("Orderaaa");
+ checkTagList1(tagList.getChildren(), namesList, new String[] { "header",
"customer-details", "order-item" });
+
+ for (Iterator<?> iterator = ilist.iterator(); iterator.hasNext();) {
+ Object object = (Object) iterator.next();
+ if (object instanceof InputType) {
+ if ("EDI".equalsIgnoreCase(((InputType) object).getType()) &&
object != inputType) {
+ inputType = (InputType) object;
+ break;
+ }
+ }
+ }
+
+ parser = new EDIDataParser();
+ tagList =
parser.parseEDIFile(EDIParserTest.class.getResourceAsStream("input-message.edi"),
inputType,
+ resourceList);
+ assertNotNull(tagList);
+ checkTagList1(tagList.getChildren(), namesList, new String[] { "header",
"customer-details", "order-item" });
+ }
+
+ private void checkChildrenNode(String requiredSelector, String nodeName,
IXMLStructuredObject tag) {
+ IXMLStructuredObject node1 = SmooksUIUtils.localXMLNodeWithNodeName(nodeName, tag);
+ assertNotNull(node1);
+ String selector = SmooksUIUtils.generateFullPath(node1, "/");
+ assertEquals(requiredSelector, selector);
+ }
+
+ private void checkTagList1(List<?> tagList, List<String>
requiredRootTagName, String[] childrenNodesNames) {
+ for (Iterator<?> iterator = tagList.iterator(); iterator.hasNext();) {
+ Object object = (Object) iterator.next();
+ if (object instanceof IXMLStructuredObject) {
+ IXMLStructuredObject tag = (IXMLStructuredObject) object;
+ assertEquals(requiredRootTagName.get(tagList.indexOf(tag)), tag.getNodeName());
+ String n = SmooksUIUtils.generateFullPath(tag, "/");
+ for (int i = 0; i < childrenNodesNames.length; i++) {
+ checkChildrenNode("/" + n + "/" + childrenNodesNames[i],
childrenNodesNames[i], tag);
+ }
+ }
+ }
+ }
+}
Property changes on:
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/EDIParserTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/edi-to-xml-order-mapping.xml
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/edi-to-xml-order-mapping.xml
(rev 0)
+++
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/edi-to-xml-order-mapping.xml 2009-07-22
10:29:19 UTC (rev 16734)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<medi:edimap
xmlns:medi="http://www.milyn.org/schema/edi-message-mapping-1.0.xsd&...
+ <medi:description name="DVD Order" version="1.0"/>
+ <medi:delimiters component="^" field="*"
segment="
" sub-component="~"/>
+ <medi:segments xmltag="Orderaaa">
+ <medi:segment xmltag="header" segcode="HDR">
+ <medi:field xmltag="order-id"/>
+ <medi:field xmltag="status-code"/>
+ <medi:field xmltag="net-amount"/>
+ <medi:field xmltag="total-amount"/>
+ <medi:field xmltag="tax"/>
+ <medi:field xmltag="date"/>
+ </medi:segment>
+ <medi:segment xmltag="customer-details" segcode="CUS">
+ <medi:field xmltag="username"/>
+ <medi:field xmltag="name">
+ <medi:component xmltag="firstname"/>
+ <medi:component xmltag="lastname"/>
+ </medi:field>
+ <medi:field xmltag="state"/>
+ </medi:segment>
+ <medi:segment xmltag="order-item" maxOccurs="-1"
segcode="ORD">
+ <medi:field xmltag="position"/>
+ <medi:field xmltag="product-id"/>
+ <medi:field xmltag="title"/>
+ <medi:field xmltag="ordername"/>
+ <medi:field xmltag="price"/>
+ </medi:segment>
+ </medi:segments>
+</medi:edimap>
\ No newline at end of file
Property changes on:
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/edi-to-xml-order-mapping.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/input-message.edi
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/input-message.edi
(rev 0)
+++
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/input-message.edi 2009-07-22
10:29:19 UTC (rev 16734)
@@ -0,0 +1,4 @@
+HDR*1*0*59.97*64.92*4.95*Wed Nov 15 13:45:28 EST 2006
+CUS*user1*Harry^Fletcher*SD
+ORD*1*1*364*The 40-Year-Old Virgin*29.98
+ORD*2*1*299*Pulp Fiction*29.99
Added:
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/smooks-config.xml
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/smooks-config.xml
(rev 0)
+++
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/smooks-config.xml 2009-07-22
10:29:19 UTC (rev 16734)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<smooks-resource-list
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
xmlns:edi="http://www.milyn.org/xsd/smooks/edi-1.1.xsd"
xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.1.xsd">
+ <params>
+ <param name="stream.filter.type">SAX</param>
+ </params>
+ <abstract-reader xsi:type="edi:reader" encoding="UTF-8"
mappingModel="/org/jboss/tools/smooks/test/ediparser/edi-to-xml-order-mapping.xml"/>
+ <jb:bindings beanId="a" class="example.A">
+ <jb:value data="a" property="name"/>
+ <jb:wiring beanIdRef="a" property="b"/>
+ </jb:bindings>
+</smooks-resource-list>
\ No newline at end of file
Property changes on:
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/smooks-config.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/smooks-config.xml.ext
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/smooks-config.xml.ext
(rev 0)
+++
trunk/smooks/tests/org.jboss.tools.smooks.test/src/org/jboss/tools/smooks/test/ediparser/smooks-config.xml.ext 2009-07-22
10:29:19 UTC (rev 16734)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<smooks-graphics-ext
xmlns="http://www.jboss.org/jbosstools/smooks/smooks-graphics-ext.xs...
+ <input type="EDI">
+ <param
name="path">Workspace://javabean_test/src/example/input-message.edi</param>
+ <param name="use_availableReader">true</param>
+ </input>
+ <input type="EDI">
+ <param
name="path">Workspace://javabean_test/src/example/input-message.edi</param>
+ <param name="encoding">UTF-8</param>
+ <param
name="mappingModelFile">/org/jboss/tools/smooks/test/ediparser/edi-to-xml-order-mapping.xml</param>
+ </input>
+</smooks-graphics-ext>
\ No newline at end of file