Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Charles David2014-05-26 12:43:27 +0000
committerPierre-Charles David2014-05-26 13:44:18 +0000
commit738edff77d36ec422c365749ab4f7faceb9e6005 (patch)
treebf7592b8df994cd98208446020ece00d8e455122
parentaeaa5f40521508eb7edb4e35d45ecd97cb17cce0 (diff)
downloadorg.eclipse.sirius-738edff77d36ec422c365749ab4f7faceb9e6005.tar.gz
org.eclipse.sirius-738edff77d36ec422c365749ab4f7faceb9e6005.tar.xz
org.eclipse.sirius-738edff77d36ec422c365749ab4f7faceb9e6005.zip
[435774] Avoid side-effects on the global package registry
DynamicAcceleoModule.initializeResourceSet() used to call directly AcceleoPackageRegistry.put(), which delegates to the global EMF package registry if the package's nsURI is not explicitly registered as dynamic. When this happens, the global EMF registry is corrupted. Use AcceleoPackageRegistry.registerEcorePackage() instead, which sets things up so that we avoid changing the global state. Bug: 435774 Change-Id: I281cbc9736cc564ca07568a74c128cbee8e75615 Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.common.acceleo.mtl/src/org/eclipse/sirius/common/acceleo/mtl/business/internal/interpreter/DynamicAcceleoModule.java12
1 files changed, 5 insertions, 7 deletions
diff --git a/plugins/org.eclipse.sirius.common.acceleo.mtl/src/org/eclipse/sirius/common/acceleo/mtl/business/internal/interpreter/DynamicAcceleoModule.java b/plugins/org.eclipse.sirius.common.acceleo.mtl/src/org/eclipse/sirius/common/acceleo/mtl/business/internal/interpreter/DynamicAcceleoModule.java
index 345ad12547..1ef1fcadbe 100644
--- a/plugins/org.eclipse.sirius.common.acceleo.mtl/src/org/eclipse/sirius/common/acceleo/mtl/business/internal/interpreter/DynamicAcceleoModule.java
+++ b/plugins/org.eclipse.sirius.common.acceleo.mtl/src/org/eclipse/sirius/common/acceleo/mtl/business/internal/interpreter/DynamicAcceleoModule.java
@@ -10,10 +10,6 @@
*****************************************************************************************/
package org.eclipse.sirius.common.acceleo.mtl.business.internal.interpreter;
-import com.google.common.base.Objects;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
import java.math.BigDecimal;
import java.text.MessageFormat;
import java.util.Collection;
@@ -29,7 +25,6 @@ import java.util.regex.Pattern;
import org.eclipse.acceleo.common.IAcceleoConstants;
import org.eclipse.acceleo.common.internal.utils.AcceleoPackageRegistry;
-import org.eclipse.acceleo.common.internal.utils.LazyEPackageDescriptor;
import org.eclipse.acceleo.common.interpreter.CompilationResult;
import org.eclipse.acceleo.common.interpreter.EvaluationResult;
import org.eclipse.acceleo.engine.AcceleoEngineMessages;
@@ -62,6 +57,10 @@ import org.eclipse.ocl.util.Bag;
import org.eclipse.sirius.common.acceleo.mtl.AcceleoMTLInterpreterPlugin;
import org.eclipse.sirius.ext.base.cache.LRUCache;
+import com.google.common.base.Objects;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
/**
* This class has been mostly copy/pasted from
* org.eclipse.acceleo.internal.ide.ui.interpreter.AcceleoSourceViewer.
@@ -768,8 +767,7 @@ public class DynamicAcceleoModule {
resourceSet = new ResourceSetImpl();
resourceSet.setPackageRegistry(AcceleoPackageRegistry.INSTANCE);
for (EPackage pack : additionalEPackages) {
- LazyEPackageDescriptor lazyEPackageDescriptor = LazyEPackageDescriptor.create(pack, AcceleoPackageRegistry.INSTANCE);
- resourceSet.getPackageRegistry().put(pack.getNsURI(), lazyEPackageDescriptor);
+ AcceleoPackageRegistry.INSTANCE.registerEcorePackage(pack);
}
}

Back to the top