resource-registry-database-.../src/test/java/org/gcube/informationsystem/model/discovery/ISMDiscoveryTest.java

90 lines
3.5 KiB
Java

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<? extends ISManageable> ismDiscovery) {
ServiceLoader<? extends RegistrationProvider> regsitrationProviders = ServiceLoader
.load(RegistrationProvider.class);
for(RegistrationProvider registrationProvider : regsitrationProviders) {
List<Package> packages = registrationProvider.getPackagesToRegister();
for(Package p : packages) {
ismDiscovery.addPackage(p);
}
}
}
@Test
public void testPropertyDiscovery() throws Exception {
ISMDiscovery<BaseProperty> propertyDiscovery = new ISMDiscovery<BaseProperty>(BaseProperty.class);
addDiscoveredModel(propertyDiscovery);
propertyDiscovery.discover();
for(Class<? extends BaseProperty> 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<BaseEntity> entityDiscovery = new ISMDiscovery<>(BaseEntity.class);
addDiscoveredModel(entityDiscovery);
entityDiscovery.discover();
for(Class<? extends BaseEntity> entity : entityDiscovery.getDiscovered()) {
logger.info("{}", TypeBinder.serializeType(entity));
}
}
@Test
public void testRelationDiscovery() throws Exception {
@SuppressWarnings("rawtypes")
ISMDiscovery<BaseRelation> relationDiscovery = new ISMDiscovery<>(BaseRelation.class);
addDiscoveredModel(relationDiscovery);
relationDiscovery.discover();
for(@SuppressWarnings("rawtypes") Class<? extends BaseRelation> relation : relationDiscovery.getDiscovered()) {
logger.info("{}", TypeBinder.serializeType(relation));
}
}
}