Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML302UMLResourceFactoryImpl.java')
-rw-r--r--plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML302UMLResourceFactoryImpl.java77
1 files changed, 74 insertions, 3 deletions
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML302UMLResourceFactoryImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML302UMLResourceFactoryImpl.java
index 1b242f9c..3e825e65 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML302UMLResourceFactoryImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML302UMLResourceFactoryImpl.java
@@ -11,15 +11,33 @@
*/
package org.eclipse.uml2.uml.internal.resource;
+import java.util.Map;
+
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.resource.UML302UMLExtendedMetaData;
import org.eclipse.uml2.uml.resource.UML302UMLResource;
+import org.eclipse.uml2.uml.resource.UML302UMLResourceHandler;
+import org.eclipse.uml2.uml.resource.UMLResource;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+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.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.mapping.ecore2xml.Ecore2XMLPackage;
+import org.eclipse.emf.mapping.ecore2xml.Ecore2XMLRegistry;
+import org.eclipse.emf.mapping.ecore2xml.impl.Ecore2XMLRegistryImpl;
/**
* Resource factory that converts .uml models.
- * OMG: UML 2.2 and UML 2.4
- * API: UML2 3.x and UML2 4.0
+ * OMG: UML 2.2 and UML 2.4
+ * API: UML2 3.x and UML2 4.0.x
*
- * @since 3.0
+ * @since 4.0
*/
public class UML302UMLResourceFactoryImpl
extends UMLResourceFactoryImpl
@@ -29,4 +47,57 @@ public class UML302UMLResourceFactoryImpl
super();
}
+ @Override
+ public Resource createResourceGen(URI uri) {
+ UML302UMLResource result = new UML302UMLResourceImpl(uri);
+ result.setEncoding(UML302UMLResource.DEFAULT_ENCODING);
+ return result;
+ }
+
+ @Override
+ public Resource createResource(URI uri) {
+ UMLResource resource = (UMLResource) super.createResource(uri);
+
+ Map<Object, Object> defaultLoadOptions = resource
+ .getDefaultLoadOptions();
+
+ EPackage.Registry ePackageRegistry = new EPackageRegistryImpl(
+ EPackage.Registry.INSTANCE);
+ ePackageRegistry.put(UML302UMLResource.UML_METAMODEL_NS_URI,
+ UMLPackage.eINSTANCE);
+
+ ePackageRegistry
+ .put(
+ "platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore", UMLPackage.eINSTANCE); //$NON-NLS-1$
+
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.setPackageRegistry(ePackageRegistry);
+
+ Ecore2XMLRegistry ecore2xmlRegistry = new Ecore2XMLRegistryImpl(
+ Ecore2XMLRegistry.INSTANCE);
+ ecore2xmlRegistry
+ .put(
+ UML302UMLResource.UML_METAMODEL_NS_URI,
+ EcoreUtil
+ .getObjectByType(
+ resourceSet
+ .getResource(
+ URI
+ .createURI("platform:/plugin/org.eclipse.uml2.uml/model/UML30_2_UML.ecore2xml"), //$NON-NLS-1$
+ true).getContents(),
+ Ecore2XMLPackage.Literals.XML_MAP));
+
+ ExtendedMetaData extendedMetaData = new UML302UMLExtendedMetaData(
+ ePackageRegistry, ecore2xmlRegistry);
+
+ defaultLoadOptions.put(XMLResource.OPTION_EXTENDED_META_DATA,
+ extendedMetaData);
+ defaultLoadOptions.put(XMLResource.OPTION_LAX_FEATURE_PROCESSING,
+ Boolean.FALSE);
+ defaultLoadOptions.put(XMLResource.OPTION_RESOURCE_HANDLER,
+ new UML302UMLResourceHandler());
+
+ return resource;
+ }
+
}

Back to the top