From a8e1b0da6eaa37174ef5e2188796c15ab782df18 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Wed, 27 Jan 2021 11:57:16 +0100 Subject: [PATCH] Fixed getType --- .../informationsystem/types/TypeMapper.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/types/TypeMapper.java b/src/main/java/org/gcube/informationsystem/types/TypeMapper.java index 4d17f92..6de6b3c 100644 --- a/src/main/java/org/gcube/informationsystem/types/TypeMapper.java +++ b/src/main/java/org/gcube/informationsystem/types/TypeMapper.java @@ -94,11 +94,15 @@ public class TypeMapper { public static String getType(Class clz){ String classSimpleName = clz.getSimpleName(); String name = null; - if(clz.isAnnotationPresent(JsonTypeName.class)) { - JsonTypeName jsonTypeName = clz.getAnnotation(JsonTypeName.class); - name = jsonTypeName.value(); - if(name==null || name.compareTo("")!=0) { - throw new RuntimeException("Invalid annotation @JsonTypeName for type " + classSimpleName); + + if(!clz.isInterface()) { + if(clz.isAnnotationPresent(JsonTypeName.class)) { + JsonTypeName jsonTypeName = clz.getAnnotation(JsonTypeName.class); + name = jsonTypeName.value(); + if(name==null || name.compareTo("")==0) { + throw new RuntimeException("Invalid annotation @JsonTypeName for type " + classSimpleName); + } + return name; } } @@ -106,9 +110,11 @@ public class TypeMapper { TypeMetadata typeMetadata = clz.getAnnotation(TypeMetadata.class); String typeMetadataName = typeMetadata.name(); if(typeMetadataName!=null && typeMetadataName.compareTo("")!=0) { + /* if(name!=null && typeMetadataName.compareTo(name)!=0) { throw new RuntimeException("Name in annotation @TypeMetadata differ from annotation in @JsonTypeName for type " + classSimpleName + ". Please be coerent"); } + */ return typeMetadataName; }else { throw new RuntimeException("Invalid Name in annotation @TypeMetadata for type " + classSimpleName); @@ -116,6 +122,7 @@ public class TypeMapper { }else { throw new RuntimeException("You must provide @TypeMetadata for " + classSimpleName); } + } public static String getTypeDescription(Class clz){