Reorganized utilities and their usage

This commit is contained in:
Luca Frosini 2023-04-21 15:56:44 +02:00
parent 4b18898fd0
commit 010e62f4fa
7 changed files with 125 additions and 57 deletions

View File

@ -52,7 +52,7 @@ public final class ContextImpl extends EntityElementImpl implements Context {
this(); this();
this.name = name; this.name = name;
if(uuid == null){ if(uuid == null){
uuid = UUIDManager.getInstance().generateValidRandomUUID(); uuid = UUIDManager.getInstance().generateValidUUID();
} }
this.uuid = uuid; this.uuid = uuid;
this.metadata = new MetadataImpl(); this.metadata = new MetadataImpl();

View File

@ -0,0 +1,27 @@
package org.gcube.informationsystem.utils;
import java.io.IOException;
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class JsonUtility {
private static Logger logger = LoggerFactory.getLogger(JsonUtility.class);
public static JsonNode getJsonNode(String json) throws JsonProcessingException, IOException {
if(json==null || json.compareTo("")==0){
return null;
}
logger.trace("Trying to get Jsonnode from {}", json);
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(json);
return jsonNode;
}
}

View File

@ -0,0 +1,32 @@
package org.gcube.informationsystem.utils;
import java.io.IOException;
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
import org.gcube.informationsystem.base.reference.Element;
import org.gcube.informationsystem.types.TypeMapper;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class TypeUtility {
public static String getTypeName(JsonNode jsonNode){
return jsonNode.get(Element.CLASS_PROPERTY).asText();
}
public static String getTypeName(String json) throws JsonProcessingException, IOException{
JsonNode jsonNode = JsonUtility.getJsonNode(json);
return getTypeName(jsonNode);
}
public static String getTypeName(Element element){
return getTypeName(element.getClass());
}
public static <E extends Element> String getTypeName(Class<E> clz){
return TypeMapper.getType(clz);
}
}

View File

@ -56,18 +56,26 @@ public final class UUIDManager {
return new TreeSet<>(RESERVED_UUID); return new TreeSet<>(RESERVED_UUID);
} }
public UUID generateValidRandomUUID() { public UUID generateValidUUID() {
UUID uuid = UUID.randomUUID(); return generateValidUUID(null);
return validateUUID(uuid);
} }
public UUID validateUUID(UUID uuid) { public UUID generateValidUUID(UUID uuid) {
UUID ret = uuid; uuid = uuid==null ? UUID.randomUUID() : uuid;
while(RESERVED_UUID.contains(ret)) { while(RESERVED_UUID.contains(uuid)) {
ret = UUID.randomUUID(); uuid = UUID.randomUUID();
} }
return ret; return uuid;
} }
public UUID validateUUID(UUID uuid) throws Exception {
if(RESERVED_UUID.contains(uuid)) {
throw new Exception(uuid.toString() + " UUID is reserved. All the following UUID are reserved " + getAllReservedUUIDAsStrings().toString());
}
return uuid;
}
} }

View File

@ -0,0 +1,46 @@
package org.gcube.informationsystem.utils;
import java.io.IOException;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
import org.gcube.informationsystem.base.reference.IdentifiableElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class UUIDUtility {
private static Logger logger = LoggerFactory.getLogger(UUIDUtility.class);
public static UUID getUUID(JsonNode jsonNode){
if(jsonNode.has(IdentifiableElement.UUID_PROPERTY)) {
return UUID.fromString(jsonNode.get(IdentifiableElement.UUID_PROPERTY).asText());
}
return null;
}
public static UUID getUUID(String json) throws JsonProcessingException, IOException {
logger.trace("Trying to get UUID of {} ", json);
JsonNode jsonNode = JsonUtility.getJsonNode(json);
return getUUID(jsonNode);
}
public static String getUUIDAsString(JsonNode jsonNode){
return getUUID(jsonNode).toString();
}
public static String getUUIDAsString(String json) throws JsonProcessingException, IOException{
return getUUID(json).toString();
}
public static UUID fromString(String uuidString) throws Exception {
UUID uuid = UUID.fromString(uuidString);
UUIDManager.getInstance().validateUUID(uuid);
return uuid;
}
}

View File

@ -1,45 +0,0 @@
/**
*
*/
package org.gcube.informationsystem.utils;
import java.io.IOException;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.informationsystem.base.reference.IdentifiableElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class Utility {
private static Logger logger = LoggerFactory.getLogger(Utility.class);
public static UUID getUUIDFromJsonNode(JsonNode jsonNode){
UUID uuid = UUID.fromString(jsonNode.get(IdentifiableElement.UUID_PROPERTY).asText());
logger.trace("UUID got from {} is : {} ", jsonNode.toString(), uuid);
return uuid;
}
public static UUID getUUIDFromJSONString(String json) throws JsonProcessingException, IOException {
logger.trace("Trying to get UUID of {} ", json);
JsonNode jsonNode = getJSONNode(json);
return getUUIDFromJsonNode(jsonNode);
}
public static JsonNode getJSONNode(String json) throws JsonProcessingException, IOException {
if(json==null || json.compareTo("")==0){
return null;
}
logger.trace("Trying to get Jsonnode from {}", json);
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(json);
return jsonNode;
}
}

View File

@ -42,18 +42,18 @@ public class UUIDManagerTest {
Set<UUID> allReservedUUID = uuidManager.getAllReservedUUID(); Set<UUID> allReservedUUID = uuidManager.getAllReservedUUID();
UUID uuid = uuidManager.generateValidRandomUUID(); UUID uuid = uuidManager.generateValidUUID();
Assert.assertTrue(!allReservedUUID.contains(uuid)); Assert.assertTrue(!allReservedUUID.contains(uuid));
uuid = UUID.randomUUID(); uuid = UUID.randomUUID();
uuid = uuidManager.validateUUID(uuid); uuid = uuidManager.generateValidUUID(uuid);
Assert.assertTrue(!allReservedUUID.contains(uuid)); Assert.assertTrue(!allReservedUUID.contains(uuid));
for(UUID reservedUUID : allReservedUUID) { for(UUID reservedUUID : allReservedUUID) {
uuid = uuidManager.validateUUID(reservedUUID); uuid = uuidManager.generateValidUUID(reservedUUID);
Assert.assertTrue(reservedUUID.compareTo(uuid)!=0); Assert.assertTrue(reservedUUID.compareTo(uuid)!=0);
} }