Redesigning E/R instance definition

This commit is contained in:
Luca Frosini 2023-04-18 17:51:23 +02:00
parent 85f75fff2a
commit ec9e319792
33 changed files with 327 additions and 250 deletions

View File

@ -2,6 +2,11 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for Information System Model
## [v7.0.0]
- [#24992]
## [v6.0.0]
- Modified models discovery to make it easier and more powerful [#24548]

10
pom.xml
View File

@ -10,7 +10,7 @@
<groupId>org.gcube.information-system</groupId>
<artifactId>information-system-model</artifactId>
<version>6.0.0</version>
<version>7.0.0-SNAPSHOT</version>
<name>Information System Model</name>
<description>Information System Model is the reference model of the gCube Information System</description>
<packaging>jar</packaging>
@ -31,7 +31,7 @@
<dependency>
<groupId>org.gcube.distribution</groupId>
<artifactId>gcube-bom</artifactId>
<version>2.2.0</version>
<version>2.4.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
@ -62,6 +62,12 @@
<artifactId>authorization-utils</artifactId>
<version>[2.0.0, 3.0.0-SNAPSHOT)</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>

View File

@ -1,11 +1,12 @@
package org.gcube.informationsystem.base.impl.entities;
import java.io.StringWriter;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.base.impl.ElementImpl;
import org.gcube.informationsystem.base.reference.entities.EntityElement;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.serialization.ElementMapper;
/**
@ -19,20 +20,31 @@ public abstract class EntityElementImpl extends ElementImpl implements EntityEle
*/
private static final long serialVersionUID = -4488771434017342703L;
protected Header header;
protected UUID uuid;
protected Metadata metadata;
protected EntityElementImpl(){
super();
}
@Override
public Header getHeader() {
return header;
public UUID getUUID() {
return uuid;
}
@Override
public void setUUID(UUID uuid) {
this.uuid = uuid;
}
@Override
public void setHeader(Header header){
this.header = header;
public Metadata getMetadata() {
return metadata;
}
@Override
public void setMetadata(Metadata metadata){
this.metadata = metadata;
}
@Override
@ -43,7 +55,7 @@ public abstract class EntityElementImpl extends ElementImpl implements EntityEle
return stringWriter.toString();
}catch(Exception e){
try {
ElementMapper.marshal(this.header, stringWriter);
ElementMapper.marshal(this.metadata, stringWriter);
return stringWriter.toString();
} catch(Exception e1){
return super.toString();

View File

@ -1,10 +1,12 @@
package org.gcube.informationsystem.base.impl.relations;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.base.impl.ElementImpl;
import org.gcube.informationsystem.base.reference.entities.EntityElement;
import org.gcube.informationsystem.base.reference.relations.RelationElement;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
/**
* @author Luca Frosini (ISTI - CNR)
@ -17,7 +19,8 @@ public abstract class RelationElementImpl<S extends EntityElement, T extends Ent
*/
private static final long serialVersionUID = 28704968813390512L;
protected Header header;
protected UUID uuid;
protected Metadata metadata;
protected S source;
protected T target;
@ -25,21 +28,31 @@ public abstract class RelationElementImpl<S extends EntityElement, T extends Ent
protected RelationElementImpl() {
super();
}
protected RelationElementImpl(S source, T target) {
this();
this.source = source;
this.target = target;
}
@Override
public UUID getUUID() {
return uuid;
}
@Override
public Header getHeader() {
return header;
public void setUUID(UUID uuid) {
this.uuid = uuid;
}
@Override
public void setHeader(Header header){
this.header = header;
public Metadata getMetadata() {
return metadata;
}
@Override
public void setMetadata(Metadata metadata){
this.metadata = metadata;
}
@Override

View File

@ -1,17 +1,24 @@
package org.gcube.informationsystem.base.reference;
import org.gcube.informationsystem.model.reference.properties.Header;
import java.util.UUID;
import org.gcube.informationsystem.model.reference.properties.Metadata;
/**
* This interfaces is an helper to identify elements could be identified via {@link Header}
* This interfaces is an helper to identify elements could be identified via {@link Metadata}
*
* @author Luca Frosini (ISTI - CNR)
*/
public interface IdentifiableElement extends Element {
public static final String HEADER_PROPERTY = "header";
public Header getHeader();
public static final String UUID_PROPERTY = "@uuid";
public static final String METADATA_PROPERTY = "@metadata";
public void setHeader(Header header);
public UUID getUUID();
public void setUUID(UUID uuid);
public Metadata getMetadata();
public void setMetadata(Metadata metadata);
}

View File

@ -1,9 +1,11 @@
package org.gcube.informationsystem.base.reference.entities;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.gcube.informationsystem.base.reference.Element;
import org.gcube.informationsystem.base.reference.IdentifiableElement;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.types.annotations.Abstract;
import org.gcube.informationsystem.types.annotations.ISProperty;
import org.gcube.informationsystem.types.reference.Change;
@ -22,9 +24,18 @@ public interface EntityElement extends Element, IdentifiableElement {
public static final String NAME = "EntityElement"; //Entity.class.getSimpleName();
/* Overriding getHeader method to create Header property in type */
@ISProperty(name=HEADER_PROPERTY, mandatory=true, nullable=false, description="Metadata associated with the instance that is automatically created/updated by the system.")
@ISProperty(name=METADATA_PROPERTY, mandatory=true, nullable=false, description="Metadata associated with the instance that is automatically created/updated by the system.")
@Override
public Header getHeader();
public Metadata getMetadata();
@Override
public void setMetadata(Metadata metadata);
@ISProperty(name = UUID_PROPERTY, description = "This UUID is be used to identify the instance univocally.", readonly = true, mandatory = true, nullable = false)
@Override
public UUID getUUID();
@Override
public void setUUID(UUID uuid);
}

View File

@ -1,11 +1,13 @@
package org.gcube.informationsystem.base.reference.relations;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.annotation.JsonGetter;
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
import org.gcube.informationsystem.base.reference.Element;
import org.gcube.informationsystem.base.reference.IdentifiableElement;
import org.gcube.informationsystem.base.reference.entities.EntityElement;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.types.annotations.Abstract;
import org.gcube.informationsystem.types.annotations.ISProperty;
import org.gcube.informationsystem.types.reference.Change;
@ -23,13 +25,22 @@ public interface RelationElement<S extends EntityElement, T extends EntityElemen
public static final String NAME = "RelationElement"; // RelationElement.class.getSimpleName();
public static final String SOURCE_PROPERTY = "source";
public static final String TARGET_PROPERTY = "target";
public static final String SOURCE_PROPERTY = "@source";
public static final String TARGET_PROPERTY = "@target";
/* Overriding getHeader method to create Header property in type */
@ISProperty(name = HEADER_PROPERTY, mandatory = true, nullable = false)
@ISProperty(name=METADATA_PROPERTY, mandatory=true, nullable=false, description="Metadata associated with the instance that is automatically created/updated by the system.")
@Override
public Header getHeader();
public Metadata getMetadata();
@Override
public void setMetadata(Metadata metadata);
@ISProperty(name = UUID_PROPERTY, description = "This UUID is be used to identify the instance univocally.", readonly = true, mandatory = true, nullable = false)
@Override
public UUID getUUID();
@Override
public void setUUID(UUID uuid);
@JsonGetter(value=SOURCE_PROPERTY)
public S getSource();

View File

@ -14,7 +14,7 @@ import org.gcube.informationsystem.base.impl.entities.EntityElementImpl;
import org.gcube.informationsystem.contexts.impl.relations.IsParentOfImpl;
import org.gcube.informationsystem.contexts.reference.entities.Context;
import org.gcube.informationsystem.contexts.reference.relations.IsParentOf;
import org.gcube.informationsystem.model.impl.properties.HeaderImpl;
import org.gcube.informationsystem.model.impl.properties.MetadataImpl;
import org.gcube.informationsystem.utils.UUIDManager;
/**
@ -28,6 +28,7 @@ public final class ContextImpl extends EntityElementImpl implements Context {
*/
private static final long serialVersionUID = -5070590328223454087L;
protected UUID uuid;
protected String name;
protected IsParentOf parent;
@ -39,6 +40,10 @@ public final class ContextImpl extends EntityElementImpl implements Context {
this.children = new ArrayList<>();
}
public ContextImpl(UUID uuid) {
this(null, uuid);
}
public ContextImpl(String name) {
this(name, null);
}
@ -47,9 +52,23 @@ public final class ContextImpl extends EntityElementImpl implements Context {
this();
this.name = name;
if(uuid == null){
uuid = UUIDManager.generateValidRandomUUID();
uuid = UUIDManager.getInstance().generateValidRandomUUID();
}
this.header = new HeaderImpl(uuid);
this.uuid = uuid;
this.metadata = new MetadataImpl();
}
/**
* @return the uuid
*/
@Override
public UUID getUUID() {
return uuid;
}
@Override
public void setUUID(UUID uuid) {
this.uuid = uuid;
}
@Override
@ -72,8 +91,8 @@ public final class ContextImpl extends EntityElementImpl implements Context {
public void setParent(UUID uuid) {
Context parent = null;
if(uuid!=null) {
parent = new ContextImpl();
parent.setHeader(new HeaderImpl(uuid));
parent = new ContextImpl(uuid);
parent.setMetadata(new MetadataImpl());
}
setParent(parent);
}
@ -121,8 +140,8 @@ public final class ContextImpl extends EntityElementImpl implements Context {
@Override
public void addChild(UUID uuid) {
Context child = new ContextImpl();
child.setHeader(new HeaderImpl(uuid));
Context child = new ContextImpl(uuid);
child.setMetadata(new MetadataImpl());
addChild(child);
}

View File

@ -5,7 +5,7 @@ package org.gcube.informationsystem.model.impl.entities;
import java.util.UUID;
import org.gcube.informationsystem.model.impl.properties.HeaderImpl;
import org.gcube.informationsystem.model.impl.properties.MetadataImpl;
import org.gcube.informationsystem.model.reference.entities.Facet;
import org.gcube.informationsystem.types.reference.Change;
import org.gcube.informationsystem.types.reference.TypeMetadata;
@ -25,7 +25,8 @@ public class DummyFacet extends FacetImpl implements Facet {
public DummyFacet(UUID uuid) {
super();
this.header = new HeaderImpl(uuid);
this.uuid = uuid;
this.metadata = new MetadataImpl();
}
public DummyFacet(){

View File

@ -5,7 +5,7 @@ package org.gcube.informationsystem.model.impl.entities;
import java.util.UUID;
import org.gcube.informationsystem.model.impl.properties.HeaderImpl;
import org.gcube.informationsystem.model.impl.properties.MetadataImpl;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.types.reference.Change;
import org.gcube.informationsystem.types.reference.TypeMetadata;
@ -25,7 +25,8 @@ public class DummyResource extends ResourceImpl implements Resource {
public DummyResource(UUID uuid){
super();
this.header = new HeaderImpl(uuid);
this.uuid = uuid;
this.metadata = new MetadataImpl();
}
public DummyResource(){

View File

@ -20,7 +20,7 @@ public abstract class EntityImpl extends EntityElementImpl implements Entity {
protected EntityImpl(){
super();
this.header = null;
this.metadata = null;
}
}

View File

@ -177,14 +177,12 @@ public abstract class ResourceImpl extends EntityImpl implements Resource {
throw new RuntimeException(message);
}
if (relation.getSource().getHeader()!= null &&
relation.getSource().getHeader().getUUID() != null &&
this.header !=null &&
this.header.getUUID() != null &&
relation.getSource().getHeader().getUUID().compareTo(this.header.getUUID())!=0) {
if (relation.getSource().getMetadata()!= null &&
relation.getSource().getUUID() != null &&
this.metadata !=null &&
this.uuid != null &&
relation.getSource().getUUID().compareTo(this.uuid)!=0) {
throw new RuntimeException(message);
}
if(relation.getSource()!=this){

View File

@ -5,13 +5,13 @@ package org.gcube.informationsystem.model.impl.properties;
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.model.reference.properties.Vault;
import org.gcube.informationsystem.model.reference.properties.Encrypted;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value = Vault.NAME)
public class VaultImpl extends PropertyImpl implements Vault {
@JsonTypeName(value = Encrypted.NAME)
public class EncryptedImpl extends PropertyImpl implements Encrypted {
/**
* Generated Serial Version UID
@ -21,7 +21,7 @@ public class VaultImpl extends PropertyImpl implements Vault {
@JsonIgnore
protected String value;
public VaultImpl() {
public EncryptedImpl() {
super();
}

View File

@ -4,49 +4,30 @@
package org.gcube.informationsystem.model.impl.properties;
import java.util.Date;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=Header.NAME)
public final class HeaderImpl extends PropertyImpl implements Header {
@JsonTypeName(value=Metadata.NAME)
public final class MetadataImpl extends PropertyImpl implements Metadata {
/**
* Generated Serial Version UID
*/
private static final long serialVersionUID = 5102553511155113169L;
protected UUID uuid;
protected String createdBy;
protected Date creationTime;
protected String lastUpdateBy;
protected Date lastUpdateTime;
public HeaderImpl() {
public MetadataImpl() {
super();
}
public HeaderImpl(UUID uuid) {
this.uuid = uuid;
}
/**
* @return the uuid
*/
@Override
public UUID getUUID() {
return uuid;
}
@Override
public void setUUID(UUID uuid) {
this.uuid = uuid;
}
@Override
public String getCreatedBy() {
return createdBy;

View File

@ -3,7 +3,7 @@ package org.gcube.informationsystem.model.reference.properties;
import org.gcube.com.fasterxml.jackson.annotation.JsonGetter;
import org.gcube.com.fasterxml.jackson.annotation.JsonSetter;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.model.impl.properties.VaultImpl;
import org.gcube.informationsystem.model.impl.properties.EncryptedImpl;
import org.gcube.informationsystem.types.annotations.ISProperty;
import org.gcube.informationsystem.types.reference.Change;
import org.gcube.informationsystem.types.reference.TypeMetadata;
@ -12,12 +12,12 @@ import org.gcube.informationsystem.utils.Version;
/**
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=VaultImpl.class)
@TypeMetadata(name = Vault.NAME, description = "This type is used to properly manage values must be stored safely (e.g. encrypted) in the IS.", version = Version.MINIMAL_VERSION_STRING)
@JsonDeserialize(as=EncryptedImpl.class)
@TypeMetadata(name = Encrypted.NAME, description = "This type is used to properly manage values must be stored safely (e.g. encrypted) in the IS.", version = Version.MINIMAL_VERSION_STRING)
@Change(version = Version.MINIMAL_VERSION_STRING, description = Version.MINIMAL_VERSION_DESCRIPTION)
public interface Vault extends Property {
public interface Encrypted extends Property {
public static final String NAME = "Vault"; // Vault.class.getSimpleName();
public static final String NAME = "Encrypted"; // Encrypted.class.getSimpleName();
public static final String VALUE = "value";

View File

@ -4,12 +4,11 @@
package org.gcube.informationsystem.model.reference.properties;
import java.util.Date;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.annotation.JsonFormat;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.base.reference.Element;
import org.gcube.informationsystem.model.impl.properties.HeaderImpl;
import org.gcube.informationsystem.model.impl.properties.MetadataImpl;
import org.gcube.informationsystem.types.annotations.Final;
import org.gcube.informationsystem.types.annotations.ISProperty;
import org.gcube.informationsystem.types.reference.Change;
@ -17,31 +16,28 @@ import org.gcube.informationsystem.types.reference.TypeMetadata;
import org.gcube.informationsystem.utils.Version;
/**
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Header
*
* @author Luca Frosini (ISTI - CNR)
*/
@JsonDeserialize(as=HeaderImpl.class)
@TypeMetadata(name = Header.NAME, description = "This type provides metadata per every IdentifiableElement", version = Version.MINIMAL_VERSION_STRING)
@JsonDeserialize(as=MetadataImpl.class)
@TypeMetadata(name = Metadata.NAME, description = "This type provides metadata per every IdentifiableElement", version = Version.MINIMAL_VERSION_STRING)
@Change(version = Version.MINIMAL_VERSION_STRING, description = Version.MINIMAL_VERSION_DESCRIPTION)
@Final
public interface Header extends Property {
public interface Metadata extends Property {
public static final String NAME = "Header"; // Header.class.getSimpleName();
public static final String NAME = "Metadata"; // Metadata.class.getSimpleName();
/**
* Used to set Creator when the user is not known
*/
public static final String UNKNOWN_USER = "UNKNOWN_USER";
public static final String UUID_PROPERTY = "uuid";
public static final String CREATED_BY_PROPERTY = "createdBy";
public static final String CREATION_TIME_PROPERTY = "creationTime";
public static final String LAST_UPDATE_BY_PROPERTY = "lastUpdateBy";
public static final String LAST_UPDATE_TIME_PROPERTY = "lastUpdateTime";
/**
* Used when requested to include contexts in header.
* Used when requested to include contexts in metadata.
* This is not a native property (it is just generated by server for administration clients convenience)
*/
public static final String __CONTEXTS = "contexts";
@ -59,10 +55,5 @@ public interface Header extends Property {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = Element.DATETIME_PATTERN)
@ISProperty(name = LAST_UPDATE_TIME_PROPERTY, description = "Last Update time. At creation time it assumes the same value of " + CREATION_TIME_PROPERTY + ". It is represented in the format " + Element.DATETIME_PATTERN, mandatory = true, nullable = false)
public Date getLastUpdateTime();
@ISProperty(name = UUID_PROPERTY, description = "This UUID is be used to identify the Entity or the Relation univocally.", readonly = true, mandatory = true, nullable = false)
public UUID getUUID();
public void setUUID(UUID uuid);
}

View File

@ -37,7 +37,7 @@ public interface Relation<S extends Resource, T extends Entity> extends Relation
public static final String NAME = "Relation"; //Relation.class.getSimpleName();
public static final String PROPAGATION_CONSTRAINT_PROPERTY = "propagationConstraint";
public static final String PROPAGATION_CONSTRAINT_PROPERTY = "@propagationConstraint";
@JsonIgnoreProperties({Resource.CONSISTS_OF_PROPERTY, Resource.IS_RELATED_TO_PROPERTY})
@JsonGetter(value = SOURCE_PROPERTY)

View File

@ -8,6 +8,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.annotation.JsonGetter;
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
@ -20,7 +21,7 @@ import org.gcube.informationsystem.base.reference.Element;
import org.gcube.informationsystem.base.reference.entities.EntityElement;
import org.gcube.informationsystem.base.reference.properties.PropertyElement;
import org.gcube.informationsystem.base.reference.relations.RelationElement;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.types.TypeMapper;
import org.gcube.informationsystem.types.annotations.Abstract;
import org.gcube.informationsystem.types.annotations.Final;
@ -57,8 +58,8 @@ public class TypeImpl implements Type {
DEFAULT_CHANGELOG_MAP_KEY_AS_STRING.put(Version.MINIMAL_VERSION_STRING, Version.MINIMAL_VERSION_DESCRIPTION);
}
protected Header header;
protected UUID uuid;
protected Metadata metadata;
protected String name;
protected String description;
@ -186,15 +187,25 @@ public class TypeImpl implements Type {
}
}
@Override
public Header getHeader() {
return header;
public UUID getUUID() {
return uuid;
}
@Override
public void setHeader(Header header) {
this.header = header;
public void setUUID(UUID uuid) {
this.uuid = uuid;
}
@Override
public Metadata getMetadata() {
return metadata;
}
@Override
public void setMetadata(Metadata metadata) {
this.metadata = metadata;
}
@Override

View File

@ -11,7 +11,7 @@ import org.gcube.informationsystem.base.reference.entities.EntityElement;
import org.gcube.informationsystem.contexts.reference.entities.Context;
import org.gcube.informationsystem.model.reference.entities.Facet;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate;
import org.gcube.informationsystem.serialization.ElementMapper;
import org.gcube.informationsystem.types.impl.TypeImpl;
@ -91,16 +91,16 @@ public class EntityTypeImpl extends TypeImpl implements EntityType {
* We need to copy them.
*/
protected Header header;
protected Metadata metadata;
@Override
public Header getHeader() {
return header;
public Metadata getMetadata() {
return metadata;
}
@Override
public void setHeader(Header header){
this.header = header;
public void setMetadata(Metadata metadata){
this.metadata = metadata;
}
@Override
@ -111,7 +111,7 @@ public class EntityTypeImpl extends TypeImpl implements EntityType {
return stringWriter.toString();
}catch(Exception e){
try {
ElementMapper.marshal(this.header, stringWriter);
ElementMapper.marshal(this.metadata, stringWriter);
return stringWriter.toString();
} catch(Exception e1){
return super.toString();

View File

@ -83,7 +83,7 @@ public final class PropertyTypeImpl<P extends PropertyElement> extends TypeImpl
return stringWriter.toString();
}catch(Exception e){
try {
ElementMapper.marshal(this.header, stringWriter);
ElementMapper.marshal(this.metadata, stringWriter);
return stringWriter.toString();
} catch(Exception e1){
return super.toString();

View File

@ -167,7 +167,7 @@ public class RelationTypeImpl<S extends EntityType, T extends EntityType>
return stringWriter.toString();
}catch(Exception e){
try {
ElementMapper.marshal(this.header, stringWriter);
ElementMapper.marshal(this.metadata, stringWriter);
return stringWriter.toString();
} catch(Exception e1){
return super.toString();

View File

@ -6,7 +6,7 @@ import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.gcube.informationsystem.base.reference.IdentifiableElement;
import org.gcube.informationsystem.base.reference.properties.PropertyElement;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.types.annotations.Final;
import org.gcube.informationsystem.types.annotations.ISProperty;
import org.gcube.informationsystem.types.impl.properties.PropertyTypeImpl;
@ -27,10 +27,10 @@ public interface PropertyType<P extends PropertyElement> extends PropertyElement
public static final String NAME = "PropertyType"; // PropertyTypeDefinition.class.getSimpleName();
@ISProperty(name=IdentifiableElement.HEADER_PROPERTY, mandatory=true, nullable=false)
public Header getHeader();
@ISProperty(name=IdentifiableElement.METADATA_PROPERTY, mandatory=true, nullable=false)
public Metadata getMetadata();
public void setHeader(Header header);
public void setMetadata(Metadata metadata);
/* TypeDefinition is just a Java useful class. The type is not created in the IS. Hence the fields must be redefined */

View File

@ -10,8 +10,17 @@ import java.util.UUID;
*/
public final class UUIDManager {
public static final Set<String> RESERVED_UUID_STRING;
public static final Set<UUID> RESERVED_UUID;
private static final Set<String> RESERVED_UUID_STRING;
private static final Set<UUID> RESERVED_UUID;
private static UUIDManager uuidManager;
public static UUIDManager getInstance() {
if(uuidManager==null) {
uuidManager = new UUIDManager();
}
return uuidManager;
}
private UUIDManager() {
@ -31,27 +40,29 @@ public final class UUIDManager {
}
}
public static boolean isReservedUUID(UUID uuid) {
public boolean isReservedUUID(UUID uuid) {
return RESERVED_UUID.contains(uuid);
}
public static boolean isReservedUUID(String uuid) {
public boolean isReservedUUID(String uuid) {
return RESERVED_UUID_STRING.contains(uuid);
}
public static Set<String> getAllReservedUUIDAsStrings(){
public Set<String> getAllReservedUUIDAsStrings(){
return new TreeSet<>(RESERVED_UUID_STRING);
}
public static Set<UUID> getAllReservedUUID(){
public Set<UUID> getAllReservedUUID(){
return new TreeSet<>(RESERVED_UUID);
}
public static UUID generateValidRandomUUID() {
public UUID generateValidRandomUUID() {
UUID generated = UUID.randomUUID();
while(RESERVED_UUID.contains(generated)) {
generated = UUID.randomUUID();
}
return generated;
}
}

View File

@ -9,8 +9,7 @@ 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.model.reference.entities.Entity;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.base.reference.IdentifiableElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -22,14 +21,13 @@ public class Utility {
private static Logger logger = LoggerFactory.getLogger(Utility.class);
public static UUID getUUIDFromJsonNode(JsonNode jsonNode){
JsonNode header = jsonNode.get(Entity.HEADER_PROPERTY);
UUID uuid = UUID.fromString(header.get(Header.UUID_PROPERTY).asText());
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 from {} of {} ", Header.class.getSimpleName(), json);
logger.trace("Trying to get UUID of {} ", json);
JsonNode jsonNode = getJSONNode(json);
return getUUIDFromJsonNode(jsonNode);
}

View File

@ -15,7 +15,7 @@ import org.gcube.common.authorization.utils.secret.SecretUtility;
import org.gcube.common.keycloak.KeycloakClientFactory;
import org.gcube.common.keycloak.model.TokenResponse;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.slf4j.Logger;
@ -112,7 +112,7 @@ public class ContextTest {
}
public static String getUser() {
String user = Header.UNKNOWN_USER;
String user = Metadata.UNKNOWN_USER;
try {
user = SecretManagerProvider.instance.get().getUser().getUsername();
} catch(Exception e) {

View File

@ -1,67 +0,0 @@
package org.gcube.informationsystem.model.impl.properties;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.core.JsonParseException;
import org.gcube.com.fasterxml.jackson.databind.JsonMappingException;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Property;
import org.gcube.informationsystem.serialization.ElementMapper;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class HeaderTest {
private static Logger logger = LoggerFactory.getLogger(HeaderTest.class);
@Test
public void headerTest() throws Exception {
HeaderImpl header = new HeaderImpl(UUID.randomUUID());
Date date = Calendar.getInstance().getTime();
header.creationTime = date;
header.lastUpdateTime = date;
header.createdBy = Header.UNKNOWN_USER;
String json = ElementMapper.marshal(header);
logger.debug(json);
Property property = ElementMapper.unmarshal(Property.class, json);
Assert.assertTrue(property instanceof Header);
Assert.assertTrue(((Header) property).getCreationTime().compareTo(date)==0);
Assert.assertTrue(((Header) property).getLastUpdateTime().compareTo(date)==0);
logger.debug(ElementMapper.marshal(property));
Header h = ElementMapper.unmarshal(Header.class, json);
Assert.assertTrue(property instanceof Header);
Assert.assertTrue(h.getCreationTime().compareTo(date)==0);
Assert.assertTrue(h.getLastUpdateTime().compareTo(date)==0);
logger.debug(ElementMapper.marshal(h));
}
@Test
public void testContextsInHeader() throws JsonParseException, JsonMappingException, IOException {
String headerJson = "{\"@class\":\"Header\",\"uuid\":\"cee84aaf-030c-4170-b554-836e7df3f611\",\"creator\":\"UNKNOWN_USER\",\"modifiedBy\":null,\"creationTime\":\"2020-11-09 10:01:25.415 +0000\",\"lastUpdateTime\":\"2020-11-09 10:01:25.415 +0000\",\"contexts\":[\"167114e0-9027-4e9e-83af-57973a8f8f08\",\"bad5f350-345c-11e9-9f49-cef9b1608c3f\"]}";
Property property = ElementMapper.unmarshal(Property.class, headerJson);
logger.debug("{}", property);
Header h = ElementMapper.unmarshal(Header.class, headerJson);
logger.debug("{}", h);
@SuppressWarnings("unchecked")
List<String> contexts = (List<String>) h.getAdditionalProperty(Header.__CONTEXTS);
logger.debug("Contexts UUIDs are {}", contexts);
}
}

View File

@ -0,0 +1,77 @@
package org.gcube.informationsystem.model.impl.properties;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import org.gcube.com.fasterxml.jackson.core.JsonParseException;
import org.gcube.com.fasterxml.jackson.databind.JsonMappingException;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.model.reference.properties.Property;
import org.gcube.informationsystem.serialization.ElementMapper;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class MetadataTest {
private static Logger logger = LoggerFactory.getLogger(MetadataTest.class);
@Test
public void metadataTest() throws Exception {
MetadataImpl metadata = new MetadataImpl();
Date date = Calendar.getInstance().getTime();
metadata.creationTime = date;
metadata.lastUpdateTime = date;
metadata.createdBy = Metadata.UNKNOWN_USER;
metadata.lastUpdateBy = Metadata.UNKNOWN_USER;
String json = ElementMapper.marshal(metadata);
logger.debug(json);
Property property = ElementMapper.unmarshal(Property.class, json);
Assert.assertTrue(property instanceof Metadata);
Assert.assertTrue(((Metadata) property).getCreationTime().compareTo(date)==0);
Assert.assertTrue(((Metadata) property).getLastUpdateTime().compareTo(date)==0);
logger.debug(ElementMapper.marshal(property));
Metadata h = ElementMapper.unmarshal(Metadata.class, json);
Assert.assertTrue(property instanceof Metadata);
Assert.assertTrue(h.getCreationTime().compareTo(date)==0);
Assert.assertTrue(h.getLastUpdateTime().compareTo(date)==0);
logger.debug(ElementMapper.marshal(h));
}
@Test
public void testContextsInMetadata() throws JsonParseException, JsonMappingException, IOException {
String metadataJson =
"{"
+ "\"@class\":\"Metadata\","
+ "\"createdBy\":\"UNKNOWN_USER\","
+ "\"lastUpdateBy\":\"UNKNOWN_USER\","
+ "\"creationTime\":\"2020-11-09 10:01:25.415 +0000\","
+ "\"lastUpdateTime\":\"2020-11-09 10:01:25.415 +0000\","
+ "\"contexts\": {"
+ "\"bad5f350-345c-11e9-9f49-cef9b1608c3f\": \"/gcube/devNext/NextNext\""
+ "}"
+ "}";
Property property = ElementMapper.unmarshal(Property.class, metadataJson);
logger.debug("{}", property);
Metadata h = ElementMapper.unmarshal(Metadata.class, metadataJson);
logger.debug("{}", h);
@SuppressWarnings("unchecked")
Map<String,String> contexts = (Map<String, String>) h.getAdditionalProperty(Metadata.__CONTEXTS);
logger.debug("Contexts UUIDs are {}", contexts);
}
}

View File

@ -1,7 +1,6 @@
package org.gcube.informationsystem.model.impl.properties;
import java.util.Calendar;
import java.util.UUID;
import org.gcube.informationsystem.base.reference.Element;
import org.gcube.informationsystem.model.reference.entities.Facet;
@ -116,48 +115,38 @@ public class PropagationConstraintTest {
"}";
logger.debug(pcString);
HeaderImpl header = new HeaderImpl();
header.setUUID(UUID.randomUUID());
header.createdBy = "luca.frosini";
header.lastUpdateBy = "luca.frosini";
header.creationTime = Calendar.getInstance().getTime();
header.lastUpdateTime = Calendar.getInstance().getTime();
MetadataImpl metadata = new MetadataImpl();
metadata.createdBy = "luca.frosini";
metadata.lastUpdateBy = "luca.frosini";
metadata.creationTime = Calendar.getInstance().getTime();
metadata.lastUpdateTime = Calendar.getInstance().getTime();
String hString = ElementMapper.marshal(header);
String hString = ElementMapper.marshal(metadata);
String consistsOfString = "{" +
"\"" + Element.CLASS_PROPERTY + "\":\"" + ConsistsOf.NAME + "\"," +
"\"" + ConsistsOf.PROPAGATION_CONSTRAINT_PROPERTY + "\":"+ pcString + "," +
"\"" + ConsistsOf.HEADER_PROPERTY + "\": " + hString + "," +
"\"" + ConsistsOf.METADATA_PROPERTY + "\": " + hString + "," +
"\"" + ConsistsOf.SOURCE_PROPERTY + "\":{" +
"\"@uuid\":\"4a971915-ca90-48cf-9975-63ee2dd28605\"," +
"\"@class\":\"MyEService\"," +
"\"@superClasses\":[\"EService\", \"Service\", \"Resource\"]," +
"\"header\":"+ "{" +
"\"@class\":\"Header\"," +
"\"uuid\":\"4a971915-ca90-48cf-9975-63ee2dd28605\"," +
"\"creator\":null, " +
"\"creationTime\":null, " +
"\"lastUpdateTime\":null}" +
"\"" + ConsistsOf.METADATA_PROPERTY + "\": " + hString +
"}," +
"\"" + ConsistsOf.TARGET_PROPERTY + "\":{" +
"\"@uuid\":\"3ace4bd0-e5cd-49a3-97a8-a0a9468ce6d4\"," +
"\"@class\":\"MySoftwareFacet\"," +
"\"@superClasses\":[\"SoftwareFacet\", \"Facet\"]," +
"\"header\":"+ "{" +
"\"@class\":\"Header\"," +
"\"uuid\":\"3ace4bd0-e5cd-49a3-97a8-a0a9468ce6d4\"," +
"\"creator\":null, " +
"\"creationTime\":null, " +
"\"lastUpdateTime\":null" +
"}" +
",\"name\":\"WhnManager\"," +
"\"" + ConsistsOf.METADATA_PROPERTY + "\": " + hString + "," +
"\"name\":\"WhnManager\"," +
"\"group\":\"VREManagement\"," +
"\"version\":\"2.0.0-SNAPSHOT\"," +
"\"description\":\"Web Hosting Node Service\"," +
"\"qualifier\":null,\"optional\":false" +
"}" +
"}";
logger.debug(consistsOfString);
logger.debug("--- {}", consistsOfString);
@SuppressWarnings("unchecked")
ConsistsOf<Resource,Facet> consistsOf = ElementMapper.unmarshal(ConsistsOf.class, consistsOfString);

View File

@ -6,7 +6,7 @@ package org.gcube.informationsystem.types;
import org.gcube.informationsystem.base.reference.Element;
import org.gcube.informationsystem.base.reference.properties.PropertyElement;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
import org.junit.Test;
import org.slf4j.Logger;
@ -21,7 +21,7 @@ public class EntitySchemaDefinition {
@Test
public void test() throws Exception {
Class<? extends PropertyElement> clz = Header.class;
Class<? extends PropertyElement> clz = Metadata.class;
String json = TypeMapper.serializeType(clz);
logger.trace(json);
}

View File

@ -8,10 +8,10 @@ import org.gcube.informationsystem.contexts.reference.relations.IsParentOf;
import org.gcube.informationsystem.model.reference.entities.Entity;
import org.gcube.informationsystem.model.reference.entities.Facet;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.model.reference.properties.PropagationConstraint;
import org.gcube.informationsystem.model.reference.properties.Property;
import org.gcube.informationsystem.model.reference.properties.Vault;
import org.gcube.informationsystem.model.reference.properties.Encrypted;
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
import org.gcube.informationsystem.model.reference.relations.Relation;
@ -89,9 +89,9 @@ public class SerializationTest {
logger.info(ElementMapper.marshal(property));
@SuppressWarnings("unchecked")
PropertyType<Header> header = (PropertyType<Header>) TypeMapper.createTypeDefinition(Header.class);
Assert.assertTrue(header.getAccessType()==AccessType.PROPERTY);
logger.info(ElementMapper.marshal(header));
PropertyType<Metadata> metadataType = (PropertyType<Metadata>) TypeMapper.createTypeDefinition(Metadata.class);
Assert.assertTrue(metadataType.getAccessType()==AccessType.PROPERTY);
logger.info(ElementMapper.marshal(metadataType));
@SuppressWarnings("unchecked")
PropertyType<PropagationConstraint> propagationConstraint = (PropertyType<PropagationConstraint>) TypeMapper.createTypeDefinition(PropagationConstraint.class);
@ -99,7 +99,7 @@ public class SerializationTest {
logger.info(ElementMapper.marshal(propagationConstraint));
@SuppressWarnings("unchecked")
PropertyType<Vault> vault = (PropertyType<Vault>) TypeMapper.createTypeDefinition(Vault.class);
PropertyType<Encrypted> vault = (PropertyType<Encrypted>) TypeMapper.createTypeDefinition(Encrypted.class);
Assert.assertTrue(vault.getAccessType()==AccessType.PROPERTY);
logger.info(ElementMapper.marshal(vault));
@ -198,19 +198,19 @@ public class SerializationTest {
@Test
public void testTypeSerialization() throws Exception {
String serialized = TypeMapper.serializeType(Header.class);
String serialized = TypeMapper.serializeType(Metadata.class);
logger.info(serialized);
@SuppressWarnings("unchecked")
PropertyType<Header> propertyType = (PropertyType<Header>) TypeMapper.deserializeTypeDefinition(serialized);
PropertyType<Metadata> propertyType = (PropertyType<Metadata>) TypeMapper.deserializeTypeDefinition(serialized);
Version typeVersion = propertyType.getVersion();
logger.debug("Version {}", typeVersion.toString());
logger.info(ElementMapper.marshal(propertyType));
String json = "{\"@class\":\"PropertyType\",\"header\":null,\"name\":\"Header\",\"description\":\"This class provides metadata per every IdentifiableElement\",\"superClasses\":[\"Property\"],\"properties\":[{\"@class\":\"PropertyDefinition\",\"name\":\"creationTime\",\"description\":\"Creation time. It represents the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970, UTC.\",\"mandatory\":true,\"readonly\":true,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":null,\"type\":\"Date\"},{\"@class\":\"PropertyDefinition\",\"name\":\"lastUpdateTime\",\"description\":\"Last Update time. At creation time it assumes the same value of creationTime. It represents the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970, UTC.\",\"mandatory\":true,\"readonly\":false,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":null,\"type\":\"Date\"},{\"@class\":\"PropertyDefinition\",\"name\":\"createdBy\",\"description\":\"The user that created the Entity or the Relation. It is initialized at creation time. \",\"mandatory\":true,\"readonly\":true,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":null,\"type\":\"String\"},{\"@class\":\"PropertyDefinition\",\"name\":\"uuid\",\"description\":\"This UUID is be used to identify the Entity or the Relation univocally.\",\"mandatory\":true,\"readonly\":true,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":\"^([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}){1}$\",\"type\":\"String\"},{\"@class\":\"PropertyDefinition\",\"name\":\"lastUpdateBy\",\"description\":\"The user that made the last update to the Entity or the Relation. At creation time, it assumes the same value of creator.\",\"mandatory\":true,\"readonly\":false,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":null,\"type\":\"String\"}],\"accessType\":\"PROPERTY\",\"abstract\":false,\"version\":\"1.0.0\",\"changelog\":{\"1.0.0\":\"First Version\"}}";
String json = "{\"@class\":\"PropertyType\",\"metadata\":null,\"name\":\"Metadata\",\"description\":\"This class provides metadata per every IdentifiableElement\",\"superClasses\":[\"Property\"],\"properties\":[{\"@class\":\"PropertyDefinition\",\"name\":\"creationTime\",\"description\":\"Creation time. It represents the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970, UTC.\",\"mandatory\":true,\"readonly\":true,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":null,\"type\":\"Date\"},{\"@class\":\"PropertyDefinition\",\"name\":\"lastUpdateTime\",\"description\":\"Last Update time. At creation time it assumes the same value of creationTime. It represents the difference, measured in milliseconds, between the creation time and midnight, January 1, 1970, UTC.\",\"mandatory\":true,\"readonly\":false,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":null,\"type\":\"Date\"},{\"@class\":\"PropertyDefinition\",\"name\":\"createdBy\",\"description\":\"The user that created the Entity or the Relation. It is initialized at creation time. \",\"mandatory\":true,\"readonly\":true,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":null,\"type\":\"String\"},{\"@class\":\"PropertyDefinition\",\"name\":\"uuid\",\"description\":\"This UUID is be used to identify the Entity or the Relation univocally.\",\"mandatory\":true,\"readonly\":true,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":\"^([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}){1}$\",\"type\":\"String\"},{\"@class\":\"PropertyDefinition\",\"name\":\"lastUpdateBy\",\"description\":\"The user that made the last update to the Entity or the Relation. At creation time, it assumes the same value of creator.\",\"mandatory\":true,\"readonly\":false,\"notnull\":true,\"max\":null,\"min\":null,\"regexp\":null,\"type\":\"String\"}],\"accessType\":\"PROPERTY\",\"abstract\":false,\"version\":\"1.0.0\",\"changelog\":{\"1.0.0\":\"First Version\"}}";
logger.info(json);
@SuppressWarnings("unchecked")
PropertyType<Header> headerType = (PropertyType<Header>) TypeMapper.deserializeTypeDefinition(json);
logger.info(ElementMapper.marshal(headerType));
PropertyType<Metadata> metadataType = (PropertyType<Metadata>) TypeMapper.deserializeTypeDefinition(json);
logger.info(ElementMapper.marshal(metadataType));
}

View File

@ -1,7 +1,7 @@
package org.gcube.informationsystem.types;
import org.gcube.informationsystem.model.reference.properties.Header;
import org.gcube.informationsystem.model.reference.properties.Vault;
import org.gcube.informationsystem.model.reference.properties.Metadata;
import org.gcube.informationsystem.model.reference.properties.Encrypted;
import org.gcube.informationsystem.types.PropertyTypeName.BaseType;
import org.junit.Assert;
import org.junit.Test;
@ -17,7 +17,7 @@ public class TypeNameTest {
@Test
public void getBaseType() throws Exception {
Class<?> clz = Header.class;
Class<?> clz = Metadata.class;
BaseType baseType = PropertyTypeName.getBaseTypeByClass(clz);
logger.debug("{} for class {} is {}", BaseType.class.getSimpleName(), clz, baseType);
}
@ -63,7 +63,7 @@ public class TypeNameTest {
if(baseType.ordinal()>=BaseType.PROPERTY.ordinal()) {
if(baseType == BaseType.PROPERTY) {
stringBuffer = new StringBuffer();
stringBuffer.append(Vault.NAME);
stringBuffer.append(Encrypted.NAME);
checkPropertyTypeName(stringBuffer.toString(), baseType);
} else {
for(BaseType b : BaseType.values()) {
@ -79,7 +79,7 @@ public class TypeNameTest {
}
if(b == BaseType.PROPERTY) {
sb.append(Vault.NAME);
sb.append(Encrypted.NAME);
} else {
sb.append(b.toString());
}

View File

@ -14,21 +14,23 @@ public class UUIDManagerTest {
@Test
public void testReservedUUID() {
Set<UUID> allUUID = UUIDManager.getAllReservedUUID();
UUIDManager uuidManager = UUIDManager.getInstance();
Set<UUID> allUUID = uuidManager.getAllReservedUUID();
logger.debug("Reserved UUIDs are {}", allUUID);
Set<String> allUUIDAsString = UUIDManager.getAllReservedUUIDAsStrings();
Set<String> allUUIDAsString = uuidManager.getAllReservedUUIDAsStrings();
Assert.assertTrue(allUUID.size()==allUUIDAsString.size());
Assert.assertTrue(allUUID.size()==16);
Assert.assertTrue(allUUIDAsString.size()==16);
for(UUID uuid : allUUID) {
Assert.assertTrue(UUIDManager.isReservedUUID(uuid));
Assert.assertTrue(UUIDManager.isReservedUUID(uuid.toString()));
Assert.assertTrue(uuidManager.isReservedUUID(uuid));
Assert.assertTrue(uuidManager.isReservedUUID(uuid.toString()));
}
for(String uuidString : allUUIDAsString) {
Assert.assertTrue(UUIDManager.isReservedUUID(UUID.fromString(uuidString)));
Assert.assertTrue(UUIDManager.isReservedUUID(uuidString));
Assert.assertTrue(uuidManager.isReservedUUID(UUID.fromString(uuidString)));
Assert.assertTrue(uuidManager.isReservedUUID(uuidString));
}
}

View File

@ -10,7 +10,7 @@
<logger name="org.gcube" level="WARN" />
<logger name="org.gcube.informationsystem" level="INFO" />
<logger name="org.gcube.informationsystem" level="TRACE" />
<logger name="org.gcube.informationsystem.resourceregistry.dbinitialization" level="WARN" />
<root level="WARN">