aboutsummaryrefslogtreecommitdiffstats
path: root/components/core
diff options
context:
space:
mode:
authorSteve Alphonse Siani <alphonse.steve.siani.djissitchi@ibm.com>2019-01-09 14:34:06 -0500
committerBalazinski <bartosz.balazinski@ibm.com>2019-01-11 08:51:07 -0500
commit83eab67a658e57548f398a7ddd872de4ebab5ca3 (patch)
treeca47e10091ac397ccb3f1ace727eb2578bc64d74 /components/core
parent6213aad62019a361126ee218b6b550e539e3582f (diff)
Blueprint exception handler and REST responses
Change-Id: I5727238cd4c3f3f5475c3f3022e56f1acc0d73bf Issue-ID: CCSDK-418 Signed-off-by: Steve Alphonse Siani <alphonse.steve.siani.djissitchi@ibm.com> Signed-off-by: Balazinski <bartosz.balazinski@ibm.com>
Diffstat (limited to 'components/core')
-rw-r--r--components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/data/BlueprintErrorCode.kt97
-rwxr-xr-xcomponents/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintFileUtils.kt24
2 files changed, 117 insertions, 4 deletions
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/data/BlueprintErrorCode.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/data/BlueprintErrorCode.kt
new file mode 100644
index 00000000..bef174b9
--- /dev/null
+++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/data/BlueprintErrorCode.kt
@@ -0,0 +1,97 @@
+/*
+ * Copyright © 2018-2019 Bell Canada Intellectual Property.
+ *
+ * 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.
+ */
+package org.onap.ccsdk.apps.controllerblueprints.core.data
+
+import java.util.HashMap
+
+/**
+ * ErrorCode.java Purpose: Maintain a list of HTTP status codes
+ *
+ * @author Steve Siani
+ * @version 1.0
+ */
+enum class ErrorCode (val value: Int, val httpCode: Int) {
+
+ /// TODO: Add more attribute for each needed application protocol
+ // TODO: Example: INVALID_FILE_EXTENSION(2, 415, 25)
+ GENERIC_FAILURE(1, 500) {
+ override fun message(detailMsg: String): String {
+ return "Generic failure. Details : {$detailMsg}"
+ }
+ },
+ INVALID_FILE_EXTENSION(2, 415) {
+ override fun message(detailMsg: String): String {
+ return "Unexpected file extension. Details : {$detailMsg}"
+ }
+ },
+ BLUEPRINT_PATH_MISSING(3, 503) {
+ override fun message(detailMsg: String): String {
+ return "Blueprint path missing or wrong. Details : {$detailMsg}"
+ }
+ },
+ BLUEPRINT_WRITING_FAIL(4, 503) {
+ override fun message(detailMsg: String): String {
+ return "Fail to write blueprint files. Details : {$detailMsg}"
+ }
+ },
+ IO_FILE_INTERRUPT(5, 503) {
+ override fun message(detailMsg: String): String {
+ return "IO file system interruption. Details : {$detailMsg}"
+ }
+ },
+ INVALID_REQUEST_FORMAT(6, 400) {
+ override fun message(detailMsg: String): String {
+ return "Bad request. Details : {$detailMsg}"
+ }
+ },
+ UNAUTHORIZED_REQUEST(7, 401) {
+ override fun message(detailMsg: String): String {
+ return "The request requires user authentication. Details : {$detailMsg}"
+ }
+ },
+ REQUEST_NOT_FOUND(8, 404) {
+ override fun message(detailMsg: String): String {
+ return "Request mapping doesn't exist. Details : {$detailMsg}"
+ }
+ },
+ RESOURCE_NOT_FOUND(9, 404) {
+ override fun message(detailMsg: String): String {
+ return "No response was found for this request in the server. Details : {$detailMsg}"
+ }
+ },
+ CONFLICT_ADDING_RESOURCE(10, 409) {
+ override fun message(detailMsg: String): String {
+ return "Duplicated entry while saving Blueprint. Details : {$detailMsg}"
+ }
+ };
+
+ abstract fun message(detailMsg: String): String
+
+ companion object {
+
+ private val map = HashMap<Int, ErrorCode>()
+
+ init {
+ for (errorCode in ErrorCode.values()) {
+ map[errorCode.value] = errorCode
+ }
+ }
+
+ fun valueOf(value: Int): ErrorCode? {
+ return if (map.containsKey(value)) map[value] else map[1]
+ }
+ }
+} \ No newline at end of file
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintFileUtils.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintFileUtils.kt
index 5a10e43f..9746bf57 100755
--- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintFileUtils.kt
+++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintFileUtils.kt
@@ -24,6 +24,7 @@ import org.apache.commons.io.FileUtils
import org.apache.commons.lang3.StringUtils
import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants
import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
+import org.onap.ccsdk.apps.controllerblueprints.core.data.ErrorCode
import org.onap.ccsdk.apps.controllerblueprints.core.data.ImportDefinition
import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate
import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext
@@ -105,7 +106,8 @@ class BluePrintFileUtils {
val definitionDir = File(definitionPath)
check(definitionDir.exists()) {
- throw BluePrintException("couldn't get definition file under path(${definitionDir.absolutePath})")
+ throw BluePrintException(ErrorCode.BLUEPRINT_PATH_MISSING.value, "couldn't get definition file under " +
+ "path(${definitionDir.absolutePath})")
}
blueprintContext.serviceTemplate.dataTypes?.let {
@@ -192,7 +194,8 @@ class BluePrintFileUtils {
Files.write(definitionFile.toPath(), content.toByteArray(), StandardOpenOption.CREATE_NEW)
check(definitionFile.exists()) {
- throw BluePrintException("couldn't write definition file under path(${definitionFile.absolutePath})")
+ throw BluePrintException(ErrorCode.BLUEPRINT_WRITING_FAIL.value, "couldn't write definition file under " +
+ "path(${definitionFile.absolutePath})")
}
}
@@ -201,7 +204,8 @@ class BluePrintFileUtils {
Files.write(typeFile.toPath(), content.toByteArray(), StandardOpenOption.CREATE_NEW)
check(typeFile.exists()) {
- throw BluePrintException("couldn't write $type.json file under path(${typeFile.absolutePath})")
+ throw BluePrintException(ErrorCode.BLUEPRINT_WRITING_FAIL.value, "couldn't write $type.json file under " +
+ "path(${typeFile.absolutePath})")
}
}
@@ -213,9 +217,21 @@ class BluePrintFileUtils {
"\nTemplate-Tags: <TAGS>"
}
+
+ fun getBluePrintFile(fileName: String, targetPath: Path) : File {
+ val filePath = targetPath.resolve(fileName).toString()
+ val file = File(filePath)
+ check(file.exists()) {
+ throw BluePrintException(ErrorCode.BLUEPRINT_PATH_MISSING.value, "couldn't get definition file under " +
+ "path(${file.absolutePath})")
+ }
+ return file
+ }
+
fun getCbaStorageDirectory(path: String): Path {
check(StringUtils.isNotBlank(path)) {
- throw BluePrintException("CBA Path is missing.")
+ throw BluePrintException(ErrorCode.BLUEPRINT_PATH_MISSING.value, "couldn't get " +
+ "Blueprint folder under path($path)")
}
val fileStorageLocation = Paths.get(path).toAbsolutePath().normalize()