summaryrefslogtreecommitdiffstats
path: root/cps-service
diff options
context:
space:
mode:
authorRuslan Kashapov <ruslan.kashapov@pantheon.tech>2020-11-24 11:13:43 +0200
committerRuslan Kashapov <ruslan.kashapov@pantheon.tech>2020-12-03 15:59:03 +0200
commitcb03544962c994c0cc9d9117a3c6b9182ce22204 (patch)
tree7fdec9f545c81c55e93376a7d58e6a648d994550 /cps-service
parent35b2b4414405c0c3f7c06171ae0e1ebca3214e40 (diff)
Schema Set persistence (store) implementation
Issue-ID: CPS-92 Change-Id: I11257726e4f847e3337d8bafad824853e6a458e2 Signed-off-by: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
Diffstat (limited to 'cps-service')
-rw-r--r--cps-service/src/main/java/org/onap/cps/exceptions/CpsExceptionBuilder.java94
-rwxr-xr-xcps-service/src/main/java/org/onap/cps/spi/ModelPersistenceService.java19
2 files changed, 110 insertions, 3 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/exceptions/CpsExceptionBuilder.java b/cps-service/src/main/java/org/onap/cps/exceptions/CpsExceptionBuilder.java
new file mode 100644
index 000000000..2acbb9232
--- /dev/null
+++ b/cps-service/src/main/java/org/onap/cps/exceptions/CpsExceptionBuilder.java
@@ -0,0 +1,94 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 Pantheon.tech
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.exceptions;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+/**
+ * Utility class.
+ * Serves error message consistency for same error cases occurred in different CPS modules.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class CpsExceptionBuilder {
+
+ private static final String SCHEMA_SET_IS_INVALID = "Schema Set is invalid.";
+
+ /**
+ * Generates validation error exception for case when requested dataspace is absent.
+ *
+ * @param dataspaceName dataspace name
+ */
+ public static CpsException invalidDataspaceException(final String dataspaceName) {
+ return new CpsValidationException("Dataspace is invalid.",
+ String.format("Dataspace with name %s does not exist.", dataspaceName));
+ }
+
+ /**
+ * Generates validation error exception for case when requested schema set is absent for existing dataspace.
+ *
+ * @param dataspaceName dataspace name
+ * @param schemaSetName schema set name
+ */
+ public static CpsException invalidSchemaSetException(final String dataspaceName, final String schemaSetName) {
+ return new CpsValidationException(SCHEMA_SET_IS_INVALID,
+ String.format("Schema Set with name %s was not found for dataspace %s.", schemaSetName, dataspaceName));
+ }
+
+ /**
+ * Returns validation error exception for case when SchemaSet contains no files.
+ */
+ public static CpsException emptySchemaSetException() {
+ return new CpsValidationException(SCHEMA_SET_IS_INVALID, "Schema Set has no YANG resources to store");
+ }
+
+ /**
+ * Generates validation error exception for case when SchemaSet with same name already exists in the dataspace.
+ *
+ * @param dataspaceName dataspace name
+ * @param schemaSetName schema set name
+ */
+ public static CpsException duplicateSchemaSetException(final String dataspaceName, final String schemaSetName) {
+ return new CpsValidationException(SCHEMA_SET_IS_INVALID,
+ String.format("Schema Set with name %s already exists for dataspace %s.", schemaSetName, dataspaceName));
+ }
+
+ /**
+ * Generates no data found exception for case when requested dataspace is absent.
+ *
+ * @param dataspaceName dataspace name
+ */
+ public static CpsException dataspaceNotFoundException(final String dataspaceName) {
+ return new CpsNotFoundException("Dataspace was not found.",
+ String.format("Dataspace with name %s does not exist.", dataspaceName));
+ }
+
+ /**
+ * Generates no data found exception for case when requested SchemaSet is absent for existing dataspace.
+ *
+ * @param dataspaceName dataspace name
+ * @param schemaSetName schema set name
+ */
+ public static CpsException schemaSetNotFoundException(final String dataspaceName, final String schemaSetName) {
+ return new CpsNotFoundException("Schema Set was not found.",
+ String.format("Schema Set with name %s was not found for dataspace %s.", schemaSetName, dataspaceName));
+ }
+
+}
diff --git a/cps-service/src/main/java/org/onap/cps/spi/ModelPersistenceService.java b/cps-service/src/main/java/org/onap/cps/spi/ModelPersistenceService.java
index 3f0b3c110..9eed2807c 100755
--- a/cps-service/src/main/java/org/onap/cps/spi/ModelPersistenceService.java
+++ b/cps-service/src/main/java/org/onap/cps/spi/ModelPersistenceService.java
@@ -20,6 +20,8 @@
package org.onap.cps.spi;
+import java.util.Set;
+
/**
* Defines methods to access and manipulate data using the chosen database solution.
*/
@@ -28,12 +30,23 @@ public interface ModelPersistenceService {
/**
* Store the module from a yang model in the database.
*
- * @param namespace module namespace
+ * @param namespace module namespace
* @param moduleContent module content
- * @param revision module revision
+ * @param revision module revision
* @param dataspaceName the name of the dataspace the module is associated with
*/
+ @Deprecated
void storeModule(final String namespace, final String moduleContent, final String revision,
- final String dataspaceName);
+ final String dataspaceName);
+
+
+ /**
+ * Stores Schema Set.
+ *
+ * @param dataspaceName dataspace name
+ * @param schemaSetName schema set name
+ * @param yangResourcesAsStrings the content of YANG resources (files)
+ */
+ void storeSchemaSet(String dataspaceName, String schemaSetName, Set<String> yangResourcesAsStrings);
}