package org.gcube.informationsystem.model.discovery; import java.util.List; import java.util.ServiceLoader; import org.gcube.informationsystem.base.reference.ISManageable; import org.gcube.informationsystem.base.reference.entities.BaseEntity; import org.gcube.informationsystem.base.reference.properties.BaseProperty; import org.gcube.informationsystem.base.reference.relations.BaseRelation; import org.gcube.informationsystem.types.TypeBinder; import org.gcube.informationsystem.types.reference.TypeDefinition; import org.gcube.informationsystem.types.reference.entities.EntityTypeDefinition; import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; import org.gcube.informationsystem.types.reference.properties.PropertyTypeDefinition; import org.gcube.informationsystem.types.reference.relations.RelationTypeDefinition; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.informationsystem.utils.discovery.ISMDiscovery; import org.gcube.informationsystem.utils.discovery.RegistrationProvider; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ISMDiscoveryTest { private static Logger logger = LoggerFactory.getLogger(ISMDiscovery.class); private void addDiscoveredModel(ISMDiscovery ismDiscovery) { ServiceLoader regsitrationProviders = ServiceLoader .load(RegistrationProvider.class); for(RegistrationProvider registrationProvider : regsitrationProviders) { List packages = registrationProvider.getPackagesToRegister(); for(Package p : packages) { ismDiscovery.addPackage(p); } } } @Test public void testPropertyDiscovery() throws Exception { ISMDiscovery propertyDiscovery = new ISMDiscovery(BaseProperty.class); addDiscoveredModel(propertyDiscovery); propertyDiscovery.discover(); for(Class propertyClass : propertyDiscovery.getDiscovered()) { String json = TypeBinder.serializeType(propertyClass); logger.info("{}", json); TypeDefinition typeDefinition = TypeBinder.deserializeTypeDefinition(json); logger.info("{}", ISMapper.marshal(typeDefinition)); } } @Test public void testEntityTypeDefinitionSerialization() throws Exception { logger.info("{}", TypeBinder.serializeType(EntityTypeDefinition.class)); } @Test public void testDefinitionSerialization() throws Exception { logger.info("{}", TypeBinder.serializeType(TypeDefinition.class)); logger.info("{}", TypeBinder.serializeType(EntityTypeDefinition.class)); logger.info("{}", TypeBinder.serializeType(RelationTypeDefinition.class)); logger.info("{}", TypeBinder.serializeType(PropertyTypeDefinition.class)); logger.info("{}", TypeBinder.serializeType(PropertyDefinition.class)); } @Test public void testEntityDiscovery() throws Exception { ISMDiscovery entityDiscovery = new ISMDiscovery<>(BaseEntity.class); addDiscoveredModel(entityDiscovery); entityDiscovery.discover(); for(Class entity : entityDiscovery.getDiscovered()) { logger.info("{}", TypeBinder.serializeType(entity)); } } @Test public void testRelationDiscovery() throws Exception { @SuppressWarnings("rawtypes") ISMDiscovery relationDiscovery = new ISMDiscovery<>(BaseRelation.class); addDiscoveredModel(relationDiscovery); relationDiscovery.discover(); for(@SuppressWarnings("rawtypes") Class relation : relationDiscovery.getDiscovered()) { logger.info("{}", TypeBinder.serializeType(relation)); } } }