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
This commit is contained in:
Luca Frosini 2016-07-04 13:26:54 +00:00
parent 26ac73ac91
commit 2eeb056a59
1 changed files with 28 additions and 13 deletions

View File

@ -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);