package org.gcube.resourcemanagement.model.reference.properties; import java.net.URI; import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize; import org.gcube.informationsystem.types.annotations.ISProperty; import org.gcube.informationsystem.types.reference.Change; import org.gcube.informationsystem.types.reference.TypeMetadata; import org.gcube.informationsystem.utils.TypeVersion; import org.gcube.resourcemanagement.model.impl.properties.ValueSchemaImpl; import org.gcube.resourcemanagement.model.reference.properties.utilities.PropertyValidator; import org.gcube.resourcemanagement.model.reference.properties.utilities.ValidatedTypedProperty; import org.gcube.resourcemanagement.model.reference.properties.utilities.Validation; /** * @author Luca Frosini (ISTI - CNR) */ @JsonDeserialize(as=ValueSchemaImpl.class) @TypeMetadata( name = ValueSchema.NAME, description = "This property type capture any property which can be described by a value-schema couple.", version = TypeVersion.MINIMAL_VERSION_STRING ) @Change(version = TypeVersion.MINIMAL_VERSION_STRING, description = TypeVersion.MINIMAL_VERSION_DESCRIPTION) public interface ValueSchema extends GCubeProperty, ValidatedTypedProperty { public static final String NAME = "ValueSchema"; //ValueSchema.class.getSimpleName(); @Override default Validation validate() { return new SchemaValidator().validate(this); } /** * Validator for {@link ValueSchema} properties. * @author Manuele Simi (ISTI CNR) * */ class SchemaValidator implements PropertyValidator { @Override public Validation validate(ValueSchema property) { //TODO validate the string against the URI! return Validation.success("Accepted!"); } } @ISProperty @Override public String getValue(); @Override public void setValue(String value); @ISProperty @Override public URI getType(); @Override public void setType(URI type); }