diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/DatabaseEnvironment.java b/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/DatabaseEnvironment.java index 6d357ca..8ad68a3 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/DatabaseEnvironment.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/DatabaseEnvironment.java @@ -16,11 +16,11 @@ import org.gcube.common.encryption.SymmetricKey; import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.ISConstants; import org.gcube.informationsystem.base.reference.ISManageable; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.context.security.AdminSecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.ContextSecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SchemaSecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.security.AdminSecurityContext; +import org.gcube.informationsystem.resourceregistry.security.ContextSecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SchemaSecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.types.reference.TypeDefinition; import org.gcube.informationsystem.utils.discovery.ISMDiscovery; import org.gcube.informationsystem.utils.discovery.RegistrationProvider; @@ -212,7 +212,6 @@ public class DatabaseEnvironment { List packages = new ArrayList(); - @SuppressWarnings("rawtypes") Class tdClz = TypeDefinition.class; packages.add(tdClz.getPackage()); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/SchemaActionImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/SchemaActionImpl.java index b00eb1d..0275012 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/SchemaActionImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/SchemaActionImpl.java @@ -12,8 +12,8 @@ import org.gcube.informationsystem.model.reference.relations.ConsistsOf; import org.gcube.informationsystem.model.reference.relations.IsRelatedTo; import org.gcube.informationsystem.model.reference.relations.Relation; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaAlreadyPresentException; -import org.gcube.informationsystem.resourceregistry.schema.SchemaManagement; -import org.gcube.informationsystem.resourceregistry.schema.SchemaManagementImpl; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagement; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagementImpl; import org.gcube.informationsystem.types.TypeBinder; import org.gcube.informationsystem.utils.discovery.SchemaAction; import org.slf4j.Logger; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagement.java similarity index 97% rename from src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagement.java index 2f2e014..26eea33 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagement.java @@ -1,12 +1,14 @@ -package org.gcube.informationsystem.resourceregistry.er; +package org.gcube.informationsystem.resourceregistry.instances.base; import java.io.IOException; import java.text.DateFormat; +import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -25,11 +27,12 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundExcep import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaException; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; -import org.gcube.informationsystem.resourceregistry.schema.SchemaManagementImpl; +import org.gcube.informationsystem.resourceregistry.instances.base.properties.BasePropertyManagement; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagementImpl; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.resourceregistry.utils.HeaderOrient; import org.gcube.informationsystem.resourceregistry.utils.HeaderUtility; import org.gcube.informationsystem.resourceregistry.utils.Utility; @@ -721,13 +724,9 @@ public abstract class ERManagement { switch(jsonNodeType) { case OBJECT: - return PropertyManagement.getPropertyDocument(value); + return BasePropertyManagement.getPropertyDocument(value); case ARRAY: - /* - * List/Set support is currently disabled due to OrientDB bug see https://github.com/orientechnologies/orientdb/issues/7354 - */ - /* List list = new ArrayList(); Iterator arrayElement = value.elements(); while(arrayElement.hasNext()) { @@ -738,10 +737,13 @@ public abstract class ERManagement { } } return list; - */ + + /* + * List/Set support is currently disabled due to OrientDB bug see https://github.com/orientechnologies/orientdb/issues/7354 + * throw new UnsupportedDataTypeException( "List/Set support is currently disabled due to OrientDB bug see https://github.com/orientechnologies/orientdb/issues/7354"); - + */ case BINARY: break; @@ -870,7 +872,6 @@ public abstract class ERManagement { /* * List/Set support is currently disabled due to OrientDB bug see https://github.com/orientechnologies/orientdb/issues/7354 */ - /* if(object instanceof Set) { ((OrientElement) element).setProperty(key, object, OType.EMBEDDEDSET); set = true; @@ -879,7 +880,6 @@ public abstract class ERManagement { ((OrientElement) element).setProperty(key, object, OType.EMBEDDEDLIST); set = true; } - */ if(!set) { element.setProperty(key, object); @@ -938,7 +938,7 @@ public abstract class ERManagement { if(object instanceof ODocument) { ODocument oDocument = (ODocument) object; - return PropertyManagement.getJsonNode(oDocument); + return BasePropertyManagement.getJsonNode(oDocument); } if(object instanceof Date) { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagementUtility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagementUtility.java similarity index 90% rename from src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagementUtility.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagementUtility.java index 29180f9..8a731f6 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagementUtility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagementUtility.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er; +package org.gcube.informationsystem.resourceregistry.instances.base; import java.util.UUID; @@ -12,14 +12,14 @@ import org.gcube.informationsystem.model.reference.relations.IsRelatedTo; import org.gcube.informationsystem.model.reference.relations.Relation; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; -import org.gcube.informationsystem.resourceregistry.er.entity.EntityManagement; -import org.gcube.informationsystem.resourceregistry.er.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.er.entity.ResourceManagement; -import org.gcube.informationsystem.resourceregistry.er.relation.ConsistsOfManagement; -import org.gcube.informationsystem.resourceregistry.er.relation.IsRelatedToManagement; -import org.gcube.informationsystem.resourceregistry.er.relation.RelationManagement; -import org.gcube.informationsystem.resourceregistry.schema.SchemaManagementImpl; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.EntityManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.relation.ConsistsOfManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.relation.IsRelatedToManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.relation.RelationManagement; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagementImpl; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import org.gcube.informationsystem.resourceregistry.utils.Utility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,6 +42,7 @@ public class ERManagementUtility { private static Logger logger = LoggerFactory.getLogger(EntityManagement.class); public static AccessType getBaseAccessType(String type) throws ResourceRegistryException { + OClass oClass = SchemaManagementImpl.getTypeSchema(type, null); if(oClass.isSubClassOf(Resource.NAME)) { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/entities/BaseEntityManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/entities/BaseEntityManagement.java new file mode 100644 index 0000000..bb72fc9 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/entities/BaseEntityManagement.java @@ -0,0 +1,173 @@ +package org.gcube.informationsystem.resourceregistry.instances.base.entities; + +import java.util.HashMap; +import java.util.Map; + +import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.base.reference.entities.BaseEntity; +import org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAnotherContextException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.EntityAlreadyPresentException; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.base.relations.BaseRelationManagement; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; +import org.gcube.informationsystem.resourceregistry.utils.Utility; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Element; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.impls.orient.OrientGraph; +import com.tinkerpop.blueprints.impls.orient.OrientVertex; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +public abstract class BaseEntityManagement extends ERManagement { + + /** + * Provide a cache edge-internal-id -> RelationManagement + * this avoid to recreate the relationManagement of already visited edges + */ + @SuppressWarnings("rawtypes") + protected Map relationManagements; + + protected BaseEntityManagement(AccessType accessType) { + super(accessType); + + this.ignoreKeys.add(BaseEntity.HEADER_PROPERTY); + + this.ignoreStartWithKeys.add(OrientVertex.CONNECTION_IN_PREFIX.toLowerCase()); + this.ignoreStartWithKeys.add(OrientVertex.CONNECTION_OUT_PREFIX.toLowerCase()); + this.ignoreStartWithKeys.add(OrientVertex.CONNECTION_IN_PREFIX.toUpperCase()); + this.ignoreStartWithKeys.add(OrientVertex.CONNECTION_OUT_PREFIX.toUpperCase()); + + this.relationManagements = new HashMap<>(); + + } + + protected BaseEntityManagement(AccessType accessType, SecurityContext workingContext, OrientGraph orientGraph) { + this(accessType); + this.orientGraph = orientGraph; + setWorkingContext(workingContext); + } + + @SuppressWarnings("rawtypes") + /* + * It works perfectly in case of any kind of update. In case of use from create + * the cache does not work by using the ID because until commit the edge has a + * fake id starting with - (minus) sign. This not imply any collateral effect + * but a better solution is a desiderata. + */ + protected BaseRelationManagement getBaseRelationManagement(Edge edge) throws ResourceRegistryException { + String id = edge.getId().toString(); + BaseRelationManagement relationManagement = relationManagements.get(id); + if(relationManagement == null) { + relationManagement = ERManagementUtility.getRelationManagement(getWorkingContext(), orientGraph, edge); + relationManagements.put(id, relationManagement); + } + return relationManagement; + } + + protected void addToRelationManagement(@SuppressWarnings("rawtypes") BaseRelationManagement baseRelationManagement) + throws ResourceRegistryException { + Element elem = baseRelationManagement.getElement(); + String id = elem.getId().toString(); + if(relationManagements.get(id) != null && relationManagements.get(id) != baseRelationManagement) { + StringBuilder errorMessage = new StringBuilder(); + errorMessage.append("Two different instance of "); + errorMessage.append(baseRelationManagement.getClass().getSimpleName()); + errorMessage.append(" point to the same "); + errorMessage.append(elem.getClass().getSimpleName()); + errorMessage.append(". "); + errorMessage.append(Utility.SHOULD_NOT_OCCUR_ERROR_MESSAGE); + throw new ResourceRegistryException(errorMessage.toString()); + } + relationManagements.put(id, baseRelationManagement); + } + + protected static JsonNode addRelation(JsonNode sourceResource, JsonNode relation, String arrayKey) + throws ResourceRegistryException { + ObjectMapper objectMapper = new ObjectMapper(); + ArrayNode relationArray = objectMapper.createArrayNode(); + try { + if(sourceResource.has(arrayKey)) { + relationArray = (ArrayNode) sourceResource.get(arrayKey); + } + relationArray.add(relation); + + ((ObjectNode) sourceResource).replace(arrayKey, relationArray); + } catch(Exception e) { + throw new ResourceRegistryException(e); + } + return sourceResource; + } + + protected Vertex createVertex() throws EntityAlreadyPresentException, ResourceRegistryException { + + logger.trace("Going to create {} for {} ({}) using {}", Vertex.class.getSimpleName(), accessType.getName(), + elementType, jsonNode); + + try { + + if(oClass.isAbstract()) { + String error = String.format( + "Trying to create an instance of %s of type %s which is abstract. The operation will be aborted.", + accessType.getName(), elementType); + throw new ResourceRegistryException(error); + } + + Vertex vertexEntity = orientGraph.addVertex("class:" + elementType); + + try { + if(uuid != null) { + Vertex v = getElement(); + if(v != null) { + String error = String.format("A %s with UUID %s already exist", elementType, uuid.toString()); + throw getSpecificERAlreadyPresentException(error); + } + } + + } catch(NotFoundException e) { + try { + Element el = ERManagementUtility.getAnyElementByUUID(uuid); + String error = String.format("UUID %s is already used by another %s. This is not allowed.", + uuid.toString(), + (el instanceof Vertex) ? org.gcube.informationsystem.model.reference.entities.Entity.NAME : + org.gcube.informationsystem.model.reference.relations.Relation.NAME); + throw getSpecificERAvailableInAnotherContextException(error); + + } catch(NotFoundException e1) { + // OK the UUID is not already used. + } + } catch(AvailableInAnotherContextException e) { + throw e; + } + + this.element = vertexEntity; + + if(accessType == AccessType.RESOURCE) { + // Facet and relation are created in calling method + } else { + ERManagement.updateProperties(oClass, element, jsonNode, ignoreKeys, ignoreStartWithKeys); + } + + logger.info("Created {} is {}", Vertex.class.getSimpleName(), + Utility.toJsonString((OrientVertex) element, true)); + + return element; + } catch(ResourceRegistryException e) { + throw e; + } catch(Exception e) { + logger.trace("Error while creating {} for {} ({}) using {}", Vertex.class.getSimpleName(), + accessType.getName(), elementType, jsonNode, e); + throw new ResourceRegistryException("Error Creating " + elementType + " with " + jsonNode, e.getCause()); + } + } + +} diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/PropertyManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/properties/BasePropertyManagement.java similarity index 94% rename from src/main/java/org/gcube/informationsystem/resourceregistry/er/PropertyManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/properties/BasePropertyManagement.java index 1429842..588970d 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/PropertyManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/properties/BasePropertyManagement.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er; +package org.gcube.informationsystem.resourceregistry.instances.base.properties; import java.security.Key; import java.util.HashSet; @@ -13,7 +13,8 @@ import org.gcube.informationsystem.model.reference.properties.Property; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaNotFoundException; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; -import org.gcube.informationsystem.resourceregistry.schema.SchemaManagementImpl; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagementImpl; import org.gcube.informationsystem.resourceregistry.utils.EncryptedOrient; import org.gcube.informationsystem.resourceregistry.utils.HeaderUtility; import org.slf4j.Logger; @@ -28,9 +29,9 @@ import com.orientechnologies.orient.core.record.impl.ODocument; /** * @author Luca Frosini (ISTI - CNR) */ -public class PropertyManagement { +public class BasePropertyManagement { - private static Logger logger = LoggerFactory.getLogger(PropertyManagement.class); + private static Logger logger = LoggerFactory.getLogger(BasePropertyManagement.class); public static final Set PROPERTY_IGNORE_KEYS; public static final Set PROPERTY_IGNORE_START_WITH_KEYS; @@ -55,7 +56,7 @@ public class PropertyManagement { OClass oClass = null; try { - oClass = SchemaManagementImpl.getTypeSchema(type, AccessType.PROPERTY); + oClass = SchemaManagementImpl.getTypeSchema(type, AccessType.BASE_PROPERTY); } catch(SchemaNotFoundException e) { throw e; } @@ -86,8 +87,6 @@ public class PropertyManagement { // Decrypting with Context Key (default key) String decryptedValue = EncryptedImpl.decrypt(contextEncryptedValue); - - encrypted.setDecryptedValue(decryptedValue, false); /* diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/relations/BaseRelationManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/relations/BaseRelationManagement.java new file mode 100644 index 0000000..b144c09 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/relations/BaseRelationManagement.java @@ -0,0 +1,219 @@ +package org.gcube.informationsystem.resourceregistry.instances.base.relations; + +import java.util.UUID; + +import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.base.reference.entities.BaseEntity; +import org.gcube.informationsystem.base.reference.relations.BaseRelation; +import org.gcube.informationsystem.model.reference.relations.Relation; +import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.RelationNotFoundException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaException; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.entities.BaseEntityManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; +import org.gcube.informationsystem.resourceregistry.utils.Utility; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.tinkerpop.blueprints.Direction; +import com.tinkerpop.blueprints.Edge; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.impls.orient.OrientBaseGraph; +import com.tinkerpop.blueprints.impls.orient.OrientGraph; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +public abstract class BaseRelationManagement, SEM extends BaseEntityManagement, TEM extends BaseEntityManagement, S extends BaseEntity, T extends BaseEntity> + extends ERManagement { + + protected final Class sourceEntityClass; + protected final Class targetEntityClass; + + protected SEM sourceEntityManagement; + protected TEM targetEntityManagement; + + protected BaseRelationManagement(AccessType accessType, Class sourceEntityClass, Class targetEntityClass) { + super(accessType); + + this.ignoreKeys.add(Relation.HEADER_PROPERTY); + this.ignoreKeys.add(Relation.SOURCE_PROPERTY); + this.ignoreKeys.add(Relation.TARGET_PROPERTY); + this.ignoreKeys.add(OrientBaseGraph.CONNECTION_OUT.toLowerCase()); + this.ignoreKeys.add(OrientBaseGraph.CONNECTION_IN.toLowerCase()); + this.ignoreKeys.add(OrientBaseGraph.CONNECTION_OUT.toUpperCase()); + this.ignoreKeys.add(OrientBaseGraph.CONNECTION_IN.toUpperCase()); + + this.sourceEntityClass = sourceEntityClass; + this.targetEntityClass = targetEntityClass; + + this.sourceEntityManagement = null; + this.targetEntityManagement = null; + } + + protected BaseRelationManagement(AccessType accessType, Class sourceEntityClass, Class targetEntityClass, SecurityContext workingContext, OrientGraph orientGraph) { + this(accessType, sourceEntityClass, targetEntityClass); + this.orientGraph = orientGraph; + setWorkingContext(workingContext); + } + + public SEM getSourceEntityManagement() throws ResourceRegistryException { + if(sourceEntityManagement == null) { + Vertex source = getElement().getVertex(Direction.OUT); + sourceEntityManagement = newSourceEntityManagement(); + sourceEntityManagement.setElement(source); + } + sourceEntityManagement.setReload(reload); + return sourceEntityManagement; + } + + public TEM getTargetEntityManagement() throws ResourceRegistryException { + if(targetEntityManagement == null) { + Vertex target = getElement().getVertex(Direction.IN); + targetEntityManagement = newTargetEntityManagement(); + targetEntityManagement.setElement(target); + } + targetEntityManagement.setReload(reload); + return targetEntityManagement; + } + + public void setSourceEntityManagement(SEM sourceEntityManagement) { + this.sourceEntityManagement = sourceEntityManagement; + } + + public void setTargetEntityManagement(TEM targetEntityManagement) { + this.targetEntityManagement = targetEntityManagement; + } + + @Override + public String serialize() throws ResourceRegistryException { + return serializeAsJson().toString(); + } + + @Override + public JsonNode serializeAsJson() throws ResourceRegistryException { + return serializeAsJson(true, true); + } + + public JsonNode serializeAsJson(boolean includeSource, boolean includeTarget) throws ResourceRegistryException { + JsonNode relation = serializeSelfOnly(); + + try { + if(includeSource) { + BaseEntityManagement sourceEntityManagement = getSourceEntityManagement(); + ((ObjectNode) relation).replace(Relation.SOURCE_PROPERTY, sourceEntityManagement.serializeSelfOnly()); + } + + if(includeTarget) { + BaseEntityManagement targetEntityManagement = getTargetEntityManagement(); + ((ObjectNode) relation).replace(Relation.TARGET_PROPERTY, targetEntityManagement.serializeAsJson()); + } + + } catch(ResourceRegistryException e) { + logger.error("Unable to correctly serialize {}. {}", element, Utility.SHOULD_NOT_OCCUR_ERROR_MESSAGE, e); + throw e; + } catch(Exception e) { + logger.error("Unable to correctly serialize {}. {}", element, Utility.SHOULD_NOT_OCCUR_ERROR_MESSAGE, e); + throw new ResourceRegistryException(e); + } + + return relation; + } + + @Override + protected Edge reallyCreate() throws ResourceRegistryException { + + if(sourceEntityManagement == null) { + + if(!jsonNode.has(Relation.SOURCE_PROPERTY)) { + throw new ResourceRegistryException("Error while creating relation. No source definition found"); + } + + UUID sourceUUID = org.gcube.informationsystem.utils.Utility + .getUUIDFromJsonNode(jsonNode.get(Relation.SOURCE_PROPERTY)); + + sourceEntityManagement = newSourceEntityManagement(); + sourceEntityManagement.setUUID(sourceUUID); + } + + if(targetEntityManagement == null) { + targetEntityManagement = newTargetEntityManagement(); + + if(!jsonNode.has(Relation.TARGET_PROPERTY)) { + throw new ResourceRegistryException( + "Error while creating " + elementType + ". No target definition found"); + } + + try { + targetEntityManagement.setJsonNode(jsonNode.get(Relation.TARGET_PROPERTY)); + } catch(SchemaException e) { + StringBuilder errorMessage = new StringBuilder(); + errorMessage.append("A "); + errorMessage.append(elementType); + errorMessage.append(" can be only created beetween "); + errorMessage.append(sourceEntityManagement.getAccessType().getName()); + errorMessage.append(" and "); + errorMessage.append(targetEntityManagement.getAccessType().getName()); + throw new ResourceRegistryException(errorMessage.toString(), e); + } + + try { + targetEntityManagement.getElement(); + } catch(Exception e) { + targetEntityManagement.internalCreate(); + } + } + + logger.trace("Creating {} beetween {} -> {}", elementType, getSourceEntityManagement().serialize(), + getTargetEntityManagement().serialize()); + + Vertex source = (Vertex) getSourceEntityManagement().getElement(); + Vertex target = (Vertex) getTargetEntityManagement().getElement(); + + element = orientGraph.addEdge(null, source, target, elementType); + + ERManagement.updateProperties(oClass, element, jsonNode, ignoreKeys, ignoreStartWithKeys); + + return element; + } + + protected abstract SEM newSourceEntityManagement() throws ResourceRegistryException; + + protected abstract TEM newTargetEntityManagement() throws ResourceRegistryException; + + @Override + protected Edge reallyUpdate() throws ResourceRegistryException { + + logger.debug("Trying to update {} : {}", elementType, jsonNode); + + Edge edge = getElement(); + ERManagement.updateProperties(oClass, edge, jsonNode, ignoreKeys, ignoreStartWithKeys); + + if(accessType.compareTo(AccessType.CONSISTS_OF) == 0) { + JsonNode target = jsonNode.get(Relation.TARGET_PROPERTY); + if(target != null) { + FacetManagement fm = new FacetManagement(getWorkingContext(), orientGraph); + fm.setJsonNode(target); + fm.internalUpdate(); + } + } + + logger.info("{} {} successfully updated", elementType, jsonNode); + + return edge; + + } + + @Override + protected boolean reallyDelete() throws RelationNotFoundException, ResourceRegistryException { + logger.debug("Going to remove {} with UUID {}. Related {}s will be detached.", accessType.getName(), uuid, + targetEntityClass.getSimpleName()); + + getElement().remove(); + + return true; + } + +} diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/context/ContextUtility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/ContextUtility.java similarity index 95% rename from src/main/java/org/gcube/informationsystem/resourceregistry/context/ContextUtility.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/ContextUtility.java index dcb105b..8fbf47d 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/context/ContextUtility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/ContextUtility.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.context; +package org.gcube.informationsystem.resourceregistry.instances.context; import java.util.HashMap; import java.util.Iterator; @@ -16,10 +16,10 @@ import org.gcube.informationsystem.context.reference.relations.IsParentOf; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextNotFoundException; -import org.gcube.informationsystem.resourceregistry.context.security.AdminSecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; +import org.gcube.informationsystem.resourceregistry.security.AdminSecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.resourceregistry.utils.Utility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/context/ContextManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/entities/ContextManagement.java similarity index 93% rename from src/main/java/org/gcube/informationsystem/resourceregistry/context/ContextManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/entities/ContextManagement.java index 299a05c..f213eb9 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/context/ContextManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/entities/ContextManagement.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.context; +package org.gcube.informationsystem.resourceregistry.instances.context.entities; import java.util.Iterator; import java.util.UUID; @@ -15,10 +15,12 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.context.Conte import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextNotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.EntityAvailableInAnotherContextException; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; -import org.gcube.informationsystem.resourceregistry.er.ERManagement; -import org.gcube.informationsystem.resourceregistry.er.entity.EntityManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.entities.BaseEntityManagement; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.relations.IsParentOfManagement; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import org.gcube.informationsystem.resourceregistry.utils.Utility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +40,7 @@ import com.tinkerpop.blueprints.impls.orient.OrientGraph; /** * @author Luca Frosini (ISTI - CNR) */ -public class ContextManagement extends EntityManagement { +public class ContextManagement extends BaseEntityManagement { private static Logger logger = LoggerFactory.getLogger(ContextManagement.class); @@ -407,5 +409,17 @@ public class ContextManagement extends EntityManagement { throw new ResourceRegistryException(e); } } + + @Override + protected boolean reallyAddToContext(SecurityContext targetSecurityContext) + throws ContextException, ResourceRegistryException { + throw new UnsupportedOperationException(); + } + + @Override + protected boolean reallyRemoveFromContext(SecurityContext targetSecurityContext) + throws ContextException, ResourceRegistryException { + throw new UnsupportedOperationException(); + } } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/context/IsParentOfManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/relations/IsParentOfManagement.java similarity index 59% rename from src/main/java/org/gcube/informationsystem/resourceregistry/context/IsParentOfManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/relations/IsParentOfManagement.java index 0268a54..35f1635 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/context/IsParentOfManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/relations/IsParentOfManagement.java @@ -1,22 +1,20 @@ -package org.gcube.informationsystem.resourceregistry.context; - -import java.util.UUID; +package org.gcube.informationsystem.resourceregistry.instances.context.relations; import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.context.reference.entities.Context; import org.gcube.informationsystem.context.reference.relations.IsParentOf; -import org.gcube.informationsystem.model.reference.properties.PropagationConstraint; -import org.gcube.informationsystem.model.reference.properties.PropagationConstraint.AddConstraint; -import org.gcube.informationsystem.model.reference.properties.PropagationConstraint.RemoveConstraint; import org.gcube.informationsystem.model.reference.relations.Relation; +import org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; -import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.RelationAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.isparentof.IsParentOfAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.isparentof.IsParentOfNotFoundException; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; -import org.gcube.informationsystem.resourceregistry.er.relation.RelationManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.relations.BaseRelationManagement; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.entities.ContextManagement; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import org.gcube.informationsystem.resourceregistry.utils.Utility; import com.fasterxml.jackson.databind.JsonNode; @@ -28,11 +26,10 @@ import com.tinkerpop.blueprints.impls.orient.OrientGraph; /** * @author Luca Frosini (ISTI - CNR) */ -@SuppressWarnings("rawtypes") -public class IsParentOfManagement extends RelationManagement { +public class IsParentOfManagement extends BaseRelationManagement { public IsParentOfManagement() { - super(AccessType.IS_PARENT_OF, null); + super(AccessType.IS_PARENT_OF, Context.class, Context.class); } public IsParentOfManagement(OrientGraph orientGraph) throws ResourceRegistryException { @@ -50,58 +47,11 @@ public class IsParentOfManagement extends RelationManagement extends ERManagement { +public abstract class EntityManagement extends BaseEntityManagement { /** * Provide a cache edge-internal-id -> RelationManagement diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagement.java similarity index 91% rename from src/main/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagement.java index 57a6648..faa0fc9 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagement.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er.entity; +package org.gcube.informationsystem.resourceregistry.instances.model.entity; import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.model.reference.entities.Facet; @@ -7,8 +7,8 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetNotFoundException; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; -import org.gcube.informationsystem.resourceregistry.er.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import com.fasterxml.jackson.databind.JsonNode; import com.tinkerpop.blueprints.Vertex; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/ResourceManagement.java similarity index 93% rename from src/main/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/ResourceManagement.java index 18fbda6..3053476 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/ResourceManagement.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er.entity; +package org.gcube.informationsystem.resourceregistry.instances.model.entity; import java.util.Iterator; @@ -11,11 +11,11 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceNotFoundException; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; -import org.gcube.informationsystem.resourceregistry.er.relation.ConsistsOfManagement; -import org.gcube.informationsystem.resourceregistry.er.relation.IsRelatedToManagement; -import org.gcube.informationsystem.resourceregistry.er.relation.RelationManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.relation.ConsistsOfManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.relation.IsRelatedToManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.relation.RelationManagement; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.resourceregistry.utils.Utility; import com.fasterxml.jackson.databind.JsonNode; @@ -59,8 +59,7 @@ public class ResourceManagement extends EntityManagement { public String serialize() throws ResourceRegistryException { return serializeAsJson().toString(); } - - @SuppressWarnings("unchecked") + @Override public JsonNode serializeAsJson() throws ResourceRegistryException { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/ConsistsOfManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/ConsistsOfManagement.java similarity index 77% rename from src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/ConsistsOfManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/ConsistsOfManagement.java index bd3f71b..ca4e21c 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/ConsistsOfManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/ConsistsOfManagement.java @@ -1,7 +1,9 @@ -package org.gcube.informationsystem.resourceregistry.er.relation; +package org.gcube.informationsystem.resourceregistry.instances.model.relation; import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.model.impl.properties.PropagationConstraintImpl; +import org.gcube.informationsystem.model.reference.entities.Facet; +import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.informationsystem.model.reference.properties.PropagationConstraint; import org.gcube.informationsystem.model.reference.properties.PropagationConstraint.AddConstraint; import org.gcube.informationsystem.model.reference.properties.PropagationConstraint.RemoveConstraint; @@ -11,17 +13,15 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.consistsOf.ConsistsOfAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.consistsOf.ConsistsOfAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.consistsOf.ConsistsOfNotFoundException; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; -import org.gcube.informationsystem.resourceregistry.er.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.er.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import com.tinkerpop.blueprints.impls.orient.OrientGraph; /** * @author Luca Frosini (ISTI - CNR) */ -@SuppressWarnings("rawtypes") -public class ConsistsOfManagement extends RelationManagement { +public class ConsistsOfManagement extends RelationManagement, FacetManagement, Facet> { public static final PropagationConstraint DEFAULT_CONSISTS_OF_PC; @@ -32,11 +32,11 @@ public class ConsistsOfManagement extends RelationManagement { +public class IsRelatedToManagement extends RelationManagement, ResourceManagement, Resource> { public static final PropagationConstraint DEFAULT_IS_RELATED_TO_PC; @@ -31,11 +31,11 @@ public class IsRelatedToManagement extends RelationManagement - extends ERManagement { - - protected final Class targetEntityClass; - - protected S sourceEntityManagement; - protected T targetEntityManagement; +public abstract class RelationManagement, T extends EntityManagement, TE extends Entity> + extends BaseRelationManagement{ public final PropagationConstraint defaultPropagationConstraint; - protected RelationManagement(AccessType accessType, PropagationConstraint defaultPropagationConstraint) { - super(accessType); - - this.ignoreKeys.add(Relation.HEADER_PROPERTY); - this.ignoreKeys.add(Relation.TARGET_PROPERTY); - this.ignoreKeys.add(Relation.SOURCE_PROPERTY); - this.ignoreKeys.add(OrientBaseGraph.CONNECTION_IN.toLowerCase()); - this.ignoreKeys.add(OrientBaseGraph.CONNECTION_OUT.toLowerCase()); - this.ignoreKeys.add(OrientBaseGraph.CONNECTION_IN.toUpperCase()); - this.ignoreKeys.add(OrientBaseGraph.CONNECTION_OUT.toUpperCase()); - - switch(accessType) { - case CONSISTS_OF: - this.targetEntityClass = Facet.class; - break; - - case IS_RELATED_TO: - this.targetEntityClass = Resource.class; - break; - - default: - this.targetEntityClass = Resource.class; - break; - } - - this.sourceEntityManagement = null; - this.targetEntityManagement = null; + protected RelationManagement(AccessType accessType, Class targetEntityClass, PropagationConstraint defaultPropagationConstraint) { + super(accessType, Resource.class, targetEntityClass); this.defaultPropagationConstraint = defaultPropagationConstraint; } - protected RelationManagement(AccessType accessType, SecurityContext workingContext, OrientGraph orientGraph, + protected RelationManagement(AccessType accessType, Class targetEntityClass, SecurityContext workingContext, OrientGraph orientGraph, PropagationConstraint defaultPropagationConstraint) { - this(accessType, defaultPropagationConstraint); + this(accessType, targetEntityClass, defaultPropagationConstraint); this.orientGraph = orientGraph; setWorkingContext(workingContext); } @@ -103,12 +68,11 @@ public abstract class RelationManagement sourceEntityManagement = getSourceEntityManagement(); ((ObjectNode) relation).replace(Relation.SOURCE_PROPERTY, sourceEntityManagement.serializeSelfOnly()); } if(includeTarget) { - EntityManagement targetEntityManagement = getTargetEntityManagement(); + EntityManagement targetEntityManagement = getTargetEntityManagement(); ((ObjectNode) relation).replace(Relation.TARGET_PROPERTY, targetEntityManagement.serializeAsJson()); } @@ -261,68 +224,18 @@ public abstract class RelationManagement {}", elementType, getSourceEntityManagement().serialize(), - getTargetEntityManagement().serialize()); - - Vertex source = (Vertex) getSourceEntityManagement().getElement(); - Vertex target = (Vertex) getTargetEntityManagement().getElement(); - - element = orientGraph.addEdge(null, source, target, elementType); - - ERManagement.updateProperties(oClass, element, jsonNode, ignoreKeys, ignoreStartWithKeys); - - if(!(this instanceof IsParentOfManagement)) { - checkPropagationConstraint(); - } + checkPropagationConstraint(); logger.info("{} successfully created", elementType); return element; } - protected abstract S newSourceEntityManagement() throws ResourceRegistryException; + protected ResourceManagement newSourceEntityManagement() throws ResourceRegistryException { + return new ResourceManagement(getWorkingContext(), orientGraph); + } protected abstract T newTargetEntityManagement() throws ResourceRegistryException; @@ -502,24 +415,23 @@ public abstract class RelationManagement relationManagement = ERManagementUtility.getRelationManagement(getWorkingContext(), orientGraph, edge); visitedSourceResources = relationManagement.fullSerialize(visitedSourceResources); } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/schema/SchemaContextManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/SchemaContextManagementOld.java similarity index 90% rename from src/main/java/org/gcube/informationsystem/resourceregistry/schema/SchemaContextManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/SchemaContextManagementOld.java index e584282..5a75e93 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/schema/SchemaContextManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/SchemaContextManagementOld.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.schema; +package org.gcube.informationsystem.resourceregistry.instances.type; import java.util.Iterator; @@ -8,9 +8,9 @@ import org.gcube.informationsystem.base.reference.properties.BaseProperty; import org.gcube.informationsystem.base.reference.relations.BaseRelation; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaNotFoundException; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.context.security.AdminSecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.security.AdminSecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.types.TypeBinder; import org.gcube.informationsystem.types.reference.TypeDefinition; import org.gcube.informationsystem.types.reference.relations.RelationTypeDefinition; @@ -23,9 +23,9 @@ import com.tinkerpop.blueprints.impls.orient.OrientEdge; import com.tinkerpop.blueprints.impls.orient.OrientGraph; import com.tinkerpop.blueprints.impls.orient.OrientVertex; -public class SchemaContextManagement implements SchemaManagement { +public class SchemaContextManagementOld implements SchemaManagement { - private static Logger logger = LoggerFactory.getLogger(SchemaContextManagement.class); + private static Logger logger = LoggerFactory.getLogger(SchemaContextManagementOld.class); public static final String SCHEMA = "__SCHEMA"; @@ -62,7 +62,6 @@ public class SchemaContextManagement implements SchemaManagement { AdminSecurityContext adminSecurityContext = ContextUtility.getAdminSecurityContext(); orientGraph = adminSecurityContext.getGraph(PermissionMode.WRITER); - @SuppressWarnings("rawtypes") TypeDefinition typeDefinition = TypeBinder.deserializeTypeDefinition(json); if(BaseEntity.class.isAssignableFrom(baseType.getTypeClass())) { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/SchemaManagement.java similarity index 92% rename from src/main/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/SchemaManagement.java index 6014729..bccefb9 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/SchemaManagement.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.schema; +package org.gcube.informationsystem.resourceregistry.instances.type; import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaException; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagementImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/SchemaManagementImpl.java similarity index 95% rename from src/main/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagementImpl.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/SchemaManagementImpl.java index 26edb4d..0db41ad 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagementImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/SchemaManagementImpl.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.informationsystem.resourceregistry.schema; +package org.gcube.informationsystem.resourceregistry.instances.type; import java.util.ArrayList; import java.util.Collection; @@ -29,9 +29,9 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.Schema import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaCreationException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaNotFoundException; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.context.security.AdminSecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.security.AdminSecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.types.Type; import org.gcube.informationsystem.types.TypeBinder; import org.gcube.informationsystem.types.reference.TypeDefinition; @@ -79,13 +79,13 @@ public class SchemaManagementImpl implements SchemaManagement { } public static OClass getTypeSchema(ODatabaseSession oDatabaseSession, String type, AccessType accessType) - throws SchemaException { + throws SchemaException, SchemaNotFoundException { OMetadata oMetadata = oDatabaseSession.getMetadata(); OSchema oSchema = oMetadata.getSchema(); return getTypeSchema(oSchema, type, accessType); } - public static OClass getTypeSchema(OSchema oSchema, String type, AccessType accessType) throws SchemaException { + public static OClass getTypeSchema(OSchema oSchema, String type, AccessType accessType) throws SchemaException, SchemaNotFoundException { try { OClass oClass = oSchema.getClass(type); if(oClass == null) { @@ -139,7 +139,6 @@ public class SchemaManagementImpl implements SchemaManagement { } } - @SuppressWarnings("rawtypes") protected static TypeDefinition getTypeDefinition(OClass oClass) throws SchemaException { // TODO OrientSerilizatoin is not acceptable anymore since TypeDefiniton introduction @@ -174,7 +173,6 @@ public class SchemaManagementImpl implements SchemaManagement { } } - @SuppressWarnings({"rawtypes"}) protected static String getTypeDefinitionAsString(OClass oClass) throws SchemaException { try { TypeDefinition typeDefinition = getTypeDefinition(oClass); @@ -184,9 +182,8 @@ public class SchemaManagementImpl implements SchemaManagement { } } - @SuppressWarnings({"unchecked", "rawtypes"}) protected List getSuperclassesAndCheckCompliancy(ODatabaseSession oDatabaseSession, - TypeDefinition typeDefinition, String baseType) throws SchemaException { + TypeDefinition typeDefinition, String baseType) throws SchemaException, SchemaNotFoundException { Set superClasses = typeDefinition.getSuperClasses(); if(baseType != null) { @@ -239,7 +236,6 @@ public class SchemaManagementImpl implements SchemaManagement { ODatabaseSession oDatabaseSession = null; try { - @SuppressWarnings("rawtypes") TypeDefinition typeDefinition = null; try { typeDefinition = TypeBinder.deserializeTypeDefinition(jsonSchema); @@ -311,7 +307,6 @@ public class SchemaManagementImpl implements SchemaManagement { oClass.setSuperClasses(oSuperclasses); } - @SuppressWarnings("unchecked") Set propertyDefinitions = typeDefinition.getProperties(); if(Resource.class.isAssignableFrom(baseType.getTypeClass())) { if(propertyDefinitions != null && propertyDefinitions.size() > 0) { @@ -410,8 +405,7 @@ public class SchemaManagementImpl implements SchemaManagement { } } - @SuppressWarnings("unchecked") - protected String getSchema(String type, boolean includeSubtypes) throws SchemaNotFoundException, SchemaException { + protected String getSchema(String type, boolean includeSubtypes) throws SchemaNotFoundException, SchemaException { ODatabaseSession oDatabaseSession = null; try { AdminSecurityContext adminSecurityContext = ContextUtility.getAdminSecurityContext(); @@ -421,7 +415,7 @@ public class SchemaManagementImpl implements SchemaManagement { OSchema oSchema = oMetadata.getSchema(); OClass baseOClass = getTypeSchema(oSchema, type, null); - List> typeDefinitions = new ArrayList<>(); + List typeDefinitions = new ArrayList<>(); typeDefinitions.add(getTypeDefinition(baseOClass)); if(includeSubtypes) { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/entities/EntityTypeDefinitionManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/entities/EntityTypeDefinitionManagement.java new file mode 100644 index 0000000..d5995c0 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/entities/EntityTypeDefinitionManagement.java @@ -0,0 +1,134 @@ +package org.gcube.informationsystem.resourceregistry.instances.type.entities; + +import javax.ws.rs.NotAcceptableException; + +import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.base.reference.entities.BaseEntity; +import org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAnotherContextException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaNotFoundException; +import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.entities.BaseEntityManagement; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.entities.ContextManagement; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; +import org.gcube.informationsystem.types.reference.entities.EntityTypeDefinition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.databind.JsonNode; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.impls.orient.OrientGraph; + +public class EntityTypeDefinitionManagement> extends BaseEntityManagement { + + private static Logger logger = LoggerFactory.getLogger(ContextManagement.class); + + protected String name; + + private void init() { + this.elementType = EntityTypeDefinition.NAME; + } + + public EntityTypeDefinitionManagement() { + super(AccessType.ENTITY_TYPE_DEFINITION); + init(); + } + + public EntityTypeDefinitionManagement(OrientGraph orientGraph) throws ResourceRegistryException { + this(); + this.orientGraph = orientGraph; + getWorkingContext(); + } + + public String getName() { + if(name == null) { + if(element == null) { + if(jsonNode != null) { + name = jsonNode.get(EntityTypeDefinition.NAME_PROPERTY).asText(); + } + } else { + name = element.getProperty(EntityTypeDefinition.NAME_PROPERTY); + } + } + return name; + } + + @Override + protected SecurityContext getWorkingContext() throws ResourceRegistryException { + if(workingContext == null) { + workingContext = ContextUtility.getInstance() + .getSecurityContextByUUID(DatabaseEnvironment.SCHEMA_SECURITY_CONTEXT_UUID); + } + return workingContext; + } + + @Override + protected SchemaNotFoundException getSpecificElementNotFoundException(NotFoundException e) { + return new SchemaNotFoundException(e.getMessage(), e.getCause()); + } + + @Override + protected AvailableInAnotherContextException getSpecificERAvailableInAnotherContextException(String message) { + throw new NotAcceptableException(); + } + + @Override + protected AlreadyPresentException getSpecificERAlreadyPresentException(String message) { + throw new NotAcceptableException(); + } + + @Override + public String serialize() throws ResourceRegistryException { + return serializeAsJson().toString(); + } + + @Override + public JsonNode serializeAsJson() throws ResourceRegistryException { + return serializeSelfOnly(); + // For Resources Definition include mandatory and suggested IsRelatedTo and ConsistsOf + } + + @Override + protected Vertex reallyCreate() throws AlreadyPresentException, ResourceRegistryException { + logger.debug("Going to create {} for {}", EntityTypeDefinition.NAME, getName()); + return createVertex(); + } + + @Override + protected Vertex reallyUpdate() throws NotFoundException, ResourceRegistryException { + logger.debug("Going to update {} for {}", EntityTypeDefinition.NAME, getName()); + Vertex entityTypeDefinition = getElement(); + entityTypeDefinition = (Vertex) ERManagement.updateProperties(oClass, entityTypeDefinition, jsonNode, ignoreKeys, ignoreStartWithKeys); + return entityTypeDefinition; + } + + @Override + protected boolean reallyDelete() throws NotFoundException, ResourceRegistryException { + logger.debug("Going to remove {} for {}", EntityTypeDefinition.NAME, getName()); + getElement().remove(); + return true; + } + + @Override + public String reallyGetAll(boolean polymorphic) throws ResourceRegistryException { + throw new UnsupportedOperationException(); + } + + @Override + protected boolean reallyAddToContext(SecurityContext targetSecurityContext) + throws ContextException, ResourceRegistryException { + throw new UnsupportedOperationException(); + } + + @Override + protected boolean reallyRemoveFromContext(SecurityContext targetSecurityContext) + throws ContextException, ResourceRegistryException { + throw new UnsupportedOperationException(); + } + +} diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/relations/RelationTypeDefinitionManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/relations/RelationTypeDefinitionManagement.java new file mode 100644 index 0000000..5d6a4c6 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/type/relations/RelationTypeDefinitionManagement.java @@ -0,0 +1,134 @@ +package org.gcube.informationsystem.resourceregistry.instances.type.relations; + +import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.base.reference.entities.BaseEntity; +import org.gcube.informationsystem.model.reference.relations.Relation; +import org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAnotherContextException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.isparentof.IsParentOfAlreadyPresentException; +import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.isparentof.IsParentOfNotFoundException; +import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; +import org.gcube.informationsystem.resourceregistry.instances.base.relations.BaseRelationManagement; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.entities.ContextManagement; +import org.gcube.informationsystem.resourceregistry.instances.type.entities.EntityTypeDefinitionManagement; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; +import org.gcube.informationsystem.resourceregistry.utils.Utility; +import org.gcube.informationsystem.types.reference.entities.EntityTypeDefinition; +import org.gcube.informationsystem.types.reference.relations.RelationTypeDefinition; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.tinkerpop.blueprints.Direction; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.impls.orient.OrientGraph; + +public class RelationTypeDefinitionManagement, + SEM extends EntityTypeDefinitionManagement, TEM extends EntityTypeDefinitionManagement, + SETD extends EntityTypeDefinition, TETD extends EntityTypeDefinition, + S extends BaseEntity, T extends BaseEntity> + + extends BaseRelationManagement { + + @SuppressWarnings("unchecked") + public RelationTypeDefinitionManagement() { + super(AccessType.RELATION_TYPE_DEFINITION, (Class) EntityTypeDefinition.class, (Class) EntityTypeDefinition.class); + } + + public RelationTypeDefinitionManagement(OrientGraph orientGraph) throws ResourceRegistryException { + this(); + this.orientGraph = orientGraph; + getWorkingContext(); + } + + @Override + protected SecurityContext getWorkingContext() throws ResourceRegistryException { + if(workingContext == null) { + this.workingContext = ContextUtility.getInstance() + .getSecurityContextByUUID(DatabaseEnvironment.SCHEMA_SECURITY_CONTEXT_UUID); + } + return workingContext; + } + + @Override + protected IsParentOfNotFoundException getSpecificElementNotFoundException(NotFoundException e) { + return new IsParentOfNotFoundException(e.getMessage(), e.getCause()); + } + + @Override + protected IsParentOfAlreadyPresentException getSpecificERAlreadyPresentException(String message) { + return new IsParentOfAlreadyPresentException(message); + } + + @Override + public JsonNode serializeAsJson() throws ResourceRegistryException { + return serializeAsJson(false, true); + } + + public JsonNode serializeAsJson(boolean includeSource, boolean includeTarget) throws ResourceRegistryException { + JsonNode relation = serializeSelfOnly(); + + try { + Vertex source = element.getVertex(Direction.OUT); + ContextManagement sourceContextManagement = new ContextManagement(orientGraph); + sourceContextManagement.setElement(source); + if(includeSource) { + ((ObjectNode)relation).replace(Relation.SOURCE_PROPERTY, sourceContextManagement.serializeSelfOnly()); + } + + Vertex target = element.getVertex(Direction.IN); + ContextManagement targetContextManagement = new ContextManagement(orientGraph); + targetContextManagement.setElement(target); + if(includeTarget) { + ((ObjectNode)relation).replace(Relation.TARGET_PROPERTY, targetContextManagement.serializeSelfOnly()); + } + + } catch(ResourceRegistryException e) { + logger.error("Unable to correctly serialize {}. {}", element, Utility.SHOULD_NOT_OCCUR_ERROR_MESSAGE, e); + throw e; + } catch(Exception e) { + logger.error("Unable to correctly serialize {}. {}", element, Utility.SHOULD_NOT_OCCUR_ERROR_MESSAGE, e); + throw new ResourceRegistryException(e); + } + + return relation; + } + + @Override + protected SEM newSourceEntityManagement() throws ResourceRegistryException { + @SuppressWarnings("unchecked") + SEM sem = (SEM) new EntityTypeDefinitionManagement(orientGraph); + return sem; + } + + @Override + protected TEM newTargetEntityManagement() throws ResourceRegistryException { + @SuppressWarnings("unchecked") + TEM tem = (TEM) new EntityTypeDefinitionManagement(orientGraph); + return tem; + } + + @Override + protected boolean reallyAddToContext(SecurityContext targetSecurityContext) + throws ContextException, ResourceRegistryException { + throw new UnsupportedOperationException(); + } + + @Override + protected boolean reallyRemoveFromContext(SecurityContext targetSecurityContext) + throws ContextException, ResourceRegistryException { + throw new UnsupportedOperationException(); + } + + @Override + protected AvailableInAnotherContextException getSpecificERAvailableInAnotherContextException(String message) { + throw new UnsupportedOperationException(); + } + + @Override + public String reallyGetAll(boolean polymorphic) throws ResourceRegistryException { + throw new UnsupportedOperationException(); + } +} diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/query/QueryImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/query/QueryImpl.java index e64ff6d..9c74b14 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/query/QueryImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/query/QueryImpl.java @@ -3,11 +3,11 @@ package org.gcube.informationsystem.resourceregistry.query; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.query.InvalidQueryException; import org.gcube.informationsystem.resourceregistry.api.rest.AccessPath; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; -import org.gcube.informationsystem.resourceregistry.er.ERManagement; -import org.gcube.informationsystem.resourceregistry.er.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.resourceregistry.utils.Utility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java index 91c2c4d..7f95b3d 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java @@ -33,15 +33,15 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.context.Conte import org.gcube.informationsystem.resourceregistry.api.exceptions.query.InvalidQueryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaNotFoundException; import org.gcube.informationsystem.resourceregistry.api.rest.AccessPath; -import org.gcube.informationsystem.resourceregistry.context.ContextManagement; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.er.ERManagement; -import org.gcube.informationsystem.resourceregistry.er.ERManagementUtility; -import org.gcube.informationsystem.resourceregistry.er.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.entities.ContextManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagement; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagementImpl; import org.gcube.informationsystem.resourceregistry.query.Query; import org.gcube.informationsystem.resourceregistry.query.QueryImpl; -import org.gcube.informationsystem.resourceregistry.schema.SchemaManagement; -import org.gcube.informationsystem.resourceregistry.schema.SchemaManagementImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/ContextManager.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/ContextManager.java index a17e216..337f61a 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/ContextManager.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/ContextManager.java @@ -22,8 +22,8 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextNotFoundException; import org.gcube.informationsystem.resourceregistry.api.rest.AccessPath; import org.gcube.informationsystem.resourceregistry.api.rest.ContextPath; -import org.gcube.informationsystem.resourceregistry.context.ContextManagement; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.entities.ContextManagement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/InstancesManager.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/InstancesManager.java index 02fa89e..ce0320c 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/InstancesManager.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/InstancesManager.java @@ -27,8 +27,8 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundExcep import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.rest.AccessPath; import org.gcube.informationsystem.resourceregistry.api.rest.InstancePath; -import org.gcube.informationsystem.resourceregistry.er.ERManagement; -import org.gcube.informationsystem.resourceregistry.er.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SchemaManager.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SchemaManager.java index b483e69..892c6cb 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SchemaManager.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SchemaManager.java @@ -27,9 +27,9 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.Schema import org.gcube.informationsystem.resourceregistry.api.rest.AccessPath; import org.gcube.informationsystem.resourceregistry.api.rest.InstancePath; import org.gcube.informationsystem.resourceregistry.api.rest.TypePath; -import org.gcube.informationsystem.resourceregistry.er.ERManagementUtility; -import org.gcube.informationsystem.resourceregistry.schema.SchemaManagement; -import org.gcube.informationsystem.resourceregistry.schema.SchemaManagementImpl; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagement; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagementImpl; import org.gcube.informationsystem.types.TypeBinder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -80,7 +80,6 @@ public class SchemaManager { AccessType accessType = null; String firstGotType = null; try { - @SuppressWarnings("unchecked") Set superClasses = TypeBinder.deserializeTypeDefinition(json).getSuperClasses(); if(superClasses.size()==0) { throw new ResourceRegistryException("No superclasses defined"); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SharingManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SharingManagement.java index f04d1e4..0db9ec7 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SharingManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SharingManagement.java @@ -18,8 +18,8 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.context.Conte import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceNotFoundException; import org.gcube.informationsystem.resourceregistry.api.rest.AccessPath; import org.gcube.informationsystem.resourceregistry.api.rest.SharingPath; -import org.gcube.informationsystem.resourceregistry.er.ERManagement; -import org.gcube.informationsystem.resourceregistry.er.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/context/security/AdminSecurityContext.java b/src/main/java/org/gcube/informationsystem/resourceregistry/security/AdminSecurityContext.java similarity index 95% rename from src/main/java/org/gcube/informationsystem/resourceregistry/context/security/AdminSecurityContext.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/security/AdminSecurityContext.java index 6ec8e31..bbb74c8 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/context/security/AdminSecurityContext.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/security/AdminSecurityContext.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.context.security; +package org.gcube.informationsystem.resourceregistry.security; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/context/security/ContextSecurityContext.java b/src/main/java/org/gcube/informationsystem/resourceregistry/security/ContextSecurityContext.java similarity index 95% rename from src/main/java/org/gcube/informationsystem/resourceregistry/context/security/ContextSecurityContext.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/security/ContextSecurityContext.java index 437b252..a036a71 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/context/security/ContextSecurityContext.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/security/ContextSecurityContext.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.context.security; +package org.gcube.informationsystem.resourceregistry.security; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/context/security/SchemaSecurityContext.java b/src/main/java/org/gcube/informationsystem/resourceregistry/security/SchemaSecurityContext.java similarity index 95% rename from src/main/java/org/gcube/informationsystem/resourceregistry/context/security/SchemaSecurityContext.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/security/SchemaSecurityContext.java index c3493c7..e9c0ef6 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/context/security/SchemaSecurityContext.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/security/SchemaSecurityContext.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.context.security; +package org.gcube.informationsystem.resourceregistry.security; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/context/security/SecurityContext.java b/src/main/java/org/gcube/informationsystem/resourceregistry/security/SecurityContext.java similarity index 99% rename from src/main/java/org/gcube/informationsystem/resourceregistry/context/security/SecurityContext.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/security/SecurityContext.java index 0dbdadb..5e83808 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/context/security/SecurityContext.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/security/SecurityContext.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.informationsystem.resourceregistry.context.security; +package org.gcube.informationsystem.resourceregistry.security; import java.util.ArrayList; import java.util.HashMap; @@ -17,8 +17,8 @@ import java.util.concurrent.Future; import org.gcube.informationsystem.context.reference.entities.Context; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; import org.gcube.informationsystem.resourceregistry.utils.Utility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/Utility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/Utility.java index 9ddd1c6..e73b5d0 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/Utility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/Utility.java @@ -9,9 +9,9 @@ import org.gcube.informationsystem.model.reference.entities.Entity; import org.gcube.informationsystem.model.reference.relations.Relation; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.context.security.AdminSecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.security.AdminSecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.utils.ISMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/context/ContextManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/context/ContextManagementTest.java index 8781a0f..7354d3e 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/context/ContextManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/context/ContextManagementTest.java @@ -13,11 +13,13 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextNotFoundException; -import org.gcube.informationsystem.resourceregistry.context.security.ContextSecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.SecurityType; import org.gcube.informationsystem.resourceregistry.er.entity.FacetManagementTest; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.context.entities.ContextManagement; +import org.gcube.informationsystem.resourceregistry.security.ContextSecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.SecurityType; import org.gcube.informationsystem.utils.ISMapper; import org.junit.Assert; import org.junit.Test; @@ -439,8 +441,8 @@ public class ContextManagementTest extends ContextTest { List contexts = getAll(); for(Context context : contexts) { logger.trace(ISMapper.marshal(context)); - List> children = context.getChildren(); - for(IsParentOf child : children) { + List children = context.getChildren(); + for(IsParentOf child : children) { Assert.assertTrue(child.getSource() == context); Context childContext = child.getTarget(); Assert.assertTrue(childContext.getParent().getSource() == context); diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/dbinitialization/DatabaseEnvironmentTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/dbinitialization/DatabaseEnvironmentTest.java index ed6cba6..899a630 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/dbinitialization/DatabaseEnvironmentTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/dbinitialization/DatabaseEnvironmentTest.java @@ -2,8 +2,8 @@ package org.gcube.informationsystem.resourceregistry.dbinitialization; import org.gcube.informationsystem.base.reference.ISConstants; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.context.security.SecurityContext.PermissionMode; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java index d2f48c0..db4353e 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java @@ -34,10 +34,11 @@ import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetNotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.query.InvalidQueryException; -import org.gcube.informationsystem.resourceregistry.er.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.er.entity.ResourceManagement; -import org.gcube.informationsystem.resourceregistry.er.relation.ConsistsOfManagement; -import org.gcube.informationsystem.resourceregistry.er.relation.IsRelatedToManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.relation.ConsistsOfManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.relation.IsRelatedToManagement; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.informationsystem.utils.Utility; import org.gcube.resourcemanagement.model.impl.entities.facets.AccessPointFacetImpl; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/SmartgearResourcesTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/er/SmartgearResourcesTest.java index 7879014..626ac12 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/SmartgearResourcesTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/er/SmartgearResourcesTest.java @@ -35,7 +35,7 @@ import org.gcube.informationsystem.model.reference.relations.ConsistsOf; import org.gcube.informationsystem.model.reference.relations.IsIdentifiedBy; import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; -import org.gcube.informationsystem.resourceregistry.er.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.facets.CPUFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.ContainerStateFacetImpl; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagementTest.java index 3001c94..3070350 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagementTest.java @@ -9,8 +9,9 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet. import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetNotFoundException; import org.gcube.informationsystem.resourceregistry.api.utils.Utility; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; import org.gcube.informationsystem.resourceregistry.er.ERManagementTest; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; import org.gcube.informationsystem.resourceregistry.utils.HeaderUtility; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.facets.SoftwareFacetImpl; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagementTest.java index 02c82da..698256a 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagementTest.java @@ -10,8 +10,9 @@ import org.gcube.informationsystem.model.reference.relations.ConsistsOf; import org.gcube.informationsystem.model.reference.relations.IsIdentifiedBy; import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; -import org.gcube.informationsystem.resourceregistry.er.ERManagement; -import org.gcube.informationsystem.resourceregistry.er.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl; import org.gcube.resourcemanagement.model.reference.entities.facets.SoftwareFacet; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/BasicTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/BasicTest.java index 8c58dbb..93ebf01 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/BasicTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/BasicTest.java @@ -22,11 +22,11 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet. import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceNotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.RelationAvailableInAnotherContextException; -import org.gcube.informationsystem.resourceregistry.context.ContextUtility; import org.gcube.informationsystem.resourceregistry.er.SmartgearResourcesTest; -import org.gcube.informationsystem.resourceregistry.er.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.er.entity.ResourceManagement; -import org.gcube.informationsystem.resourceregistry.er.relation.IsRelatedToManagement; +import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.relation.IsRelatedToManagement; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.facets.AccessPointFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.CPUFacetImpl; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/RuleTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/RuleTest.java index d1b4133..ca5a6b8 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/RuleTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/RuleTest.java @@ -8,8 +8,8 @@ import org.gcube.informationsystem.model.reference.relations.IsIdentifiedBy; import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceAlreadyPresentException; -import org.gcube.informationsystem.resourceregistry.er.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.er.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.facets.SoftwareFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagementImplTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagementImplTest.java index 95e083f..2344697 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagementImplTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/schema/SchemaManagementImplTest.java @@ -15,6 +15,8 @@ import org.gcube.informationsystem.model.reference.properties.Property; import org.gcube.informationsystem.model.reference.relations.ConsistsOf; import org.gcube.informationsystem.model.reference.relations.IsRelatedTo; import org.gcube.informationsystem.model.reference.relations.Relation; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagement; +import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagementImpl; import org.gcube.informationsystem.types.TypeBinder; import org.gcube.informationsystem.types.reference.TypeDefinition; import org.gcube.informationsystem.utils.ISMapper; @@ -58,7 +60,6 @@ public class SchemaManagementImplTest { public void getFacetSchema() throws Exception { String json = new SchemaManagementImpl().read(ContactFacet.NAME, false); logger.info(json); - @SuppressWarnings("rawtypes") List typeDefinitions = TypeBinder.deserializeTypeDefinitions(json); logger.info("{}", typeDefinitions); @@ -104,7 +105,6 @@ public class SchemaManagementImplTest { String list = schemaManagement.read(BaseProperty.NAME, includeSubTypes); logger.debug("{} list : {}", BaseProperty.NAME, list); - @SuppressWarnings("rawtypes") List typeDefinitions = ISMapper.unmarshalList(TypeDefinition.class, list); logger.debug("{}", typeDefinitions);