Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Merks2022-07-23 06:02:23 +0000
committerEd Merks2022-07-23 06:02:23 +0000
commite7eb7dd39af697a694689ff10a6118925c82ae90 (patch)
treeb63421e3208d8fac2546343ad9b36c46bf5e1449
parent4412cf448732fd773de4d782641c40cdd4c2e20a (diff)
downloadorg.eclipse.emf-e7eb7dd39af697a694689ff10a6118925c82ae90.tar.gz
org.eclipse.emf-e7eb7dd39af697a694689ff10a6118925c82ae90.tar.xz
org.eclipse.emf-e7eb7dd39af697a694689ff10a6118925c82ae90.zip
[580437] The extended metadata instance used by content type recognition
isn't thread safe
-rw-r--r--plugins/org.eclipse.emf.ecore.xmi/src/org/eclipse/emf/ecore/xmi/impl/XMLContentHandlerImpl.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/plugins/org.eclipse.emf.ecore.xmi/src/org/eclipse/emf/ecore/xmi/impl/XMLContentHandlerImpl.java b/plugins/org.eclipse.emf.ecore.xmi/src/org/eclipse/emf/ecore/xmi/impl/XMLContentHandlerImpl.java
index 97571ad86..0d0b1d82a 100644
--- a/plugins/org.eclipse.emf.ecore.xmi/src/org/eclipse/emf/ecore/xmi/impl/XMLContentHandlerImpl.java
+++ b/plugins/org.eclipse.emf.ecore.xmi/src/org/eclipse/emf/ecore/xmi/impl/XMLContentHandlerImpl.java
@@ -19,6 +19,7 @@ import java.util.Map;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -81,7 +82,20 @@ public class XMLContentHandlerImpl extends ContentHandlerImpl
defaultLoadOptions.put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
defaultSaveOptions.put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
- ExtendedMetaData extendedMetaData = new BasicExtendedMetaData(new EPackageRegistryImpl());
+ ExtendedMetaData extendedMetaData = new BasicExtendedMetaData(new EPackageRegistryImpl())
+ {
+ @Override
+ public synchronized EStructuralFeature demandFeature(String namespace, String name, boolean isElement, boolean isReference)
+ {
+ return super.demandFeature(namespace, name, isElement, isReference);
+ }
+
+ @Override
+ public synchronized EClassifier demandType(String namespace, String name)
+ {
+ return super.demandType(namespace, name);
+ }
+ };
defaultLoadOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
defaultSaveOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);

Back to the top