Added the possibility to create any type of resource without gcube-model
This commit is contained in:
parent
483826685c
commit
489eed2787
|
@ -7,6 +7,8 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import org.gcube.common.gxhttp.reference.GXConnection;
|
import org.gcube.common.gxhttp.reference.GXConnection;
|
||||||
import org.gcube.common.gxhttp.request.GXHTTPStringRequest;
|
import org.gcube.common.gxhttp.request.GXHTTPStringRequest;
|
||||||
import org.gcube.common.http.GXHTTPUtility;
|
import org.gcube.common.http.GXHTTPUtility;
|
||||||
|
@ -44,6 +46,7 @@ import org.gcube.informationsystem.resourceregistry.api.rest.SharingPath;
|
||||||
import org.gcube.informationsystem.resourceregistry.api.rest.SharingPath.SharingOperation;
|
import org.gcube.informationsystem.resourceregistry.api.rest.SharingPath.SharingOperation;
|
||||||
import org.gcube.informationsystem.resourceregistry.api.rest.httputils.HTTPUtility;
|
import org.gcube.informationsystem.resourceregistry.api.rest.httputils.HTTPUtility;
|
||||||
import org.gcube.informationsystem.serialization.ElementMapper;
|
import org.gcube.informationsystem.serialization.ElementMapper;
|
||||||
|
import org.gcube.informationsystem.utils.JsonUtility;
|
||||||
import org.gcube.informationsystem.utils.TypeUtility;
|
import org.gcube.informationsystem.utils.TypeUtility;
|
||||||
import org.gcube.informationsystem.utils.UUIDManager;
|
import org.gcube.informationsystem.utils.UUIDManager;
|
||||||
import org.gcube.informationsystem.utils.UUIDUtility;
|
import org.gcube.informationsystem.utils.UUIDUtility;
|
||||||
|
@ -440,8 +443,14 @@ public class ResourceRegistryPublisherImpl extends BaseRequestInfo implements Re
|
||||||
public String create(String json)
|
public String create(String json)
|
||||||
throws SchemaViolationException, AlreadyPresentException, ResourceRegistryException {
|
throws SchemaViolationException, AlreadyPresentException, ResourceRegistryException {
|
||||||
try {
|
try {
|
||||||
ERElement e = ElementMapper.unmarshal(ERElement.class, json);
|
JsonNode jsonNode = JsonUtility.getJsonNode(json);
|
||||||
return internalCreate(e);
|
String type = TypeUtility.getTypeName(jsonNode);
|
||||||
|
UUID uuid = UUIDUtility.getUUID(jsonNode);
|
||||||
|
if(uuid==null) {
|
||||||
|
uuid = UUIDManager.getInstance().generateValidUUID();
|
||||||
|
((ObjectNode) jsonNode).put(ERElement.ID_PROPERTY, uuid.toString());
|
||||||
|
}
|
||||||
|
return create(type, json, uuid);
|
||||||
} catch (ResourceRegistryException e) {
|
} catch (ResourceRegistryException e) {
|
||||||
// logger.trace("Error Creating {}", facet, e);
|
// logger.trace("Error Creating {}", facet, e);
|
||||||
throw e;
|
throw e;
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.informationsystem.resourceregistry.publisher;
|
||||||
|
|
||||||
|
import org.junit.Ignore;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To properly use thois test you must comment
|
||||||
|
* gcube-model dependency
|
||||||
|
* @author Luca Frosini (ISTI - CNR)
|
||||||
|
*/
|
||||||
|
public class NoGcubeModelTest extends ContextTest {
|
||||||
|
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(NoGcubeModelTest.class);
|
||||||
|
|
||||||
|
public static final String GROUP = "InformationSystem";
|
||||||
|
public static final String NAME = "resource-registry";
|
||||||
|
public static final String VERSION = "1.0.0";
|
||||||
|
public static final String NEW_VERSION = "2.0.0";
|
||||||
|
|
||||||
|
protected ResourceRegistryPublisher resourceRegistryPublisher;
|
||||||
|
|
||||||
|
public NoGcubeModelTest() {
|
||||||
|
Object rrURLOBj = ContextTest.properties.get(RESOURCE_REGISTRY_URL_PROPERTY);
|
||||||
|
if(rrURLOBj!=null && !rrURLOBj.toString().isEmpty()) {
|
||||||
|
resourceRegistryPublisher = new ResourceRegistryPublisherImpl(rrURLOBj.toString());
|
||||||
|
}else {
|
||||||
|
resourceRegistryPublisher = ResourceRegistryPublisherFactory.create();
|
||||||
|
}
|
||||||
|
resourceRegistryPublisher.setIncludeMeta(true);
|
||||||
|
resourceRegistryPublisher.setAllMeta(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
@Test
|
||||||
|
public void testCreateResourceFromJson() throws Exception {
|
||||||
|
String json = "{\"type\":\"VirtualService\",\"consistsOf\":[{\"type\":\"IsIdentifiedBy\",\"target\":{\"name\":\"aaaaaa\",\"optional\":\"true\",\"group\":\"xxxxx\",\"description\":\"\",\"version\":\"cvcvvv\",\"qualifier\":\"\",\"type\":\"SoftwareFacet\",\"aaaa\":\"dddddd\"}}]}";
|
||||||
|
String ret = resourceRegistryPublisher.createResource(json);
|
||||||
|
logger.info(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue