From fb760776793e9f09b43edf77a7974a8117b9fa07 Mon Sep 17 00:00:00 2001 From: Martin Armbruster Date: Sun, 31 Mar 2024 21:57:03 +0200 Subject: [PATCH 1/2] During the trivial recovery, an empty name for packages and the artificial compilation unit is set. --- .../src/jamopp/recovery/trivial/TrivialRecovery.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java b/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java index 494de37d..c85d61a8 100644 --- a/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java +++ b/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java @@ -138,6 +138,7 @@ private EObject recoverActualElement(EObject obj) { return this.artPackages.get(name); } var result = ContainersFactory.eINSTANCE.createPackage(); + result.setName(""); p.getNamespaces().forEach(ns -> result.getNamespaces().add(ns)); this.artificialResource.getContents().add(result); this.artPackages.put(name, result); @@ -161,6 +162,7 @@ private void initArtificialResource() { URI.createURI("pathmap:/javaclass/ArtificialResource.java")); this.artificialCU = ContainersFactory.eINSTANCE.createCompilationUnit(); + this.artificialCU.setName(""); this.artificialResource.getContents().add(this.artificialCU); this.artificialClass = ClassifiersFactory.eINSTANCE.createClass(); From c2b7f6ef7721124acc0c5e8603bc1e4cefd67a9b Mon Sep 17 00:00:00 2001 From: Martin Armbruster Date: Wed, 3 Apr 2024 17:24:49 +0200 Subject: [PATCH 2/2] Enum constants are also recovered by the trivial recovery. --- .../recovery/trivial/TrivialRecovery.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java b/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java index c85d61a8..590a83ed 100644 --- a/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java +++ b/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java @@ -23,9 +23,11 @@ import org.eclipse.emf.ecore.util.EcoreUtil; import org.emftext.language.java.classifiers.Annotation; import org.emftext.language.java.classifiers.ClassifiersFactory; +import org.emftext.language.java.classifiers.Enumeration; import org.emftext.language.java.containers.CompilationUnit; import org.emftext.language.java.containers.ContainersFactory; import org.emftext.language.java.members.ClassMethod; +import org.emftext.language.java.members.EnumConstant; import org.emftext.language.java.members.Field; import org.emftext.language.java.members.InterfaceMethod; import org.emftext.language.java.members.MembersFactory; @@ -42,10 +44,12 @@ public class TrivialRecovery { private Resource artificialResource; private CompilationUnit artificialCU; private org.emftext.language.java.classifiers.Class artificialClass; + private Enumeration artificialEnum; private org.emftext.language.java.classifiers.Class objectClass; private HashMap artClasses = new HashMap<>(); private HashMap artAnnotations = new HashMap<>(); private HashMap artFields = new HashMap<>(); + private HashMap artConstants = new HashMap<>(); private HashMap artClassMethods = new HashMap<>(); private HashMap artInterfaceMethods = new HashMap<>(); private HashMap artPackages = new HashMap<>(); @@ -107,6 +111,15 @@ private EObject recoverActualElement(EObject obj) { this.artificialClass.getMembers().add(result); this.artFields.put(name, result); return result; + } else if (obj instanceof EnumConstant) { + if (this.artConstants.containsKey(obj)) { + return this.artConstants.get(obj); + } + var result = MembersFactory.eINSTANCE.createEnumConstant(); + result.setName(name); + this.artificialEnum.getConstants().add(result); + this.artConstants.put(name, result); + return result; } else if (obj instanceof ClassMethod) { if (this.artClassMethods.containsKey(name)) { return this.artClassMethods.get(name); @@ -171,6 +184,10 @@ private void initArtificialResource() { this.objectClass = findObjectClass(); this.artClasses.put("Object", objectClass); + + this.artificialEnum = ClassifiersFactory.eINSTANCE.createEnumeration(); + this.artificialEnum.setName("SyntheticEnum"); + this.artificialCU.getClassifiers().add(this.artificialEnum); } }