diff --git a/jamopp.resolution/src/main/java/tools/mdsd/jamopp/recovery/trivial/TrivialRecovery.java b/jamopp.resolution/src/main/java/tools/mdsd/jamopp/recovery/trivial/TrivialRecovery.java index fdd1d0f7..389fe326 100644 --- a/jamopp.resolution/src/main/java/tools/mdsd/jamopp/recovery/trivial/TrivialRecovery.java +++ b/jamopp.resolution/src/main/java/tools/mdsd/jamopp/recovery/trivial/TrivialRecovery.java @@ -50,6 +50,7 @@ public class TrivialRecovery { 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 artEnumConstants = new HashMap<>(); @@ -115,6 +116,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); @@ -146,6 +156,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); @@ -178,6 +189,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(); @@ -190,6 +202,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); } }