Flexmi: Allow including YAML files
diff --git a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiParser.java b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiParser.java
index ea495d2..faa6b26 100644
--- a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiParser.java
+++ b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiParser.java
@@ -2,15 +2,30 @@
import java.io.InputStream;
+import org.eclipse.emf.common.util.URI;
import org.eclipse.epsilon.flexmi.xml.FlexmiXmlParser.Handler;
import org.w3c.dom.Document;
public interface FlexmiParser {
- public void parse(FlexmiResource resource, InputStream inputStream, Handler handler) throws FlexmiParseException;
-
+ /**
+ * Starts the parsing of a Flexmi resource
+ */
+ public void parse(FlexmiResource resource, InputStream inputStream,
+ Handler handler) throws FlexmiParseException;
+
+ /**
+ * Allows parsing included fragments that have a different URI
+ * and do not require startDocument events
+ */
+ public void parse(FlexmiResource resource, URI uri, InputStream inputStream,
+ Handler handler, boolean processDocument) throws Exception;
+
+ /**
+ * Performs the actual parsing of the input contents into a DOM
+ */
public Document parse(InputStream inputStream) throws Exception;
-
+
public FlexmiFlavour getFlavour();
}
diff --git a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/xml/FlexmiXmlParser.java b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/xml/FlexmiXmlParser.java
index ecbfaef..5f5eb5a 100644
--- a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/xml/FlexmiXmlParser.java
+++ b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/xml/FlexmiXmlParser.java
@@ -9,6 +9,7 @@
**********************************************************************/
package org.eclipse.epsilon.flexmi.xml;
+import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.Scanner;
@@ -124,8 +125,12 @@
try {
URI includedURI = URI.createURI(value).resolve(uri);
InputStream includedInputStream = resource.getResourceSet().getURIConverter().createInputStream(includedURI);
+
+ BufferedInputStream bufferedInputStream = new BufferedInputStream(includedInputStream);
+ FlexmiParser parser = resource.createParser(bufferedInputStream);
+
resource.startProcessingFragment(includedURI);
- new FlexmiXmlParser().parse(resource, includedURI, includedInputStream, handler, false);
+ parser.parse(resource, includedURI, bufferedInputStream, handler, false);
resource.endProcessingFragment();
}
catch (Exception ex) {