Author: tfennelly
Date: 2010-01-26 15:56:29 -0500 (Tue, 26 Jan 2010)
New Revision: 19941
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/xml/XMLSampleModelBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/xml/XSDModelBuilder.java
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/META-INF/MANIFEST.MF
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/TestUtil.java
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/XSD_XMLFreeMarkerTemplateBuilderTest.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5246
XSDModelBuilder not handling <import> and <include> definitions properly.
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/xml/XMLSampleModelBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/xml/XMLSampleModelBuilder.java 2010-01-26
18:45:48 UTC (rev 19940)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/xml/XMLSampleModelBuilder.java 2010-01-26
20:56:29 UTC (rev 19941)
@@ -23,10 +23,8 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/xml/XSDModelBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/xml/XSDModelBuilder.java 2010-01-26
18:45:48 UTC (rev 19940)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/xml/XSDModelBuilder.java 2010-01-26
20:56:29 UTC (rev 19941)
@@ -22,6 +22,8 @@
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.xsd.util.XSDResourceFactoryImpl;
import org.eclipse.xsd.util.XSDResourceImpl;
import org.eclipse.xsd.*;
@@ -128,24 +130,14 @@
}
}
- private void loadSchema(URI baseURI, String schemaLocation) throws IOException,
ModelBuilderException {
- File baseFile = new File(baseURI.toFileString());
- java.net.URI resolvedURI = baseFile.toURI().resolve(schemaLocation);
- File schemaFile = new File(resolvedURI);
-
- loadSchema(URI.createFileURI(schemaFile.getAbsolutePath()));
- }
-
private void loadSchema(URI schemaURI) throws IOException, ModelBuilderException {
- if(loadedSchemas.contains(schemaURI.toFileString())) {
- return;
- }
+ ResourceSet resourceSet = new ResourceSetImpl();
+ Resource resource;
+
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xsd",
new XSDResourceFactoryImpl());
+ resource = resourceSet.getResource(schemaURI, true);
- loadedSchemas.add(schemaURI.toFileString());
-
- Resource resource = new XSDResourceFactoryImpl().createResource(schemaURI);
Map<String, Object> options = new HashMap<String, Object>();
-
options.put(XSDResourceImpl.XSD_TRACK_LOCATION, true);
resource.load(options);
@@ -168,20 +160,10 @@
XSDTypeDefinition type = (XSDTypeDefinition) typeDefs.get(i);
types.put(type.getName(), type);
}
-
- // Load includes and imports types...
- List contents = schema.getContents();
- for(Object schemaComponentObj : contents) {
-
- // TODO: We need to sort this out properly i.e. handle schema <import> and
<include> properly!!!
-
- if(schemaComponentObj instanceof XSDImport) {
- XSDImport xsdImport = (XSDImport) schemaComponentObj;
- loadSchema(schemaURI, xsdImport.getSchemaLocation());
- } else if(schemaComponentObj instanceof XSDInclude) {
- XSDInclude xsdInclude = (XSDInclude) schemaComponentObj;
- loadSchema(schemaURI, xsdInclude.getSchemaLocation());
- }
+
+ EList<Resource> schemaResources = resourceSet.getResources();
+ for(Resource schemaRes : schemaResources) {
+ loadedSchemas.add(schemaRes.getURI().toFileString());
}
}
Modified: trunk/smooks/tests/org.jboss.tools.smooks.templating.test/META-INF/MANIFEST.MF
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/META-INF/MANIFEST.MF 2010-01-26
18:45:48 UTC (rev 19940)
+++
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/META-INF/MANIFEST.MF 2010-01-26
20:56:29 UTC (rev 19941)
@@ -7,6 +7,12 @@
.
Bundle-Vendor: %Bundle-Vendor.0
Bundle-Localization: plugin
-Require-Bundle:
org.junit,org.jboss.tools.smooks.templating,org.jboss.tools.smooks.runtime,org.eclipse.emf.common
+Require-Bundle: org.junit,
+ org.jboss.tools.smooks.templating,
+ org.jboss.tools.smooks.runtime,
+ org.eclipse.emf.common,
+ org.eclipse.xsd,
+ org.eclipse.emf,
+ org.eclipse.core.runtime
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Modified:
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/TestUtil.java
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/TestUtil.java 2010-01-26
18:45:48 UTC (rev 19940)
+++
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/TestUtil.java 2010-01-26
20:56:29 UTC (rev 19941)
@@ -78,24 +78,24 @@
}
public static TemplateBuilder createXSDFreeMarkerTemplateBuilder(File xsdFile, String
rootElementName) throws IOException, ModelBuilderException {
- if(!xsdFile.exists()) {
- throw new RuntimeException("Unknown: " + xsdFile.getAbsolutePath());
- }
+ URI fileURI = fileToURI(xsdFile);
- URI fileURI = URI.createFileURI(xsdFile.getCanonicalFile().toString());
-
XSDModelBuilder modelBuilder = new XSDModelBuilder(fileURI);
modelBuilder.setRootElementName(rootElementName);
return new XMLFreeMarkerTemplateBuilder(modelBuilder);
}
public static TemplateBuilder createXMLSampleFreeMarkerTemplateBuilder(File
xmlSampleFile) throws IOException, ModelBuilderException {
- if(!xmlSampleFile.exists()) {
- throw new RuntimeException("Unknown: " +
xmlSampleFile.getAbsolutePath());
- }
+ URI fileURI = fileToURI(xmlSampleFile);
- URI fileURI = URI.createFileURI(xmlSampleFile.getCanonicalFile().toString());
-
return new XMLFreeMarkerTemplateBuilder(new XMLSampleModelBuilder(fileURI));
}
+
+ public static URI fileToURI(File file) throws IOException {
+ if(!file.exists()) {
+ throw new RuntimeException("Unknown: " + file.getAbsolutePath());
+ }
+
+ return URI.createFileURI(file.getCanonicalFile().toString());
+ }
}
Modified:
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/XSD_XMLFreeMarkerTemplateBuilderTest.java
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/XSD_XMLFreeMarkerTemplateBuilderTest.java 2010-01-26
18:45:48 UTC (rev 19940)
+++
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/XSD_XMLFreeMarkerTemplateBuilderTest.java 2010-01-26
20:56:29 UTC (rev 19941)
@@ -52,7 +52,7 @@
* @author <a
href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
*/
public class XSD_XMLFreeMarkerTemplateBuilderTest extends TestCase {
-
+
public void test_SimplePerson_01() throws IOException, ParserConfigurationException,
TemplateBuilderException,
SAXException, ModelBuilderException {
TemplateBuilder builder = TestUtil.createXSDFreeMarkerTemplateBuilder(new File(
@@ -156,19 +156,6 @@
//checkNodeName(document.getDocumentElement());
}
- private void checkNodeName(Node node) {
- if (node instanceof Element) {
- assertNotNull(((Element)node).getTagName());
- }
- System.out.println(node.getNodeName());
- assertTrue(node.getNodeName().indexOf("null") == -1);
- NodeList nodeList = node.getChildNodes();
- int length = nodeList.getLength();
- for (int i = 0; i < length; i++) {
- checkNodeName(nodeList.item(i));
- }
- }
-
public void test_creature_01() throws IOException, ParserConfigurationException,
TemplateBuilderException,
SAXException, ModelBuilderException, XPathExpressionException {
TemplateBuilder builder = TestUtil.createXSDFreeMarkerTemplateBuilder(new File(
@@ -251,17 +238,14 @@
assertEquals(theTemplate, builder2.buildTemplate());
}
- // public void test_OrderStatusRequest() throws IOException,
- // ParserConfigurationException, ModelBuilderException, SAXException,
- // TemplateBuilderException {
- // TemplateBuilder builder = TestUtil.createXSDFreeMarkerTemplateBuilder(new
- //
File("resources/xcbl40/schema/org/xcbl/path_delim/schemas/xcbl/v4_0/ordermanagement/v1_0/ordermanagement.xsd"),
- // "OrderStatusResult");
- // String theTemplate = builder.buildTemplate();
- //
- // TestUtil.assertXMLEquals(theTemplate, "expected/order-status-01.xml",
- // getClass());
- // }
+ public void test_OrderStatusRequest() throws IOException, ParserConfigurationException,
ModelBuilderException, SAXException, TemplateBuilderException {
+ TemplateBuilder builder = TestUtil.createXSDFreeMarkerTemplateBuilder(new
+
File("resources/xcbl40/schema/org/xcbl/path_delim/schemas/xcbl/v4_0/ordermanagement/v1_0/ordermanagement.xsd"),
"OrderStatusResult");
+ String theTemplate = builder.buildTemplate();
+
+ System.out.println(theTemplate);
+ TestUtil.assertXMLEquals(theTemplate, "expected/order-status-01.xml",
getClass());
+ }
private Map createPersonObj(String first, String last, String address, int age) {
Map javaCtx = new HashMap();