[526217] Initializing model resource URIs for standalone usage.
diff --git a/plugins/org.eclipse.uml2.uml.resources/META-INF/MANIFEST.MF b/plugins/org.eclipse.uml2.uml.resources/META-INF/MANIFEST.MF
index 8908365..c7dcbb4 100644
--- a/plugins/org.eclipse.uml2.uml.resources/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.uml2.uml.resources/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.uml2.uml.resources; singleton:=true
-Bundle-Version: 5.3.0.qualifier
+Bundle-Version: 5.4.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.uml2.uml.resources/src/org/eclipse/uml2/uml/resources/util/UMLResourcesUtil.java b/plugins/org.eclipse.uml2.uml.resources/src/org/eclipse/uml2/uml/resources/util/UMLResourcesUtil.java
index 010bec2..8f7d889 100644
--- a/plugins/org.eclipse.uml2.uml.resources/src/org/eclipse/uml2/uml/resources/util/UMLResourcesUtil.java
+++ b/plugins/org.eclipse.uml2.uml.resources/src/org/eclipse/uml2/uml/resources/util/UMLResourcesUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2014 CEA, Obeo, and others.
+ * Copyright (c) 2012, 2017 CEA, Obeo, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
* Kenn Hussey (CEA) - 389542, 399544, 425846, 418466, 429352
* Mikael Barbero (Obeo) - 414572
* Christian W. Damus (CEA) - 414572, 401682
+ * Kenn Hussey - 526217
*/
package org.eclipse.uml2.uml.resources.util;
@@ -406,13 +407,20 @@
* @since 5.0
*/
public static Map<URI, URI> initURIConverterURIMap(Map<URI, URI> uriMap) {
- URI baseURI = getBaseUMLResourceURI();
- mapUMLResourceURIs(uriMap, UMLResource.METAMODELS_PATHMAP,
- baseURI.appendSegment("metamodels")); //$NON-NLS-1$
- mapUMLResourceURIs(uriMap, UMLResource.PROFILES_PATHMAP,
- baseURI.appendSegment("profiles")); //$NON-NLS-1$
- mapUMLResourceURIs(uriMap, UMLResource.LIBRARIES_PATHMAP,
- baseURI.appendSegment("libraries")); //$NON-NLS-1$
+ URI umlURI = getBaseUMLURI();
+ mapURIs(uriMap, "platform:/plugin/org.eclipse.uml2.uml/model/", //$NON-NLS-1$
+ umlURI.appendSegment("model"), "org.eclipse.uml2.uml"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ URI umlResourcesURI = getBaseUMLResourcesURI();
+ mapURIs(uriMap, UMLResource.METAMODELS_PATHMAP,
+ umlResourcesURI.appendSegment("metamodels"), //$NON-NLS-1$
+ ResourcesPlugin.PLUGIN_ID);
+ mapURIs(uriMap, UMLResource.PROFILES_PATHMAP,
+ umlResourcesURI.appendSegment("profiles"), //$NON-NLS-1$
+ ResourcesPlugin.PLUGIN_ID);
+ mapURIs(uriMap, UMLResource.LIBRARIES_PATHMAP,
+ umlResourcesURI.appendSegment("libraries"), //$NON-NLS-1$
+ ResourcesPlugin.PLUGIN_ID);
return uriMap;
}
@@ -444,7 +452,31 @@
return ePackageNsURIToProfileLocationMap;
}
- private static URI getBaseUMLResourceURI() {
+ private static URI getBaseUMLURI() {
+ URL resultURL = UMLUtil.class.getClassLoader()
+ .getResource(String.format("models/%s", "UML.ecore")); //$NON-NLS-1$ //$NON-NLS-2$
+
+ URI result;
+
+ if (resultURL != null) {
+ // remove the /model/UML.ecore segments of the resource
+ // we found
+ result = URI.createURI(resultURL.toExternalForm(), true)
+ .trimSegments(2);
+ } else {
+ // probably, we're not running with JARs, so assume the source
+ // project folder layout
+ resultURL = UMLUtil.class.getResource("UMLUtil.class"); //$NON-NLS-1$
+
+ String baseURL = resultURL.toExternalForm();
+ baseURL = baseURL.substring(0, baseURL.lastIndexOf("/bin/")); //$NON-NLS-1$
+ result = URI.createURI(baseURL, true);
+ }
+
+ return result;
+ }
+
+ private static URI getBaseUMLResourcesURI() {
URI umlMetamodel = URI.createURI(UMLResource.UML_METAMODEL_URI);
URL resultURL = UMLResourcesUtil.class.getClassLoader().getResource(
String.format("metamodels/%s", umlMetamodel.lastSegment())); //$NON-NLS-1$
@@ -470,8 +502,8 @@
return result;
}
- private static void mapUMLResourceURIs(Map<URI, URI> uriMap, String uri,
- URI location) {
+ private static void mapURIs(Map<URI, URI> uriMap, String uri, URI location,
+ String pluginID) {
URI prefix = URI.createURI(uri);
@@ -490,7 +522,7 @@
// and platform URIs, too
String folder = location.segment(location.segmentCount() - 2);
String platformURI = String.format("%s/%s/", //$NON-NLS-1$
- ResourcesPlugin.PLUGIN_ID, folder);
+ pluginID, folder);
uriMap.put(URI.createPlatformPluginURI(platformURI, true), location);
uriMap.put(URI.createPlatformResourceURI(platformURI, true), location);
}