Added nsuris regex processing instruction to Flexmi
diff --git a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiResource.java b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiResource.java
index 848ead6..76ab4f7 100644
--- a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiResource.java
+++ b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiResource.java
@@ -23,6 +23,8 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
+
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
@@ -35,6 +37,7 @@
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
@@ -369,6 +372,18 @@
else addParseWarning("Failed to locate EPackage for nsURI " + value + " ");*/
}
+ else if ("nsuris".equalsIgnoreCase(key)) {
+ boolean matchFound = false;
+ for (String nsuri : EPackage.Registry.INSTANCE.keySet()) {
+ if (nsuri.matches(value)) {
+ getResourceSet().getPackageRegistry().put(nsuri, EPackage.Registry.INSTANCE.getEPackage(nsuri));
+ matchFound = true;
+ }
+ }
+ if (!matchFound) {
+ addParseWarning("Failed to locate EPackages for nsURI pattern " + value + " ");
+ }
+ }
else if ("eol".equalsIgnoreCase(key)) {
scripts.add(value);
}