Commit 2832113a authored by Martti Käärik's avatar Martti Käärik
Browse files

Enums need Java class resource mappings + numberic enum literals were not mapped.

parent 79b61f13
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -142,6 +142,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
		// Java mappings
		Package mappingsPackage = null;
		Package javaPackage = null;
		AnnotationType mappingNameAnnot = null;
		boolean generateJavaMappings = true;
		if (preferences != null)
			generateJavaMappings = preferences.getBoolean(PropertyPage.GENERATE_JAVA_MAPPING, false);
@@ -180,8 +181,9 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
			for (PackageableElement e : theTdlPackage.getPackagedElement()) {
				if (e.eClass().equals(tdlPackage.eINSTANCE.getAnnotationType())
						&& e.getName().equals("MappingName")) {
					mappingNameAnnot = (AnnotationType) e;
					Annotation annot = tdlFactory.eINSTANCE.createAnnotation();
					annot.setKey((AnnotationType) e);
					annot.setKey(mappingNameAnnot);
					annot.setValue("Java");
					// XXX disabled due to serialization problem
					  drmTarget.getAnnotation().add(annot);
@@ -276,7 +278,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
		}

		if (generateJavaMappings && mappingsPackage!=null)
			addMappings(filename, mappingsPackage, drmTarget, javaPackage);
			addMappings(filename, mappingsPackage, drmTarget, javaPackage, mappingNameAnnot);

		ensureUniqueNames(getGeneratedPackage());
	}
@@ -630,7 +632,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
		}
	}

	public void addMappings(String filename, Package mappingsPackage, DataResourceMapping resourceMapping, Package javaPackage) {
	public void addMappings(String filename, Package mappingsPackage, DataResourceMapping resourceMapping, Package javaPackage, AnnotationType mappingNameAnnot) {
		
		CodegenConfigurator configurator = new CodegenConfigurator();
		// We create our own but the setting is required by the configurator
@@ -682,6 +684,18 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
					
					if (type instanceof EnumDataType) {
						
						DataResourceMapping eResourceMapping = tdlFactory.eINSTANCE.createDataResourceMapping();
						mappingsPackage.getPackagedElement().add(eResourceMapping);
						eResourceMapping.setName(getCleanName(name) + "_ResourceMapping");
						eResourceMapping.setResourceURI(resourceMapping.getResourceURI() + "." + codeGen.getClassname());
						ca = tdlFactory.eINSTANCE.createAnnotation();
						ca.setKey(classAnnotation);
						eResourceMapping.getAnnotation().add(ca);
						Annotation mna = tdlFactory.eINSTANCE.createAnnotation();
						mna.setKey(mappingNameAnnot);
						mna.setValue("Java");
						eResourceMapping.getAnnotation().add(mna);
						
						List<Map<String, String>> enumVars = (List<Map<String, String>>) codeGen.getAllowableValues().get("enumVars");
						for (Map<String, String> enumVar : enumVars) {
							String javaName = enumVar.get("name");
@@ -689,6 +703,8 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
							// Wrapped in ""
							if (modelName.startsWith("\""))
								modelName = modelName.substring(1, modelName.length() - 1);
							else
								modelName = name + "_" + modelName;
							
							SimpleDataInstance literal = null;
							for (SimpleDataInstance l: ((EnumDataType) type).getValue()) {
@@ -705,7 +721,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
							lMapping.setName(getCleanName(name) + "_" + getCleanName(modelName) + "_Mapping");
							lMapping.setMappableDataElement(literal);
							lMapping.setElementURI(javaName);
							lMapping.setDataResourceMapping(resourceMapping);
							lMapping.setDataResourceMapping(eResourceMapping);
						}
						
					} else  if (type instanceof StructuredDataType) {