diff --git a/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java b/bundles/jamopp.resolution/src/jamopp/recovery/trivial/TrivialRecovery.java index 494de37d..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); @@ -138,6 +151,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 +175,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(); @@ -169,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); } }