From 524160c28dde83226b9f31a35e63c59c3d18d339 Mon Sep 17 00:00:00 2001 From: Axel RICHARD Date: Wed, 25 Sep 2024 16:56:35 +0200 Subject: [PATCH] [50] Fix potential NPE in GsonEObjectDeserializer#resolveType Bug: https://github.com/eclipse-sirius/sirius-emf-json/issues/50 Signed-off-by: Axel RICHARD --- .../emfjson/utils/GsonEObjectDeserializer.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) 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..de3d2e4 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 @@ -253,7 +253,7 @@ public List deserialize(JsonElement jsonElement, Type type, JsonDeseria EPackage ePackage = this.getEPackage(uri); if (ePackage != null) { - this.resourceSet.getPackageRegistry().put(ePackage.getNsURI(), ePackage); + this.packageRegistry.put(ePackage.getNsURI(), ePackage); } } } @@ -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. @@ -616,7 +616,7 @@ private EClass resolveType(String qualifiedType) { if (splitType.length == 2) { String packageName = splitType[0]; String eClassName = splitType[1]; - Optional packageOpt = this.resourceSet.getPackageRegistry().values().stream() + Optional packageOpt = this.packageRegistry.values().stream() .filter(EPackage.class::isInstance) .map(EPackage.class::cast) .filter(pkg -> pkg.getName().equals(packageName)) @@ -864,7 +864,7 @@ private void deserializeMultipleContainmentEReference(EReference eReference, Jso JsonObject properties = jsonObject.getAsJsonObject(IGsonConstants.DATA); eReferenceValue = this.loadReferences(EcorePackage.Literals.EPACKAGE, properties); EPackage ePackage = (EPackage) eReferenceValue; - this.resourceSet.getPackageRegistry().put(ePackage.getNsURI(), ePackage); + this.packageRegistry.put(ePackage.getNsURI(), ePackage); } else { eReferenceValue = this.loadObject(jsonObject, false); } @@ -1086,10 +1086,7 @@ private EClassifier getEClass(JsonObject object, JsonElement eClassJsonElement) String nsUri = this.prefixToNsURi.get(nsPrefix); - EPackage ePackage = null; - if (this.resourceSet != null) { - ePackage = this.resourceSet.getPackageRegistry().getEPackage(nsUri); - } + EPackage ePackage = this.packageRegistry.getEPackage(nsUri); if (ePackage == null) { ePackage = this.getPackageForURI(nsUri);