[544187] Instrument to confirm that global registries are not modified
when Eclipse is running
diff --git a/plugins/org.eclipse.ocl.pivot/.settings/.api_filters b/plugins/org.eclipse.ocl.pivot/.settings/.api_filters
index d2f2294..34a15e7 100644
--- a/plugins/org.eclipse.ocl.pivot/.settings/.api_filters
+++ b/plugins/org.eclipse.ocl.pivot/.settings/.api_filters
@@ -21127,6 +21127,12 @@
</filter>
</resource>
<resource path="src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java" type="org.eclipse.ocl.pivot.internal.resource.StandaloneProjectMap">
+ <filter id="336658481">
+ <message_arguments>
+ <message_argument value="org.eclipse.ocl.pivot.internal.resource.StandaloneProjectMap"/>
+ <message_argument value="TEST_MAY_INITIALIZE_GLOBAL_FACILITIES"/>
+ </message_arguments>
+ </filter>
<filter comment="Bug 512402 workaround" id="576725006">
<message_arguments>
<message_argument value="ProjectManager"/>
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ProjectMap.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ProjectMap.java
index eb2f833..ada3088 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ProjectMap.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ProjectMap.java
@@ -186,6 +186,12 @@
}
@Override
+ public void initializeResourceSet(@Nullable ResourceSet resourceSet) {
+ assert (resourceSet != null) || !EMFPlugin.IS_ECLIPSE_RUNNING; // Diagnosing for Bug 544187.
+ super.initializeResourceSet(resourceSet);
+ }
+
+ @Override
public synchronized void initializeURIMap(@Nullable ResourceSet resourceSet) {
super.initializeURIMap(resourceSet);
if (EMFPlugin.IS_ECLIPSE_RUNNING) {
@@ -289,6 +295,7 @@
boolean isOpen = project.isOpen();
if (wasOpen) {
if (!isOpen) {
+ @SuppressWarnings("unused")
IProjectDescriptor projectDescriptor = projectDescriptors.remove(projectName);
// projectDescriptor.dispose();
System.out.println(NameUtil.debugSimpleName(this) + " closing " + projectName);
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java
index 0ed30d3..5889981 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java
@@ -229,6 +229,15 @@
public static final @NonNull TracingOption PROJECT_MAP_INSTALL = new TracingOption(PLUGIN_ID, "projectMap/install");
public static final @NonNull TracingOption PROJECT_MAP_RESOLVE = new TracingOption(PLUGIN_ID, "projectMap/resolve");
+ /**
+ * Test flag that normally conforms that no attempt is made to intrerfere with global registries
+ * when Eclipse is running. IT is automatically false when running standalone. It may be set false for testing.
+ * See Bug 544187.
+ *
+ * @since 1.7
+ */
+ public static boolean TEST_MAY_INITIALIZE_GLOBAL_FACILITIES = !EMFPlugin.IS_ECLIPSE_RUNNING;
+
{
// PROJECT_MAP_ADD_EPACKAGE.setState(true);
// PROJECT_MAP_ADD_GEN_MODEL.setState(true);
@@ -2268,6 +2277,7 @@
* {@link org.eclipse.emf.ecore.EPackage.Registry#INSTANCE} if resourceSet is null.
*/
public static EPackage.@NonNull Registry getPackageRegistry(@Nullable ResourceSet resourceSet) {
+ assert (resourceSet != null) || TEST_MAY_INITIALIZE_GLOBAL_FACILITIES;
if (resourceSet == null) {
@SuppressWarnings("null") EPackage.@NonNull Registry globalRegistry = EPackage.Registry.INSTANCE;
return globalRegistry;
@@ -2282,6 +2292,7 @@
* {@link org.eclipse.emf.ecore.resource.Resource.Factory.Registry#INSTANCE} if resourceSet is null.
*/
public static Resource.Factory.Registry getResourceFactoryRegistry(@Nullable ResourceSet resourceSet) {
+ assert (resourceSet != null) || TEST_MAY_INITIALIZE_GLOBAL_FACILITIES;
return resourceSet != null
? resourceSet.getResourceFactoryRegistry()
: Resource.Factory.Registry.INSTANCE;
@@ -2293,6 +2304,7 @@
*/
@SuppressWarnings("null")
public static @NonNull URIConverter getURIConverter(@Nullable ResourceSet resourceSet) {
+ assert (resourceSet != null) || TEST_MAY_INITIALIZE_GLOBAL_FACILITIES;
return resourceSet != null ? resourceSet.getURIConverter() : URIConverter.INSTANCE;
}
@@ -2302,6 +2314,7 @@
*/
@SuppressWarnings("null")
public static @NonNull Map<URI, URI> getURIMap(@Nullable ResourceSet resourceSet) {
+ assert (resourceSet != null) || TEST_MAY_INITIALIZE_GLOBAL_FACILITIES;
return resourceSet != null ? resourceSet.getURIConverter().getURIMap() : URIConverter.URI_MAP;
}
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/ecore/ProjectMapTest.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/ecore/ProjectMapTest.java
index 6c55e80..de2d1a7 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/ecore/ProjectMapTest.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/ecore/ProjectMapTest.java
@@ -11,12 +11,14 @@
package org.eclipse.ocl.examples.test.ecore;
+import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.ocl.examples.xtext.tests.TestCaseAppender;
import org.eclipse.ocl.expressions.ExpressionsPackage;
import org.eclipse.ocl.pivot.PivotPackage;
+import org.eclipse.ocl.pivot.internal.resource.StandaloneProjectMap;
/**
*/
@@ -34,6 +36,13 @@
// StandaloneProjectMap.PROJECT_MAP_RESOLVE.setState(true);
super.setUp();
TestCaseAppender.INSTANCE.install();
+ StandaloneProjectMap.TEST_MAY_INITIALIZE_GLOBAL_FACILITIES = true;
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ StandaloneProjectMap.TEST_MAY_INITIALIZE_GLOBAL_FACILITIES = !EMFPlugin.IS_ECLIPSE_RUNNING;
+ super.tearDown();
}
public void testProjectMap_Ecore_LoadBoth() { // Almost certainly a workspace project; always a project on Hudson
@@ -41,120 +50,120 @@
String modelPath = project + "/model/Ecore.ecore";
doTestProjectMap_LoadBoth(EcorePackage.eINSTANCE, project, modelPath, "/");
}
-
+
public void testProjectMap_Ecore_LoadDefault() { // Almost certainly a workspace project; always a project on Hudson
@SuppressWarnings("null")@NonNull String project = EcorePackage.class.getPackage().getName();
String modelPath = project + "/model/Ecore.ecore";
doTestProjectMap_LoadDefault(EcorePackage.eINSTANCE, project, modelPath, "/", true);
}
-
+
public void testProjectMap_Ecore_LoadEPackage() { // Almost certainly a workspace project; always a project on Hudson
@SuppressWarnings("null")@NonNull String project = EcorePackage.class.getPackage().getName();
String modelPath = project + "/model/Ecore.ecore";
doTestProjectMap_LoadEPackage(EcorePackage.eINSTANCE, project, modelPath, "/");
}
-
+
public void testProjectMap_Ecore_LoadFirst() { // Almost certainly a workspace project; always a project on Hudson
@SuppressWarnings("null")@NonNull String project = EcorePackage.class.getPackage().getName();
String modelPath = project + "/model/Ecore.ecore";
doTestProjectMap_LoadFirst(EcorePackage.eINSTANCE, project, modelPath, "/", true);
}
-
+
public void testProjectMap_Ecore_LoadModel() { // Almost certainly a workspace project; always a project on Hudson
@SuppressWarnings("null")@NonNull String project = EcorePackage.class.getPackage().getName();
String modelPath = project + "/model/Ecore.ecore";
doTestProjectMap_LoadModel(EcorePackage.eINSTANCE, project, modelPath, "/", true);
}
-
+
public void testProjectMap_JavaVMTypes_LoadBoth() { // Almost certainly a workspace project; always a project on Hudson
EPackage.Registry.INSTANCE.put(org.eclipse.xtext.common.types.TypesPackage.eNS_URI, org.eclipse.xtext.common.types.TypesPackage.eINSTANCE);
String project = "org.eclipse.xtext.common.types";
String modelPath = project + "/model/JavaVMTypes.ecore";
doTestProjectMap_LoadBoth(org.eclipse.xtext.common.types.TypesPackage.eINSTANCE, project, modelPath, "/");
}
-
+
public void testProjectMap_JavaVMTypes_LoadDefault() { // Almost certainly a workspace project; always a project on Hudson
EPackage.Registry.INSTANCE.put(org.eclipse.xtext.common.types.TypesPackage.eNS_URI, org.eclipse.xtext.common.types.TypesPackage.eINSTANCE);
String project = "org.eclipse.xtext.common.types";
String modelPath = project + "/model/JavaVMTypes.ecore";
doTestProjectMap_LoadDefault(org.eclipse.xtext.common.types.TypesPackage.eINSTANCE, project, modelPath, "/", false);
}
-
+
public void testProjectMap_JavaVMTypes_LoadEPackage() { // Almost certainly a workspace project; always a project on Hudson
EPackage.Registry.INSTANCE.put(org.eclipse.xtext.common.types.TypesPackage.eNS_URI, org.eclipse.xtext.common.types.TypesPackage.eINSTANCE);
String project = "org.eclipse.xtext.common.types";
String modelPath = project + "/model/JavaVMTypes.ecore";
doTestProjectMap_LoadEPackage(org.eclipse.xtext.common.types.TypesPackage.eINSTANCE, project, modelPath, "/");
}
-
+
public void testProjectMap_JavaVMTypes_LoadFirst() { // Almost certainly a workspace project; always a project on Hudson
EPackage.Registry.INSTANCE.put(org.eclipse.xtext.common.types.TypesPackage.eNS_URI, org.eclipse.xtext.common.types.TypesPackage.eINSTANCE);
String project = "org.eclipse.xtext.common.types";
String modelPath = project + "/model/JavaVMTypes.ecore";
doTestProjectMap_LoadFirst(org.eclipse.xtext.common.types.TypesPackage.eINSTANCE, project, modelPath, "/", false);
}
-
+
public void testProjectMap_JavaVMTypes_LoadModel() { // Almost certainly a workspace project; always a project on Hudson
EPackage.Registry.INSTANCE.put(org.eclipse.xtext.common.types.TypesPackage.eNS_URI, org.eclipse.xtext.common.types.TypesPackage.eINSTANCE);
String project = "org.eclipse.xtext.common.types";
String modelPath = project + "/model/JavaVMTypes.ecore";
doTestProjectMap_LoadModel(org.eclipse.xtext.common.types.TypesPackage.eINSTANCE, project, modelPath, "/", false);
}
-
+
public void testProjectMap_Pivot_LoadBoth() { // Almost certainly a workspace project; always a project on Hudson
String project = "org.eclipse.ocl.pivot";
String modelPath = project + "/model/Pivot.ecore";
doTestProjectMap_LoadBoth(PivotPackage.eINSTANCE, project, modelPath, "/");
}
-
+
public void testProjectMap_Pivot_LoadDefault() { // Almost certainly a workspace project; always a project on Hudson
String project = "org.eclipse.ocl.pivot";
String modelPath = project + "/model/Pivot.ecore";
doTestProjectMap_LoadDefault(PivotPackage.eINSTANCE, project, modelPath, "/", false);
}
-
+
public void testProjectMap_Pivot_LoadEPackage() { // Almost certainly a workspace project; always a project on Hudson
String project = "org.eclipse.ocl.pivot";
String modelPath = project + "/model/Pivot.ecore";
doTestProjectMap_LoadEPackage(PivotPackage.eINSTANCE, project, modelPath, "/");
}
-
+
public void testProjectMap_Pivot_LoadFirst() { // Almost certainly a workspace project; always a project on Hudson
String project = "org.eclipse.ocl.pivot";
String modelPath = project + "/model/Pivot.ecore";
doTestProjectMap_LoadFirst(PivotPackage.eINSTANCE, project, modelPath, "/", false);
}
-
+
public void testProjectMap_Pivot_LoadModel() { // Almost certainly a workspace project; always a project on Hudson
String project = "org.eclipse.ocl.pivot";
String modelPath = project + "/model/Pivot.ecore";
doTestProjectMap_LoadModel(PivotPackage.eINSTANCE, project, modelPath, "/", false);
}
-
+
public void testProjectMap_OCL_LoadBoth() { // Almost certainly a workspace project; always a project on Hudson
@SuppressWarnings("null")@NonNull String project = org.eclipse.ocl.OCL.class.getPackage().getName();
String modelPath = project + "/model/OCL.ecore";
doTestProjectMap_LoadBoth(ExpressionsPackage.eINSTANCE, project, modelPath, "//expressions");
}
-
+
public void testProjectMap_OCL_LoadDefault() { // Almost certainly a workspace project; always a project on Hudson
@SuppressWarnings("null")@NonNull String project = org.eclipse.ocl.OCL.class.getPackage().getName();
String modelPath = project + "/model/OCL.ecore";
doTestProjectMap_LoadDefault(ExpressionsPackage.eINSTANCE, project, modelPath, "//expressions", false);
}
-
+
public void testProjectMap_OCL_LoadEPackage() { // Almost certainly a workspace project; always a project on Hudson
@SuppressWarnings("null")@NonNull String project = org.eclipse.ocl.OCL.class.getPackage().getName();
String modelPath = project + "/model/OCL.ecore";
doTestProjectMap_LoadEPackage(ExpressionsPackage.eINSTANCE, project, modelPath, "//expressions");
}
-
+
public void testProjectMap_OCL_LoadFirst() { // Almost certainly a workspace project; always a project on Hudson
@SuppressWarnings("null")@NonNull String project = org.eclipse.ocl.OCL.class.getPackage().getName();
String modelPath = project + "/model/OCL.ecore";
doTestProjectMap_LoadFirst(ExpressionsPackage.eINSTANCE, project, modelPath, "//expressions", false);
}
-
+
public void testProjectMap_OCL_LoadModel() { // Almost certainly a workspace project; always a project on Hudson
@SuppressWarnings("null")@NonNull String project = org.eclipse.ocl.OCL.class.getPackage().getName();
String modelPath = project + "/model/OCL.ecore";