Added embedded management for unknown property
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/information-system/resource-registry@146361 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
8f87923fee
commit
0ebbef1c55
|
@ -35,7 +35,7 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.
|
|||
import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceNotFoundException;
|
||||
import org.gcube.informationsystem.resourceregistry.api.exceptions.er.ERNotFoundException;
|
||||
import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.RelationNotFoundException;
|
||||
import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaNotFoundException;
|
||||
import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaException;
|
||||
import org.gcube.informationsystem.resourceregistry.context.ContextUtility;
|
||||
import org.gcube.informationsystem.resourceregistry.context.SecurityContextMapper;
|
||||
import org.gcube.informationsystem.resourceregistry.context.SecurityContextMapper.PermissionMode;
|
||||
|
@ -85,6 +85,7 @@ public abstract class ERManagement<ERType extends ER, El extends Element> {
|
|||
protected final Set<String> ignoreKeys;
|
||||
protected final Set<String> ignoreStartWithKeys;
|
||||
|
||||
protected OClass oClass;
|
||||
protected Class<ERType> erTypeClass;
|
||||
protected String baseType;
|
||||
|
||||
|
@ -223,6 +224,10 @@ public abstract class ERManagement<ERType extends ER, El extends Element> {
|
|||
checkJSON();
|
||||
}
|
||||
|
||||
protected void getSchema() throws SchemaException {
|
||||
oClass = SchemaManagementImpl.getTypeSchema(erType, baseType);
|
||||
}
|
||||
|
||||
public void setElementType(String erType) throws ResourceRegistryException {
|
||||
this.erType = erType;
|
||||
if (erType == null || erType.compareTo("") == 0) {
|
||||
|
@ -261,6 +266,7 @@ public abstract class ERManagement<ERType extends ER, El extends Element> {
|
|||
|
||||
if (this.erType == null) {
|
||||
this.erType = getClassProperty(jsonNode);
|
||||
getSchema();
|
||||
} else {
|
||||
checkERMatch();
|
||||
}
|
||||
|
@ -277,12 +283,7 @@ public abstract class ERManagement<ERType extends ER, El extends Element> {
|
|||
throw new ResourceRegistryException(error);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
SchemaManagementImpl.getTypeSchema(erType, baseType);
|
||||
} catch (SchemaNotFoundException e) {
|
||||
throw e;
|
||||
}
|
||||
getSchema();
|
||||
}
|
||||
|
||||
protected void checkUUIDMatch() throws ResourceRegistryException {
|
||||
|
@ -309,7 +310,6 @@ public abstract class ERManagement<ERType extends ER, El extends Element> {
|
|||
public JSONObject serializeSelfOnly() throws ResourceRegistryException {
|
||||
try {
|
||||
return toJSONObject();
|
||||
//return Utility.toJsonObject((OrientElement) getElement(), false);
|
||||
}catch(Exception e){
|
||||
throw new ResourceRegistryException(e);
|
||||
}
|
||||
|
@ -648,7 +648,7 @@ public abstract class ERManagement<ERType extends ER, El extends Element> {
|
|||
return map;
|
||||
}
|
||||
|
||||
public static Element updateProperties(Element element, JsonNode jsonNode,
|
||||
public static Element updateProperties(OClass oClass, Element element, JsonNode jsonNode,
|
||||
Set<String> ignoreKeys, Set<String> ignoreStartWithKeys)
|
||||
throws ResourceRegistryException {
|
||||
|
||||
|
@ -672,7 +672,15 @@ public abstract class ERManagement<ERType extends ER, El extends Element> {
|
|||
|
||||
for (String key : properties.keySet()) {
|
||||
try {
|
||||
element.setProperty(key, properties.get(key));
|
||||
|
||||
Object object = properties.get(key);
|
||||
if(!oClass.existsProperty(key) && object instanceof ODocument){
|
||||
ODocument oDocument = (ODocument) object;
|
||||
((OrientElement) element).setProperty(key, oDocument, OType.EMBEDDED);
|
||||
} else{
|
||||
element.setProperty(key, object);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
String error = String.format(
|
||||
"Error while setting property %s : %s", key, properties
|
||||
|
|
|
@ -72,6 +72,8 @@ public class EmbeddedMangement {
|
|||
return oDocument.fromJSON(jsonNode.toString());
|
||||
|
||||
}
|
||||
return null;
|
||||
|
||||
ODocument oDocument = new ODocument();
|
||||
return oDocument.fromJSON(jsonNode.toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ public abstract class EntityManagement<E extends Entity> extends
|
|||
if (Resource.class.isAssignableFrom(erTypeClass)) {
|
||||
// Facet and relation are created in calling method
|
||||
} else {
|
||||
ERManagement.updateProperties(element, jsonNode, ignoreKeys,
|
||||
ERManagement.updateProperties(oClass, element, jsonNode, ignoreKeys,
|
||||
ignoreStartWithKeys);
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ public class FacetManagement extends EntityManagement<Facet> {
|
|||
@Override
|
||||
public Vertex reallyUpdate() throws ResourceRegistryException {
|
||||
Vertex facet = getElement();
|
||||
facet = (Vertex) ERManagement.updateProperties(facet, jsonNode, ignoreKeys, ignoreStartWithKeys);
|
||||
facet = (Vertex) ERManagement.updateProperties(oClass, facet, jsonNode, ignoreKeys, ignoreStartWithKeys);
|
||||
((OrientVertex) facet).save();
|
||||
return facet;
|
||||
}
|
||||
|
|
|
@ -220,7 +220,7 @@ public abstract class RelationManagement<R extends Relation> extends
|
|||
|
||||
element = orientGraph.addEdge(null, source, target, erType);
|
||||
|
||||
ERManagement.updateProperties(element, jsonNode, ignoreKeys,
|
||||
ERManagement.updateProperties(oClass, element, jsonNode, ignoreKeys,
|
||||
ignoreStartWithKeys);
|
||||
|
||||
HeaderUtility.addHeader(element, null);
|
||||
|
@ -263,7 +263,7 @@ public abstract class RelationManagement<R extends Relation> extends
|
|||
logger.debug("Trying to update {} : {}", erType, jsonNode);
|
||||
|
||||
Edge edge = getElement();
|
||||
ERManagement.updateProperties(edge, jsonNode, ignoreKeys,
|
||||
ERManagement.updateProperties(oClass, edge, jsonNode, ignoreKeys,
|
||||
ignoreStartWithKeys);
|
||||
|
||||
if (ConsistsOf.class.isAssignableFrom(erTypeClass)) {
|
||||
|
|
|
@ -194,7 +194,7 @@ public class ContextManagementImplTest {
|
|||
logger.debug("The DB should be now clean");
|
||||
}
|
||||
|
||||
//@Test
|
||||
// @Test
|
||||
public void createDevContext() throws Exception {
|
||||
String gcubeJson = contextManagementImpl.create(null, "gcube");
|
||||
Context gcubeContext = ISMapper.unmarshal(Context.class, gcubeJson);
|
||||
|
@ -235,15 +235,16 @@ public class ContextManagementImplTest {
|
|||
// logger.debug("The DB should be now clean");
|
||||
}
|
||||
|
||||
// @Test
|
||||
//@Test
|
||||
public void removeContext() throws Exception {
|
||||
/*
|
||||
* contextManagementImpl.delete(UUID .fromString(""));
|
||||
* contextManagementImpl.delete(UUID .fromString(""));
|
||||
* contextManagementImpl.delete(UUID .fromString(""));
|
||||
* contextManagementImpl.delete(UUID .fromString(""));
|
||||
* contextManagementImpl.delete(UUID .fromString(""));
|
||||
contextManagementImpl.delete(UUID .fromString(""));
|
||||
contextManagementImpl.delete(UUID .fromString(""));
|
||||
contextManagementImpl.delete(UUID .fromString(""));
|
||||
contextManagementImpl.delete(UUID .fromString(""));
|
||||
contextManagementImpl.delete(UUID .fromString(""));
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue