Denied Creation of Abstract Type.

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/information-system/resource-registry@146398 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Luca Frosini 2017-03-28 14:02:23 +00:00
parent dfb18b9144
commit c6fb345a3b
4 changed files with 56 additions and 12 deletions

View File

@ -388,6 +388,29 @@ public abstract class ERManagement<ERType extends ER, El extends Element> {
} }
} }
public boolean exists() throws ERNotFoundException, ResourceRegistryException {
try {
orientGraph = ContextUtility.getActualSecurityContextGraph(PermissionMode.READER);
getElement();
if(element==null){
return false;
}else{
return true;
}
} catch (ResourceRegistryException e) {
throw e;
} catch (Exception e) {
throw new ResourceRegistryException(e);
} finally {
if (orientGraph != null) {
orientGraph.shutdown();
}
}
}
public String read() throws ERNotFoundException, public String read() throws ERNotFoundException,
ResourceRegistryException { ResourceRegistryException {
try { try {

View File

@ -73,6 +73,12 @@ public abstract class EntityManagement<E extends Entity> extends
try { 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.",
baseType, erType);
throw new ResourceRegistryException(error);
}
Vertex vertexEntity = orientGraph.addVertex("class:" + erType); Vertex vertexEntity = orientGraph.addVertex("class:" + erType);
try { try {
@ -164,7 +170,16 @@ public abstract class EntityManagement<E extends Entity> extends
@SuppressWarnings({ "rawtypes", "unchecked" }) @SuppressWarnings({ "rawtypes", "unchecked" })
public static EntityManagement getEntityManagement(OrientGraph orientGraph, public static EntityManagement getEntityManagement(OrientGraph orientGraph,
Vertex vertex) throws ResourceRegistryException { Vertex vertex) throws ResourceRegistryException {
OrientVertexType orientVertexType = ((OrientVertex) vertex).getType();
OrientVertexType orientVertexType = null;
try {
orientVertexType = ((OrientVertex) vertex).getType();
}catch (Exception e) {
String error = String.format("Unable to detect type of %s. This is really strage please contact the administrator", vertex.toString());
logger.error(error, e);
throw new ResourceRegistryException(error);
}
EntityManagement entityManagement = null; EntityManagement entityManagement = null;
if (orientVertexType.isSubClassOf(Resource.NAME)) { if (orientVertexType.isSubClassOf(Resource.NAME)) {
entityManagement = new ResourceManagement(orientGraph); entityManagement = new ResourceManagement(orientGraph);
@ -221,8 +236,12 @@ public abstract class EntityManagement<E extends Entity> extends
for(Vertex vertex : iterable){ for(Vertex vertex : iterable){
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
EntityManagement entityManagement = getEntityManagement(orientGraph, vertex); EntityManagement entityManagement = getEntityManagement(orientGraph, vertex);
try {
JSONObject jsonObject = entityManagement.serializeAsJson(); JSONObject jsonObject = entityManagement.serializeAsJson();
jsonArray.put(jsonObject); jsonArray.put(jsonObject);
}catch (ResourceRegistryException e) {
logger.error("Unable to correctly serialize {}. It will be excluded from results. This is really strange and should not occur.", vertex.toString());
}
} }
return jsonArray.toString(); return jsonArray.toString();
} }

View File

@ -68,9 +68,13 @@ public class ResourceManagement extends EntityManagement<Resource> {
RelationManagement relationManagement = RelationManagement RelationManagement relationManagement = RelationManagement
.getRelationManagement(orientGraph, edge); .getRelationManagement(orientGraph, edge);
if (relationManagement instanceof ConsistsOfManagement) { if (relationManagement instanceof ConsistsOfManagement) {
try {
JSONObject consistsOf = relationManagement JSONObject consistsOf = relationManagement
.serializeAsJson(); .serializeAsJson();
sourceResource = addConsistsOf(sourceResource, consistsOf); sourceResource = addConsistsOf(sourceResource, consistsOf);
}catch (ResourceRegistryException e) {
logger.error("Unable to correctly serialize {}. It will be excluded from results. This is really strange and should not occur.", edge.toString());
}
} }
/* /*

View File

@ -12,7 +12,6 @@ import java.util.Map;
import java.util.UUID; import java.util.UUID;
import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject; import org.codehaus.jettison.json.JSONObject;
import org.gcube.informationsystem.model.embedded.PropagationConstraint; import org.gcube.informationsystem.model.embedded.PropagationConstraint;
import org.gcube.informationsystem.model.embedded.PropagationConstraint.AddConstraint; import org.gcube.informationsystem.model.embedded.PropagationConstraint.AddConstraint;
@ -98,14 +97,13 @@ public abstract class RelationManagement<R extends Relation> extends
JSONObject relation = serializeSelfOnly(); JSONObject relation = serializeSelfOnly();
Vertex target = element.getVertex(Direction.IN); Vertex target = element.getVertex(Direction.IN);
try {
EntityManagement entityManagement = EntityManagement EntityManagement entityManagement = EntityManagement
.getEntityManagement(orientGraph, target); .getEntityManagement(orientGraph, target);
try {
relation.put(Relation.TARGET_PROPERTY, relation.put(Relation.TARGET_PROPERTY,
entityManagement.serializeAsJson()); entityManagement.serializeAsJson());
} catch (JSONException e) { } catch (Exception e) {
throw new ResourceRegistryException(e); logger.error("Unable to correctly serialize {}. It will be excluded from results. This is really strange and should not occur.", target.toString());
} }
return relation; return relation;