Class QueryTemplateManagement
java.lang.Object
org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.ElementManagement<com.orientechnologies.orient.core.record.OVertex,ET>
org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.EntityElementManagement<org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate,org.gcube.informationsystem.types.reference.entities.EntitySchema>
org.gcube.informationsystem.resourceregistry.persistence.orientdb.queries.templates.QueryTemplateManagement
public class QueryTemplateManagement
extends EntityElementManagement<org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate,org.gcube.informationsystem.types.reference.entities.EntitySchema>
- Author:
- Luca Frosini (ISTI - CNR)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanWhether hierarchical execution must use the active-only reader channel.protected ContextVisibilityPolicyThe context visibility policy applied to the executed template's results.protected StringThe caller's current Context path, used whencontextVisibilityPolicyis notContextVisibilityPolicy.ALL.protected booleanWhether non-active descendant memberships must be omitted from included context maps.protected booleanWhether the executed template's underlying query should search descendant Contexts too.protected booleanWhether the executed template's results should include the list of contexts where each instance is available.protected StringThe name of the query template.protected org.gcube.com.fasterxml.jackson.databind.JsonNodeThe parameters for the query template.protected booleanFields inherited from class org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.EntityElementManagement
IN_PREFIX, OUT_PREFIX, relationManagementsFields inherited from class org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.ElementManagement
accessType, affectedInstances, AT, cachedType, complete, DELETED, DOLLAR, dryRun, element, elementClass, entryPoint, ignoreKeys, ignoreStartWithKeys, jsonNode, limit, maskMetadata, metadataPolicy, oClass, oDatabaseDocument, offset, operation, polymorphic, preservePassedMetadata, reload, sanityCheckDeferred, self, typeName, UNDERSCORE, updateMode, uuid, workingEnvironment -
Constructor Summary
ConstructorsConstructorDescriptionCreates a newQueryTemplateManagementinstance.QueryTemplateManagement(com.orientechnologies.orient.core.db.document.ODatabaseDocument oDatabaseDocument) Creates a newQueryTemplateManagementinstance bound to the specified database. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidValidates that the schema type of the JSON node matches the configured type name.protected voidChecks if a template with the current name already exists in the database.protected voidValidates the input JSON node and extracts the UUID and schema type.protected voidValidates that the template name matches the JSON property.protected org.gcube.com.fasterxml.jackson.databind.JsonNodeAbstract method to create the complete JSON node representation of the element.Atomically creates or updates the element in the database (idempotent upsert).Creates a new Query Template, or updates an existing one with the same name, also reporting whether a brand new Query Template was registered.getName()Returns the name of the query template.protected StringBufferHelper method to build the SQL SELECT query for resolving a template by name.protected org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentExceptiongetSpecificAlreadyPresentException(String message) Converts a generic AlreadyPresentException into a subclass-specific AlreadyPresentException.protected org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundExceptiongetSpecificNotFoundException(org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException e) Converts a generic NotFoundException into a subclass-specific NotFoundException.protected EnvironmentReturns the active database working environment.booleanReports whether the lastquery(String)orrun()call was projection-based (i.e. the query contained an_emitblock).Executes a JSON query against the QueryTemplate collection, returning matchingQueryTemplatedefinitions (not their execution results).protected com.orientechnologies.orient.core.record.OVertexPersists a new element in the database (subclass hook).protected voidDeletes an existing element from the database (subclass hook).Retrieves all elements from the database and returns them as a JSON array string.protected com.orientechnologies.orient.core.record.OVertexUpdates an existing element in the database (subclass hook).com.orientechnologies.orient.core.record.OVertexDirectly queries and retrieves the OrientDB element from the database.run()Runs the template query after substituting its variables with the provided values (falling back to each omitted variable's own default value, perQueryTemplate.getJsonQuery(JsonNode)), honouring thelimit,offset,polymorphic,hierarchical,includeContexts, andmetadataPolicyfields already configured on this instance via their respective setters, including the inherited metadata-masking directive.voidPerforms runtime validation of mandatory and not-null schema constraints that cannot be enforced directly by OrientDB in distributed mode.voidsetActiveOnlyHierarchical(boolean activeOnlyHierarchical) Sets whether hierarchical execution must use the active-only reader channel.voidsetContextVisibilityPolicy(ContextVisibilityPolicy contextVisibilityPolicy) Sets the context visibility policy applied to the executed template's results.voidsetCurrentContextPath(String currentContextPath) Sets the caller's current Context path, used whencontextVisibilityPolicyis notContextVisibilityPolicy.ALL.voidsetFilterNonActiveDescendants(boolean filterNonActiveDescendants) Sets whether non-active descendant memberships must be omitted from included context maps.voidsetHierarchical(boolean hierarchical) Sets whether the executed template's underlying query should search descendant Contexts too.voidsetIncludeContexts(boolean includeContexts) Sets whether the executed template's results should include the list of contexts where each returned instance is available.voidSets the name of the query template and validates its consistency.voidSets the parameters from a JSON string.voidsetParams(org.gcube.com.fasterxml.jackson.databind.JsonNode params) Sets the parameters from aJsonNode.protected voidValidates the template definition by executing a trial run.Methods inherited from class org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.EntityElementManagement
addRelation, addToRelationManagement, createVertex, getBaseRelationManagementMethods inherited from class org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.ElementManagement
all, applyPrivacyMask, applyPrivacyMask, checkUUIDMatch, checkUUIDNotAlreadyInUse, cleanCachedSerialization, concludeTransaction, create, createOrUpdateElementWithResult, delete, exists, getAccessType, getAffectedInstances, getAllProperties, getCachedType, getCurrentODatabaseDocumentFromThreadLocal, getElement, getLimit, getMandatoryErrorMessage, getMandatoryErrorMessage, getMetadataPolicy, getOClass, getOffset, getPropertyForJson, getPropertyMap, getTypeName, getUpdateMode, getUUID, internalCreate, internalCreateOrUdate, internalDelete, internalUpdate, isDryRun, isMaskMetadata, isPolymorphic, isPreservePassedMetadata, isReload, isSanityCheckDeferred, read, requireExplicitUUID, retrieveElementFromAnyContext, serializeAsAffectedInstance, serializeAsJsonNode, serializeSelfAsJsonNode, setAsEntryPoint, setDryRun, setElement, setElementType, setJson, setJsonNode, setLimit, setMaskMetadata, setMetadataPolicy, setOClass, setODatabaseDocument, setOffset, setOperation, setPolymorphic, setPreservePassedMetadata, setProperty, setReload, setRequireExplicitUUID, setSanityCheckDeferred, setUpdateMode, setUUID, setWorkingEnvironment, typeSatified, update, updateProperties
-
Field Details
-
name
The name of the query template. -
params
protected org.gcube.com.fasterxml.jackson.databind.JsonNode paramsThe parameters for the query template. -
hierarchical
protected boolean hierarchicalWhether the executed template's underlying query should search descendant Contexts too. -
activeOnlyHierarchical
protected boolean activeOnlyHierarchicalWhether hierarchical execution must use the active-only reader channel. -
includeContexts
protected boolean includeContextsWhether the executed template's results should include the list of contexts where each instance is available. -
contextVisibilityPolicy
The context visibility policy applied to the executed template's results. -
currentContextPath
The caller's current Context path, used whencontextVisibilityPolicyis notContextVisibilityPolicy.ALL. -
filterNonActiveDescendants
protected boolean filterNonActiveDescendantsWhether non-active descendant memberships must be omitted from included context maps. -
projection
protected boolean projection
-
-
Constructor Details
-
QueryTemplateManagement
public QueryTemplateManagement()Creates a newQueryTemplateManagementinstance. -
QueryTemplateManagement
public QueryTemplateManagement(com.orientechnologies.orient.core.db.document.ODatabaseDocument oDatabaseDocument) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException Creates a newQueryTemplateManagementinstance bound to the specified database.- Parameters:
oDatabaseDocument- the database connection- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- if initialization fails
-
-
Method Details
-
checkNameMatch
protected void checkNameMatch() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionValidates that the template name matches the JSON property.- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateException- if the name is missing or differsorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
-
setName
public void setName(String name) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException Sets the name of the query template and validates its consistency.- Parameters:
name- the template name to set- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- if name validation fails
-
checkJsonNode
protected void checkJsonNode() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementValidates the input JSON node and extracts the UUID and schema type.- Overrides:
checkJsonNodein classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- if the JSON structure is invalid or violates constraints
-
checkERMatch
protected void checkERMatch() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementValidates that the schema type of the JSON node matches the configured type name.- Overrides:
checkERMatchin classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- if the schema types do not match
-
getName
Returns the name of the query template.- Returns:
- the template name
-
getWorkingEnvironment
protected Environment getWorkingEnvironment() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementReturns the active database working environment.- Specified by:
getWorkingEnvironmentin classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the working environment
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- if the environment cannot be resolved
-
createCompleteJsonNode
protected org.gcube.com.fasterxml.jackson.databind.JsonNode createCompleteJsonNode() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementAbstract method to create the complete JSON node representation of the element.- Specified by:
createCompleteJsonNodein classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the complete JSON node representing the element and its relationships
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on serialization or mapping error
-
getSelectQuery
Helper method to build the SQL SELECT query for resolving a template by name.- Returns:
- the built SELECT query
-
checkIfNameAlreadyExists
protected void checkIfNameAlreadyExists() throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateAlreadyPresentExceptionChecks if a template with the current name already exists in the database.- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateAlreadyPresentException- if a template with the same name exists
-
tryTemplate
protected void tryTemplate() throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionValidates the template definition by executing a trial run.- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException- if the query or its default substitutions are invalidorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- if validation encounters a registry failure
-
retrieveElement
public com.orientechnologies.orient.core.record.OVertex retrieveElement() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementDirectly queries and retrieves the OrientDB element from the database.- Overrides:
retrieveElementin classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the loaded OrientDB element
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException- if the element does not existorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on database error
-
createOrUpdate
public String createOrUpdate() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.instances.AvailableInAnotherContextException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementAtomically creates or updates the element in the database (idempotent upsert).- Overrides:
createOrUpdatein classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the serialized JSON representation of the element
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException- if the element to update does not existorg.gcube.informationsystem.resourceregistry.api.exceptions.instances.AvailableInAnotherContextException- if the element belongs to another contextorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on database error
-
createOrUpdateWithResult
public QueryTemplateCreationResult createOrUpdateWithResult() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.instances.AvailableInAnotherContextException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionCreates a new Query Template, or updates an existing one with the same name, also reporting whether a brand new Query Template was registered.createOrUpdate()is theEntityElementManagementcontract method shared with unrelated create/update paths that don't need the distinction; this method exists soPUT /query-templates/{name}can respond with the correct HTTP status (201 Created on genuine creation, 200 OK on update).- Returns:
- the outcome, carrying the serialized Query Template JSON and a created/updated flag
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException- if the update path cannot locate a required resourceorg.gcube.informationsystem.resourceregistry.api.exceptions.instances.AvailableInAnotherContextException- if the Query Template is available in another contextorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on any other persistence failure
-
reallyCreate
protected com.orientechnologies.orient.core.record.OVertex reallyCreate() throws org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException, org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementPersists a new element in the database (subclass hook).- Specified by:
reallyCreatein classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the persisted OrientDB vertex
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException- if the element already exists in the databaseorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on any database errororg.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException
-
reallyUpdate
protected com.orientechnologies.orient.core.record.OVertex reallyUpdate() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementUpdates an existing element in the database (subclass hook).- Specified by:
reallyUpdatein classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the updated OrientDB vertex
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException- if the element does not exist in the databaseorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on any database error
-
reallyDelete
protected void reallyDelete() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementDeletes an existing element from the database (subclass hook).- Specified by:
reallyDeletein classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException- if the element does not exist in the databaseorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on any database error
-
getSpecificNotFoundException
protected org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException getSpecificNotFoundException(org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException e) Description copied from class:ElementManagementConverts a generic NotFoundException into a subclass-specific NotFoundException.- Specified by:
getSpecificNotFoundExceptionin classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Parameters:
e- the generic exception- Returns:
- the specific NotFoundException
-
getSpecificAlreadyPresentException
protected org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException getSpecificAlreadyPresentException(String message) Description copied from class:ElementManagementConverts a generic AlreadyPresentException into a subclass-specific AlreadyPresentException.- Specified by:
getSpecificAlreadyPresentExceptionin classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Parameters:
message- the exception message- Returns:
- the specific AlreadyPresentException
-
reallyGetAll
public String reallyGetAll() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementRetrieves all elements from the database and returns them as a JSON array string.- Specified by:
reallyGetAllin classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- JSON array string of all elements
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on database traversal or serialization error
-
query
public String query(String jsonQuery) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException Executes a JSON query against the QueryTemplate collection, returning matchingQueryTemplatedefinitions (not their execution results).Honours the
limit,offset, andmetadataPolicyfields already configured on this instance viaElementManagement.setLimit(Integer),ElementManagement.setOffset(Integer), andElementManagement.setMetadataPolicy(org.gcube.informationsystem.resourceregistry.api.rest.MetadataPolicy).- Parameters:
jsonQuery- the JSON query payload describing the QueryTemplate search criteria- Returns:
- JSON array string of matching QueryTemplate definitions
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException- if the query is invalid or syntactically incorrectorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on database or processing failure
-
setParams
public void setParams(String params) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException Sets the parameters from a JSON string.- Parameters:
params- the JSON string representing the parameters- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException- if the payload is malformed or is not a JSON object
-
setParams
public void setParams(org.gcube.com.fasterxml.jackson.databind.JsonNode params) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException Sets the parameters from aJsonNode.- Parameters:
params- theJsonNoderepresenting the parameters- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException- if the node is not a JSON object
-
setHierarchical
public void setHierarchical(boolean hierarchical) Sets whether the executed template's underlying query should search descendant Contexts too.- Parameters:
hierarchical-trueto expand the search boundary to descendant Contexts
-
setActiveOnlyHierarchical
public void setActiveOnlyHierarchical(boolean activeOnlyHierarchical) Sets whether hierarchical execution must use the active-only reader channel.- Parameters:
activeOnlyHierarchical-trueto hide non-active descendant Contexts
-
setIncludeContexts
public void setIncludeContexts(boolean includeContexts) Sets whether the executed template's results should include the list of contexts where each returned instance is available.- Parameters:
includeContexts-trueto include context availability information
-
setContextVisibilityPolicy
Sets the context visibility policy applied to the executed template's results.- Parameters:
contextVisibilityPolicy- the visibility policy to apply
-
setCurrentContextPath
Sets the caller's current Context path, used whencontextVisibilityPolicyis notContextVisibilityPolicy.ALL.- Parameters:
currentContextPath- the caller's current Context path
-
setFilterNonActiveDescendants
public void setFilterNonActiveDescendants(boolean filterNonActiveDescendants) Sets whether non-active descendant memberships must be omitted from included context maps.- Parameters:
filterNonActiveDescendants-trueto omit non-active descendant memberships
-
run
public String run() throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionRuns the template query after substituting its variables with the provided values (falling back to each omitted variable's own default value, perQueryTemplate.getJsonQuery(JsonNode)), honouring thelimit,offset,polymorphic,hierarchical,includeContexts, andmetadataPolicyfields already configured on this instance via their respective setters, including the inherited metadata-masking directive.- Returns:
- the result as JSON string
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException- if the template execution parameters are invalid (e.g. a mandatory template variable with no default value was not provided)org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- if an error occurs during query execution
-
isProjection
public boolean isProjection()Reports whether the lastquery(String)orrun()call was projection-based (i.e. the query contained an_emitblock). SeeInstancesJsonQueryExecutor.isProjection().- Returns:
trueif the last query was projection-based,falseotherwise
-
sanityCheck
public void sanityCheck() throws org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaViolationException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementPerforms runtime validation of mandatory and not-null schema constraints that cannot be enforced directly by OrientDB in distributed mode.- Overrides:
sanityCheckin classElementManagement<com.orientechnologies.orient.core.record.OVertex,org.gcube.informationsystem.types.reference.entities.EntitySchema> - Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaViolationException- if a schema constraint is violatedorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on database lookup failure
-