diff options
author | Pierre-Charles David | 2014-05-26 12:43:27 +0000 |
---|---|---|
committer | Pierre-Charles David | 2014-05-26 13:44:18 +0000 |
commit | 738edff77d36ec422c365749ab4f7faceb9e6005 (patch) | |
tree | bf7592b8df994cd98208446020ece00d8e455122 | |
parent | aeaa5f40521508eb7edb4e35d45ecd97cb17cce0 (diff) | |
download | org.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.java | 12 |
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); } } |