diff --git a/bundles/org.eclipse.sirius.emfjson/src/main/java/org/eclipse/sirius/emfjson/utils/GsonEObjectDeserializer.java b/bundles/org.eclipse.sirius.emfjson/src/main/java/org/eclipse/sirius/emfjson/utils/GsonEObjectDeserializer.java index 8a3e413..81585a3 100644 --- a/bundles/org.eclipse.sirius.emfjson/src/main/java/org/eclipse/sirius/emfjson/utils/GsonEObjectDeserializer.java +++ b/bundles/org.eclipse.sirius.emfjson/src/main/java/org/eclipse/sirius/emfjson/utils/GsonEObjectDeserializer.java @@ -67,6 +67,8 @@ */ public class GsonEObjectDeserializer implements JsonDeserializer> { + private static final char SCHEME_SEPARATOR = ':'; + /** * The JsonHelper. */ @@ -540,15 +542,13 @@ private void deserializeSingleNonContainmentEReference(EReference eReference, Js this.helper.setValue(eObject, eReference, object); } } else { - String resourceURIPath = id.substring(0, index); // The URI of the resource where I can find - // the EObject - EPackage ePackage = this.getPackageForURI(resourceURIPath); // return an EPackage only if the - // URI represent an EPackage - Resource packageResource = null; + String resourceURIPath = id.substring(0, index); EObject object = null; - if (ePackage != null) { - packageResource = ePackage.eResource(); - object = packageResource.getEObject(fragmentEMF); + if (resourceURIPath.indexOf(SCHEME_SEPARATOR) != -1) { + EPackage ePackage = this.getPackageForURI(resourceURIPath); + if (ePackage != null) { + object = ePackage.eResource().getEObject(fragmentEMF); + } } else { object = this.createProxyEObject(id, qualifiedType, eReference); } @@ -605,7 +605,7 @@ private EObject createProxyEObject(String id, String qualifiedType, EReference e /** * Resolves a type from a qualified name (e.g. "flow:System") into the corresponding EClass (or null) using the * resource set's package registry. - * + * * @param qualifiedType * the qualified name of the type to resolve. * @return the corresponding EClass, or null. @@ -701,12 +701,12 @@ private void deserializeMultipleNonContainmentEReference(EReference eReference, } } else { String resourceURIPath = id.substring(0, index); - EPackage ePackage = this.getPackageForURI(resourceURIPath); - Resource packageResource = null; EObject object = null; - if (ePackage != null) { - packageResource = ePackage.eResource(); - object = packageResource.getEObject(fragmentEMF); + if (resourceURIPath.indexOf(SCHEME_SEPARATOR) != -1) { + EPackage ePackage = this.getPackageForURI(resourceURIPath); + if (ePackage != null) { + object = ePackage.eResource().getEObject(fragmentEMF); + } } else { object = this.createProxyEObject(id, qualifiedType, eReference); }