From 2eeb056a597a13770785c0ac0828fa509c79370d Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Mon, 4 Jul 2016 13:26:54 +0000 Subject: [PATCH] Fixing TypeBinder for resource serialization git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/private/luca.frosini/information-system-model@129863 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../informationsystem/types/TypeBinder.java | 41 +++++++++++++------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/types/TypeBinder.java b/src/main/java/org/gcube/informationsystem/types/TypeBinder.java index 95ef8bd..0f5d8ec 100644 --- a/src/main/java/org/gcube/informationsystem/types/TypeBinder.java +++ b/src/main/java/org/gcube/informationsystem/types/TypeBinder.java @@ -11,6 +11,9 @@ import org.gcube.informationsystem.model.embedded.Embedded; import org.gcube.informationsystem.model.entity.Entity; import org.gcube.informationsystem.model.entity.Facet; import org.gcube.informationsystem.model.entity.Resource; +import org.gcube.informationsystem.model.relation.ConsistOf; +import org.gcube.informationsystem.model.relation.RelatedTo; +import org.gcube.informationsystem.model.relation.Relation; import org.gcube.informationsystem.types.Type.OType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,20 +56,32 @@ public class TypeBinder { typeDefinition.abstractType = true; } - - if(Resource.class.isAssignableFrom(type)){ - typeDefinition.superclasses = retrieveSuperClasses(type, Resource.class, Entity.class.getSimpleName()); - }else{ - typeDefinition.properties = retrieveListOfProperties(type); - - if(Facet.class.isAssignableFrom(type)){ - typeDefinition.superclasses = retrieveSuperClasses(type, Facet.class, Entity.class.getSimpleName()); - }else if(Embedded.class.isAssignableFrom(type)){ - typeDefinition.superclasses = retrieveSuperClasses(type, Embedded.class, null); - } else if(Entity.class.isAssignableFrom(type)){ - typeDefinition.superclasses = retrieveSuperClasses(type, Entity.class, "V"); + if(Entity.class.isAssignableFrom(type)) { + if(Resource.class.isAssignableFrom(type)){ + typeDefinition.superclasses = retrieveSuperClasses(type, Resource.class, Entity.class.getSimpleName()); + }else{ + if(Facet.class.isAssignableFrom(type)){ + typeDefinition.superclasses = retrieveSuperClasses(type, Facet.class, Entity.class.getSimpleName()); + } else { + typeDefinition.superclasses = retrieveSuperClasses(type, Entity.class, "V"); + } } - + } else if(Relation.class.isAssignableFrom(type)){ + if(RelatedTo.class.isAssignableFrom(type)){ + typeDefinition.superclasses = retrieveSuperClasses(type, RelatedTo.class, Relation.class.getSimpleName()); + } else if(ConsistOf.class.isAssignableFrom(type)) { + typeDefinition.superclasses = retrieveSuperClasses(type, ConsistOf.class, Relation.class.getSimpleName()); + } else { + typeDefinition.superclasses = retrieveSuperClasses(type, Relation.class, "E"); + } + } else if(Embedded.class.isAssignableFrom(type)){ + typeDefinition.superclasses = retrieveSuperClasses(type, Embedded.class, null); + } else { + throw new RuntimeException("Serialization required"); + } + + if(!Resource.class.isAssignableFrom(type)){ + typeDefinition.properties = retrieveListOfProperties(type); } logger.trace("{} TypeDefinition {} ", type, typeDefinition);