From cee0da3ac5a40fd90775803dcf0aff793a314bb1 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Thu, 5 Dec 2019 12:04:31 +0100 Subject: [PATCH] All Gcube Resources are now subclass of GCubeResource. Added the schema definition refs #18213 --- .../impl/entities/resources/ActorImpl.java | 3 +- .../resources/ConfigurationTemplateImpl.java | 3 +- .../impl/entities/resources/DatasetImpl.java | 3 +- .../impl/entities/resources/SchemaImpl.java | 3 +- .../impl/entities/resources/ServiceImpl.java | 3 +- .../impl/entities/resources/SiteImpl.java | 3 +- .../impl/entities/resources/SoftwareImpl.java | 3 +- .../reference/entities/resources/Actor.java | 14 ++++++- .../entities/resources/ConcreteDataset.java | 9 ++++ .../resources/ConfigurationTemplate.java | 12 +++++- .../reference/entities/resources/Dataset.java | 42 ++++++++++++++++++- .../entities/resources/EService.java | 16 +++++++ .../reference/entities/resources/Schema.java | 21 +++++++++- .../reference/entities/resources/Service.java | 13 +++++- .../reference/entities/resources/Site.java | 3 +- .../entities/resources/Software.java | 3 +- 16 files changed, 126 insertions(+), 28 deletions(-) diff --git a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ActorImpl.java b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ActorImpl.java index 6f81e5d..00700bc 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ActorImpl.java +++ b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ActorImpl.java @@ -3,7 +3,6 @@ */ package org.gcube.resourcemanagement.model.impl.entities.resources; -import org.gcube.informationsystem.model.impl.entities.ResourceImpl; import org.gcube.resourcemanagement.model.reference.entities.resources.Actor; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * @author Luca Frosini (ISTI - CNR) */ @JsonTypeName(value=Actor.NAME) -public abstract class ActorImpl extends ResourceImpl implements Actor { +public abstract class ActorImpl extends GCubeResourceImpl implements Actor { /** * Generated Serial version UID diff --git a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ConfigurationTemplateImpl.java b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ConfigurationTemplateImpl.java index 8686ea2..ea7c881 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ConfigurationTemplateImpl.java +++ b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ConfigurationTemplateImpl.java @@ -3,7 +3,6 @@ */ package org.gcube.resourcemanagement.model.impl.entities.resources; -import org.gcube.informationsystem.model.impl.entities.ResourceImpl; import org.gcube.resourcemanagement.model.reference.entities.resources.ConfigurationTemplate; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * @author Luca Frosini (ISTI - CNR) */ @JsonTypeName(value=ConfigurationTemplate.NAME) -public class ConfigurationTemplateImpl extends ResourceImpl implements ConfigurationTemplate { +public class ConfigurationTemplateImpl extends GCubeResourceImpl implements ConfigurationTemplate { /** * Generated Serial version UID diff --git a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/DatasetImpl.java b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/DatasetImpl.java index 2950297..3f936db 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/DatasetImpl.java +++ b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/DatasetImpl.java @@ -3,7 +3,6 @@ */ package org.gcube.resourcemanagement.model.impl.entities.resources; -import org.gcube.informationsystem.model.impl.entities.ResourceImpl; import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * @author Luca Frosini (ISTI - CNR) */ @JsonTypeName(value=Dataset.NAME) -public class DatasetImpl extends ResourceImpl implements Dataset { +public class DatasetImpl extends GCubeResourceImpl implements Dataset { /** * Generated Serial version UID diff --git a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SchemaImpl.java b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SchemaImpl.java index fb1cd02..7bd442c 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SchemaImpl.java +++ b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SchemaImpl.java @@ -3,7 +3,6 @@ */ package org.gcube.resourcemanagement.model.impl.entities.resources; -import org.gcube.informationsystem.model.impl.entities.ResourceImpl; import org.gcube.resourcemanagement.model.reference.entities.resources.Schema; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * @author Luca Frosini (ISTI - CNR) */ @JsonTypeName(value=Schema.NAME) -public class SchemaImpl extends ResourceImpl implements Schema { +public class SchemaImpl extends GCubeResourceImpl implements Schema { /** * Generated Serial version UID diff --git a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ServiceImpl.java b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ServiceImpl.java index 4207994..4520848 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ServiceImpl.java +++ b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/ServiceImpl.java @@ -3,7 +3,6 @@ */ package org.gcube.resourcemanagement.model.impl.entities.resources; -import org.gcube.informationsystem.model.impl.entities.ResourceImpl; import org.gcube.resourcemanagement.model.reference.entities.resources.Service; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * @author Luca Frosini (ISTI - CNR) */ @JsonTypeName(value=Service.NAME) -public abstract class ServiceImpl extends ResourceImpl implements Service { +public abstract class ServiceImpl extends GCubeResourceImpl implements Service { /** * Generated Serial version UID diff --git a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SiteImpl.java b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SiteImpl.java index 9316cb3..5f92456 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SiteImpl.java +++ b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SiteImpl.java @@ -3,7 +3,6 @@ */ package org.gcube.resourcemanagement.model.impl.entities.resources; -import org.gcube.informationsystem.model.impl.entities.ResourceImpl; import org.gcube.resourcemanagement.model.reference.entities.resources.Site; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * @author Luca Frosini (ISTI - CNR) */ @JsonTypeName(value=Site.NAME) -public class SiteImpl extends ResourceImpl implements Site { +public class SiteImpl extends GCubeResourceImpl implements Site { /** * Generated Serial version UID diff --git a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SoftwareImpl.java b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SoftwareImpl.java index c89766c..174a9b2 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SoftwareImpl.java +++ b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/SoftwareImpl.java @@ -3,7 +3,6 @@ */ package org.gcube.resourcemanagement.model.impl.entities.resources; -import org.gcube.informationsystem.model.impl.entities.ResourceImpl; import org.gcube.resourcemanagement.model.reference.entities.resources.Software; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * @author Luca Frosini (ISTI - CNR) */ @JsonTypeName(value=Software.NAME) -public class SoftwareImpl extends ResourceImpl implements Software { +public class SoftwareImpl extends GCubeResourceImpl implements Software { /** * Generated Serial version UID diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Actor.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Actor.java index 6db63f9..3b2eaec 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Actor.java +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Actor.java @@ -3,9 +3,14 @@ */ package org.gcube.resourcemanagement.model.reference.entities.resources; -import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.informationsystem.types.annotations.Abstract; +import org.gcube.informationsystem.types.annotations.ResourceSchema; +import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry; import org.gcube.resourcemanagement.model.impl.entities.resources.ActorImpl; +import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.ContactReferenceFacet; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasContact; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -15,7 +20,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; */ @Abstract @JsonDeserialize(as=ActorImpl.class) -public interface Actor extends Resource { +@ResourceSchema({ + @ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=ContactFacet.class, min=1), + @ResourceSchemaEntry(consistOfType=HasContact.class, targetFacetType=ContactFacet.class), + @ResourceSchemaEntry(targetFacetType=ContactReferenceFacet.class) +}) +public interface Actor extends GCubeResource { public static final String NAME = "Actor"; // Actor.class.getSimpleName(); public static final String DESCRIPTION = "Any entity (human or machine) playing an active role."; diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/ConcreteDataset.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/ConcreteDataset.java index 4efd9e2..44da8fb 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/ConcreteDataset.java +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/ConcreteDataset.java @@ -3,7 +3,12 @@ */ package org.gcube.resourcemanagement.model.reference.entities.resources; +import org.gcube.informationsystem.types.annotations.ResourceSchema; +import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry; import org.gcube.resourcemanagement.model.impl.entities.resources.ConcreteDatasetImpl; +import org.gcube.resourcemanagement.model.reference.entities.facets.AccessPointFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasMaintainer; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -13,6 +18,10 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; * https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Concrete_Dataset */ @JsonDeserialize(as=ConcreteDatasetImpl.class) +@ResourceSchema({ + @ResourceSchemaEntry(consistOfType=HasMaintainer.class, targetFacetType=ContactFacet.class, min=1), + @ResourceSchemaEntry(targetFacetType=AccessPointFacet.class, min=1) +}) public interface ConcreteDataset extends Dataset { public static final String NAME = "ConcreteDataset"; // ConcreteDataset.class.getSimpleName(); diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/ConfigurationTemplate.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/ConfigurationTemplate.java index ca05ed3..bde16ec 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/ConfigurationTemplate.java +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/ConfigurationTemplate.java @@ -3,8 +3,12 @@ */ package org.gcube.resourcemanagement.model.reference.entities.resources; -import org.gcube.informationsystem.model.reference.entities.Resource; +import org.gcube.informationsystem.types.annotations.ResourceSchema; +import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry; import org.gcube.resourcemanagement.model.impl.entities.resources.ConfigurationTemplateImpl; +import org.gcube.resourcemanagement.model.reference.entities.facets.IdentifierFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.SimpleFacet; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -13,7 +17,11 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; * https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Configuration_Template */ @JsonDeserialize(as=ConfigurationTemplateImpl.class) -public interface ConfigurationTemplate extends Resource { +@ResourceSchema({ + @ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=IdentifierFacet.class, min=1), + @ResourceSchemaEntry(targetFacetType=SimpleFacet.class, min=1) +}) +public interface ConfigurationTemplate extends GCubeResource { public static final String NAME = "ConfigurationTemplate"; //ConfigurationTemplate.class.getSimpleName(); public static final String DESCRIPTION = "It represents a template for a configuration. It describe how a configuration has to be realized. E.g. Used to define the accounting configuration parameters template."; diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Dataset.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Dataset.java index 73d4b0c..60e6db0 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Dataset.java +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Dataset.java @@ -3,8 +3,28 @@ */ package org.gcube.resourcemanagement.model.reference.entities.resources; -import org.gcube.informationsystem.model.reference.entities.Resource; +import org.gcube.informationsystem.types.annotations.ResourceSchema; +import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry; import org.gcube.resourcemanagement.model.impl.entities.resources.DatasetImpl; +import org.gcube.resourcemanagement.model.reference.entities.facets.AccessPointFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.CoverageFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.DescriptiveMetadataFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.EventFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.IdentifierFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.LicenseFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.ProvenanceFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.SubjectFacet; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasContact; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasContributor; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasCoverage; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasCreator; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasCurator; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasMaintainer; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasOwner; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasSpatialCoverage; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasTemporalCoverage; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -13,7 +33,25 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; * https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Dataset */ @JsonDeserialize(as=DatasetImpl.class) -public interface Dataset extends Resource { +@ResourceSchema({ + @ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=IdentifierFacet.class, min=1), + @ResourceSchemaEntry(consistOfType=HasContact.class, targetFacetType=ContactFacet.class, min=1), + @ResourceSchemaEntry(consistOfType=HasContributor.class, targetFacetType=ContactFacet.class), + @ResourceSchemaEntry(consistOfType=HasCreator.class, targetFacetType=ContactFacet.class), + @ResourceSchemaEntry(consistOfType=HasCurator.class, targetFacetType=ContactFacet.class), + @ResourceSchemaEntry(consistOfType=HasMaintainer.class, targetFacetType=ContactFacet.class), + @ResourceSchemaEntry(consistOfType=HasOwner.class, targetFacetType=ContactFacet.class), + @ResourceSchemaEntry(targetFacetType=AccessPointFacet.class), + @ResourceSchemaEntry(targetFacetType=LicenseFacet.class), + @ResourceSchemaEntry(targetFacetType=EventFacet.class), + @ResourceSchemaEntry(targetFacetType=ProvenanceFacet.class), + @ResourceSchemaEntry(consistOfType=HasCoverage.class, targetFacetType=CoverageFacet.class, min=1), + @ResourceSchemaEntry(consistOfType=HasTemporalCoverage.class, targetFacetType=CoverageFacet.class), + @ResourceSchemaEntry(consistOfType=HasSpatialCoverage.class, targetFacetType=CoverageFacet.class), + @ResourceSchemaEntry(targetFacetType=DescriptiveMetadataFacet.class), + @ResourceSchemaEntry(targetFacetType=SubjectFacet.class) +}) +public interface Dataset extends GCubeResource { public static final String NAME = "Dataset"; // Dataset.class.getSimpleName(); public static final String DESCRIPTION = "Collect Dataset information through the list of its facets"; diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/EService.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/EService.java index 3b3d651..74efa50 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/EService.java +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/EService.java @@ -3,7 +3,15 @@ */ package org.gcube.resourcemanagement.model.reference.entities.resources; +import org.gcube.informationsystem.types.annotations.ResourceSchema; +import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry; import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl; +import org.gcube.resourcemanagement.model.reference.entities.facets.AccessPointFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.EventFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.LicenseFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.ServiceStateFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.SoftwareFacet; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -12,6 +20,14 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; * https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#E-Service */ @JsonDeserialize(as=EServiceImpl.class) +@ResourceSchema({ + @ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=SoftwareFacet.class, min=1), + @ResourceSchemaEntry(targetFacetType=SoftwareFacet.class), + @ResourceSchemaEntry(targetFacetType=AccessPointFacet.class, min=1), + @ResourceSchemaEntry(targetFacetType=EventFacet.class, min=1, max=1), + @ResourceSchemaEntry(targetFacetType=ServiceStateFacet.class, min=1, max=1), + @ResourceSchemaEntry(targetFacetType=LicenseFacet.class) +}) public interface EService extends Service { public static final String NAME = "EService"; // EService.class.getSimpleName(); diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Schema.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Schema.java index e05e711..95f4ab2 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Schema.java +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Schema.java @@ -3,8 +3,17 @@ */ package org.gcube.resourcemanagement.model.reference.entities.resources; -import org.gcube.informationsystem.model.reference.entities.Resource; +import org.gcube.informationsystem.types.annotations.ResourceSchema; +import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry; import org.gcube.resourcemanagement.model.impl.entities.resources.SchemaImpl; +import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.DescriptiveMetadataFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.JSONSchemaFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.SchemaFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.SubjectFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.XSDSchemaFacet; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasContact; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -13,7 +22,15 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; * https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Schema */ @JsonDeserialize(as=SchemaImpl.class) -public interface Schema extends Resource { +@ResourceSchema({ + @ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=SchemaFacet.class, min=1), + @ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=JSONSchemaFacet.class), + @ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=XSDSchemaFacet.class), + @ResourceSchemaEntry(consistOfType=HasContact.class, targetFacetType=ContactFacet.class, min=1), + @ResourceSchemaEntry(targetFacetType=DescriptiveMetadataFacet.class), + @ResourceSchemaEntry(targetFacetType=SubjectFacet.class) +}) +public interface Schema extends GCubeResource { public static final String NAME = "Schema"; // Schema.class.getSimpleName(); public static final String DESCRIPTION = "Collect Schema information through the list of its facets"; diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Service.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Service.java index e7d7d4c..9ea8054 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Service.java +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Service.java @@ -3,9 +3,13 @@ */ package org.gcube.resourcemanagement.model.reference.entities.resources; -import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.informationsystem.types.annotations.Abstract; +import org.gcube.informationsystem.types.annotations.ResourceSchema; +import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry; import org.gcube.resourcemanagement.model.impl.entities.resources.ServiceImpl; +import org.gcube.resourcemanagement.model.reference.entities.facets.CapabilityFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.DescriptiveMetadataFacet; +import org.gcube.resourcemanagement.model.reference.entities.facets.SubjectFacet; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -15,7 +19,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; */ @Abstract @JsonDeserialize(as=ServiceImpl.class) -public interface Service extends Resource { +@ResourceSchema({ + @ResourceSchemaEntry(targetFacetType=DescriptiveMetadataFacet.class), + @ResourceSchemaEntry(targetFacetType=SubjectFacet.class), + @ResourceSchemaEntry(targetFacetType=CapabilityFacet.class) +}) +public interface Service extends GCubeResource { public static final String NAME = "Service"; // Service.class.getSimpleName(); public static final String DESCRIPTION = "Collect Service information through the list of its facets"; diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Site.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Site.java index 227e463..1d76731 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Site.java +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Site.java @@ -3,7 +3,6 @@ */ package org.gcube.resourcemanagement.model.reference.entities.resources; -import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.resourcemanagement.model.impl.entities.resources.SiteImpl; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -13,7 +12,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; * https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Site */ @JsonDeserialize(as=SiteImpl.class) -public interface Site extends Resource { +public interface Site extends GCubeResource { public static final String NAME = "Site"; // Site.class.getSimpleName(); public static final String DESCRIPTION = "Collect Site information through the list of its facets"; diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Software.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Software.java index 56ba887..d1aa17a 100644 --- a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Software.java +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/Software.java @@ -3,7 +3,6 @@ */ package org.gcube.resourcemanagement.model.reference.entities.resources; -import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.resourcemanagement.model.impl.entities.resources.SoftwareImpl; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -13,7 +12,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; * https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Software */ @JsonDeserialize(as=SoftwareImpl.class) -public interface Software extends Resource { +public interface Software extends GCubeResource { public static final String NAME = "Software"; // Software.class.getSimpleName(); public static final String DESCRIPTION = "Collect Software information through the list of its facets";