summaryrefslogtreecommitdiffstats
path: root/vnfmarket-be
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket-be')
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonConstant.java56
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonErrorResponse.java6
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java137
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerAddrConfig.java5
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerPathConfig.java27
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/MsbAddrConfig.java4
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/RestUtil.java7
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/ToolUtil.java83
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/entity/BaseData.java9
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/exception/ErrorCodeException.java13
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/impl/MarketplaceDaoImpl.java62
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/resource/PackageManager.java14
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/util/MarketplaceDbUtil.java7
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/BaseHandler.java46
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/PackageHandler.java37
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/entity/CsarQueryCondition.java32
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/entity/response/PackageMeta.java32
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/filemanage/http/ToolUtil.java105
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/onboarding/hooks/validatelifecycle/LifecycleTestExceutor.java56
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/resource/PackageResource.java21
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestConstant.java7
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestfulClient.java47
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapper.java286
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapperUtil.java107
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/test/java/org/onap/vnfsdk/marketplace/resource/PackageResourceTest.java200
25 files changed, 616 insertions, 790 deletions
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonConstant.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonConstant.java
index 5432300f..1ba18cd6 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonConstant.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonConstant.java
@@ -16,6 +16,7 @@
package org.onap.vnfsdk.marketplace.common;
public class CommonConstant {
+
// Package Status
public static final String PACKAGE_STATUS_DELETING = "deleting";
@@ -39,9 +40,9 @@ public class CommonConstant {
public static final String DEFINITIONS = "Definitions";
public static final String CSAR_META = "csar.meta";
-
+
public static final String MANIFEST = ".mf";
-
+
public static final String MF_VERSION_META = "vnf_package_version";
public static final String MF_PRODUCT_NAME = "vnf_product_name";
@@ -53,46 +54,37 @@ public class CommonConstant {
public static final String CSAR_SUFFIX = ".csar";
public static final String HTTP_HEADER_CONTENT_RANGE = "Content-Range";
-
+
public static final String CATALOG_CSAR_DIR_NAME = "/csar";
-
+
public static final String REPORT_CSAR_DIR_NAME = "/reports";
-
+
public static final String COMETD_CHANNEL_PACKAGE_DELETE = "/package/delete";
-
+
public static final String SUCCESS_STR = "SUCCESS";
-
+
public static final int ONBOARDING_THREAD_COUNT = 1;
public static final int SUCESS = 0;
public static final int FAILED = -1;
-
+
public static final String CATALOUGE_UPLOAD_URL = "/openoapi/catalog/v1/csars";
-
+
private CommonConstant (){
- // Cannot create instance of the class
+ // Cannot create instance of the class
}
-
- public static class functionTest
- {
+
+ public static class functionTest
+ {
public static final String FUNCTEST_URL = "/openoapi/vnfsdk/v1/functest/";
public static final String FUNCTEST_RESULT_URL = "/openoapi/vnfsdk/v1/functest/download/";
public static final String FUNCTEST_OPERTYPE_ID = "functiontest";
public static final String FUNCTEST_PACKAGE_EXISTS = "packageExists";
public static final String FUNCTEST_EXEC = "functestexec";
-
+
private functionTest() {
}
}
-
- public static class LifeCycleTest
- {
- public static final String LIFECYCLE_TEST_URL = "/openoapi/nslcm/v1/vnfpackage";
- public static final String LIFECYCLE_TEST_OPERTYPE_ID = "lifecycletest";
- public static final String LIFECYCLE_TEST_EXEC = "lifecycleTestexec";
- private LifeCycleTest() {
- }
- }
-
+
public static class HttpContext {
public static final String CONTENT_TYPE = "Content-Type";
@@ -106,7 +98,16 @@ public class CommonConstant {
private HttpContext() {
}
}
-
+
+ public static class LifeCycleTest
+ {
+ public static final String LIFECYCLE_TEST_URL = "/openoapi/nslcm/v1/vnfpackage";
+ public static final String LIFECYCLE_TEST_OPERTYPE_ID = "lifecycletest";
+ public static final String LIFECYCLE_TEST_EXEC = "lifecycleTestexec";
+ private LifeCycleTest() {
+ }
+ }
+
public static class MethodType {
public static final String POST = "post";
@@ -120,12 +121,12 @@ public class CommonConstant {
private MethodType() {
}
}
-
+
public static class MsbRegisterCode {
public static final int MSDB_REGISTER_RETRIES = 12;
public static final int MSDB_REGISTER_RETRY_SLEEP = 10000;
-
+
public static final int MSDB_REGISTER_FILE_NOT_EXISTS = 2;
public static final int MSDB_REGISTER_SUCESS = 0;
public static final int MSDB_REGISTER_FAILED = -1;
@@ -133,3 +134,4 @@ public class CommonConstant {
}
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonErrorResponse.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonErrorResponse.java
index e2514a88..2c22bdca 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonErrorResponse.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/CommonErrorResponse.java
@@ -18,10 +18,11 @@ package org.onap.vnfsdk.marketplace.common;
public class CommonErrorResponse {
- private String code;
-
private String message;
+ public String getMessage() {
+ return message;
+ }
public static Object failure(String message) {
return message;
@@ -33,3 +34,4 @@ public class CommonErrorResponse {
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java
index 564e7d79..642fc8f0 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/FileUtil.java
@@ -15,16 +15,6 @@
*/
package org.onap.vnfsdk.marketplace.common;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.core.JsonGenerationException;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.io.Resources;
-
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -34,9 +24,19 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
public final class FileUtil {
@@ -101,53 +101,44 @@ public final class FileUtil {
* @return unzip file name
* @throws IOException e1
*/
- public static ArrayList<String> unzip(String zipFileName, String extPlace) throws IOException {
- ZipFile zipFile = null;
- ArrayList<String> unzipFileNams = new ArrayList<String>();
+ public static List<String> unzip(String zipFileName, String extPlace) throws IOException {
+ List<String> unzipFileNams = new ArrayList<>();
- try {
- zipFile = new ZipFile(zipFileName);
+ try (
+ ZipFile zipFile = new ZipFile(zipFileName);
+ ) {
Enumeration<?> fileEn = zipFile.entries();
byte[] buffer = new byte[BUFFER_SIZE];
while (fileEn.hasMoreElements()) {
- InputStream input = null;
- BufferedOutputStream bos = null;
- try {
- ZipEntry entry = (ZipEntry) fileEn.nextElement();
- if (entry.isDirectory()) {
- continue;
- }
+ ZipEntry entry = (ZipEntry) fileEn.nextElement();
+ if (entry.isDirectory()) {
+ continue;
+ }
- input = zipFile.getInputStream(entry);
- File file = new File(extPlace, entry.getName());
- if (!file.getParentFile().exists()) {
- createDirectory(file.getParentFile().getAbsolutePath());
- }
+ File file = new File(extPlace, entry.getName());
+ if (!file.getParentFile().exists()) {
+ createDirectory(file.getParentFile().getAbsolutePath());
+ }
- bos = new BufferedOutputStream(new FileOutputStream(file));
- while (true) {
- int length = input.read(buffer);
- if (length == -1) {
- break;
- }
+ try (
+ InputStream input = zipFile.getInputStream(entry);
+ BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
+ ) {
+ int length = 0;
+ while ((length = input.read(buffer)) != -1) {
bos.write(buffer, 0, length);
}
unzipFileNams.add(file.getAbsolutePath());
- } finally {
- closeOutputStream(bos);
- closeInputStream(input);
}
}
- } finally {
- closeZipFile(zipFile);
}
return unzipFileNams;
}
/**
* close InputStream.
- *
+ *
* @param inputStream the inputstream to close
*/
public static void closeInputStream(InputStream inputStream) {
@@ -162,7 +153,7 @@ public final class FileUtil {
/**
* close OutputStream.
- *
+ *
* @param outputStream the output stream to close
*/
public static void closeOutputStream(OutputStream outputStream) {
@@ -174,7 +165,7 @@ public final class FileUtil {
logger.info("error while closing OutputStream!", e1);
}
}
-
+
public static void closeFileStream(FileInputStream ifs) {
try {
if (ifs != null) {
@@ -187,14 +178,13 @@ public final class FileUtil {
/**
* close zipFile.
- *
+ *
* @param zipFile the zipFile to close
*/
public static void closeZipFile(ZipFile zipFile) {
try {
if (zipFile != null) {
zipFile.close();
- zipFile = null;
}
} catch (IOException e1) {
logger.info("close ZipFile error!", e1);
@@ -213,34 +203,34 @@ public final class FileUtil {
return deleteFile(file);
}
- public static boolean writeJsonDatatoFile(String fileAbsPath, Object obj)
- {
+ public static boolean writeJsonDatatoFile(String fileAbsPath, Object obj)
+ {
logger.info("Write JsonData to file :"+fileAbsPath);
-
+
boolean bResult = false;
if(checkFileExists(fileAbsPath))
{
deleteFile(fileAbsPath);
}
-
- ObjectMapper mapper = new ObjectMapper();
- try
+
+ ObjectMapper mapper = new ObjectMapper();
+ try
{
mapper.writeValue(new File(fileAbsPath), obj);
bResult = true;
- }
- catch (JsonGenerationException e)
+ }
+ catch (JsonGenerationException e)
{
logger.info("JsonGenerationException Exception: writeJsonDatatoFile-->"+fileAbsPath, e);
- }
- catch (JsonMappingException e)
+ }
+ catch (JsonMappingException e)
{
logger.info("JsonMappingException Exception: writeJsonDatatoFile-->"+fileAbsPath, e);
- }
- catch (IOException e)
+ }
+ catch (IOException e)
{
logger.info("IOException Exception: writeJsonDatatoFile-->"+fileAbsPath, e);
- }
+ }
return bResult;
}
@@ -251,44 +241,44 @@ public final class FileUtil {
logger.info("read JsonData from file , file not found :"+fileAbsPath);
return null;
}
-
+
logger.info("read JsonData from file :"+fileAbsPath);
-
- T obj = null;
+
+ T obj = null;
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
- try
+ try
{
obj = mapper.readValue(new File(fileAbsPath), clazz);
- }
- catch (JsonParseException e1)
+ }
+ catch (JsonParseException e1)
{
logger.info("JsonParseException Exception: writeJsonDatatoFile-->"+fileAbsPath, e1);
- }
- catch (JsonMappingException e1)
+ }
+ catch (JsonMappingException e1)
{
logger.info("JsonMappingException Exception: writeJsonDatatoFile-->"+fileAbsPath, e1);
- }
- catch (IOException e1)
+ }
+ catch (IOException e1)
{
logger.info("IOException Exception: writeJsonDatatoFile-->"+fileAbsPath, e1);
}
return obj;
}
-
- public static boolean deleteDirectory(String path)
+
+ public static boolean deleteDirectory(String path)
{
File file = new File(path);
return deleteDirectory(file);
}
-
- public static boolean deleteDirectory(File file)
+
+ public static boolean deleteDirectory(File file)
{
if (!file.exists())
{
- return true;
- }
- if (file.isDirectory())
+ return true;
+ }
+ if (file.isDirectory())
{
for (File f : file.listFiles())
{
@@ -298,3 +288,4 @@ public final class FileUtil {
return file.delete();
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerAddrConfig.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerAddrConfig.java
index 2adf1b89..88913a1c 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerAddrConfig.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerAddrConfig.java
@@ -17,9 +17,11 @@ package org.onap.vnfsdk.marketplace.common;
public class HttpServerAddrConfig {
-
protected static String httpServerAddress;
+ private HttpServerAddrConfig () {
+ }
+
public static String getHttpServerAddress() {
return httpServerAddress;
}
@@ -29,3 +31,4 @@ public class HttpServerAddrConfig {
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerPathConfig.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerPathConfig.java
index 3d5cfacc..af6f428f 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerPathConfig.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/HttpServerPathConfig.java
@@ -14,18 +14,30 @@
* limitations under the License.
*/
package org.onap.vnfsdk.marketplace.common;
+import java.net.InetAddress;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class HttpServerPathConfig {
+ public static final Logger logger = LoggerFactory.getLogger(FileUtil.class);
+
protected static String httpServerPath;
-
+
+ private HttpServerPathConfig() {
+ }
+
static
{
-// CatalogAppConfiguration configuration = new CatalogAppConfiguration();
-// Config.setConfigration(configuration);
-// Config.getConfigration().setMsbServerAddr("http://127.0.0.1:80");
- MsbAddrConfig.setMsbAddress("http://127.0.0.1:8080");
- HttpServerAddrConfig.setHttpServerAddress("http://127.0.0.1:8080");
- HttpServerPathConfig.setHttpServerPath("../tomcat/webapps/ROOT/");
+ try {
+ InetAddress address = InetAddress.getByName("localhost");
+ String msbAddress = "http://" + address.getHostAddress() + ":8080";
+ MsbAddrConfig.setMsbAddress(msbAddress);
+ HttpServerAddrConfig.setHttpServerAddress(msbAddress);
+ HttpServerPathConfig.setHttpServerPath("../tomcat/webapps/ROOT/");
+ } catch (Exception e) {
+ logger.info("error while config htttp server", e);
+ }
}
public static String getHttpServerPath() {
@@ -36,3 +48,4 @@ public class HttpServerPathConfig {
HttpServerPathConfig.httpServerPath = httpServerPath;
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/MsbAddrConfig.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/MsbAddrConfig.java
index d2ff4b55..379f1037 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/MsbAddrConfig.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/MsbAddrConfig.java
@@ -19,6 +19,9 @@ public class MsbAddrConfig {
protected static String msbAddress;
+ private MsbAddrConfig() {
+ }
+
public static String getMsbAddress() {
return msbAddress;
}
@@ -28,3 +31,4 @@ public class MsbAddrConfig {
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/RestUtil.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/RestUtil.java
index 557428d6..ea157ace 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/RestUtil.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/RestUtil.java
@@ -19,16 +19,17 @@ import javax.ws.rs.core.Response;
public class RestUtil {
-
+ private RestUtil() {
+ }
/**
* get rest exception.
* @param errorMsg error message
* @return Response
*/
public static Response getRestException(String errorMsg) {
- String code = "001";
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
- .entity(new CommonErrorResponse(errorMsg)).build();
+ .entity(new CommonErrorResponse(errorMsg)).build();
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/ToolUtil.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/ToolUtil.java
index b9fe5caa..1f3a79d6 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/ToolUtil.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/common/ToolUtil.java
@@ -15,27 +15,26 @@
*/
package org.onap.vnfsdk.marketplace.common;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.UUID;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+
/**
* common utility class.
- *
+ *
*/
public class ToolUtil {
private static final Logger LOG = LoggerFactory.getLogger(ToolUtil.class);
@@ -46,6 +45,9 @@ public class ToolUtil {
public static final int FILE_PERCENT = 1024 * 1024; // 1M
+ private ToolUtil() {
+ }
+
public static boolean isEmptyString(String val) {
return val == null || "".equals(val);
}
@@ -60,7 +62,7 @@ public class ToolUtil {
/**
* trimed string.
- *
+ *
* @param val string array to trim
* @return String[]
*/
@@ -82,7 +84,7 @@ public class ToolUtil {
/**
* store chunk file to local temp directory.
- *
+ *
* @param dirName directory name
* @param fileName file name
* @param uploadedInputStream upload input stream
@@ -97,32 +99,29 @@ public class ToolUtil {
tmpDir.mkdirs();
}
File file = new File(tmpDir + File.separator + fileName);
- OutputStream os = null;
- try {
+
+ try (
+ OutputStream os = new FileOutputStream(file, true);
+ )
+ {
int read = 0;
byte[] bytes = new byte[1024];
- os = new FileOutputStream(file, true);
while ((read = uploadedInputStream.read(bytes)) != -1) {
os.write(bytes, 0, read);
}
os.flush();
return file.getAbsolutePath();
- } finally {
- if (os != null) {
- os.close();
- }
}
}
/**
* get temp dirctory when upload package.
- *
+ *
* @param dirName temp directory name
* @param fileName package name
* @return String
*/
public static String getTempDir(String dirName, String fileName) {
- // File tmpDir = new File(File.separator + dirName);
return Thread.currentThread().getContextClassLoader().getResource("/").getPath() + dirName + File.separator
+ fileName.replace(".csar", "");
}
@@ -134,13 +133,13 @@ public class ToolUtil {
/**
* delete file.
- *
+ *
* @param dirName the directory of file
* @param fileName file name
* @return boolean
*/
public static boolean deleteFile(String dirName, String fileName) {
- File tmpDir = new File(getCataloguePath() + File.separator + dirName);
+ File tmpDir = new File(File.separator + dirName);
if (!tmpDir.exists()) {
return true;
}
@@ -151,22 +150,17 @@ public class ToolUtil {
return true;
}
- public static String getCataloguePath() {
-// return Config.getConfigration().getCataloguePath();
- return "";
- }
-
public static String getCatalogueCsarPath() {
- return getCataloguePath() + File.separator + CATALOGUE_CSAR_DIR_NAME;
+ return File.separator + CATALOGUE_CSAR_DIR_NAME;
}
public static String getCatalogueImagePath() {
- return getCataloguePath() + File.separator + CATALOGUE_IMAGE_DIR_NAME;
+ return File.separator + CATALOGUE_IMAGE_DIR_NAME;
}
/**
* get file size.
- *
+ *
* @param file file which to get the size
* @param fileUnit file unit
* @return String file size
@@ -187,7 +181,7 @@ public class ToolUtil {
/**
* get file size by content.
- *
+ *
* @param contentRange content range
* @return String
*/
@@ -199,7 +193,7 @@ public class ToolUtil {
/**
* fix package format.
- *
+ *
* @param csarId package ID
* @return String
*/
@@ -214,7 +208,7 @@ public class ToolUtil {
/**
* delete the file and file directory.
- *
+ *
* @param dir file
* @return boolean
*/
@@ -231,17 +225,9 @@ public class ToolUtil {
return dir.delete();
}
- // public static boolean unZipCsar(String fileLocation) throws IOException {
- // String tempfolder=System.getProperty("java.io.tmpdir");
- // ArrayList<String> unzipFiles = FileUtil.unzip(fileLocation, tempfolder);
- // if(unzipFiles.isEmpty()){
- // return true;
- // }
- // }
-
/**
* judge the file's format is yaml or not.
- *
+ *
* @param file file to judge
* @return boolean
*/
@@ -254,7 +240,7 @@ public class ToolUtil {
/**
* remove the csar suffix.
- *
+ *
* @param csarName package name
* @return String
*/
@@ -264,7 +250,7 @@ public class ToolUtil {
/**
* add the csar fuffix.
- *
+ *
* @param csarName package name
* @return String
*/
@@ -277,7 +263,7 @@ public class ToolUtil {
/**
* process file name.
- *
+ *
* @param fileName file's name
* @return String
*/
@@ -292,7 +278,7 @@ public class ToolUtil {
/**
* exchange object to string.
- *
+ *
* @param obj object
* @return String
*/
@@ -311,7 +297,7 @@ public class ToolUtil {
/**
* get the size format according file size.
- *
+ *
* @param fileSize file size
* @return size format
*/
@@ -353,7 +339,7 @@ public class ToolUtil {
Gson gson = new Gson();
return gson.toJson(template);
}
-
+
/**
* @param value
* @return
@@ -365,5 +351,6 @@ public class ToolUtil {
return value.toString();
}
-
+
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/entity/BaseData.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/entity/BaseData.java
index 30a074a2..2f01d6cc 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/entity/BaseData.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/entity/BaseData.java
@@ -16,5 +16,14 @@
package org.onap.vnfsdk.marketplace.db.entity;
public class BaseData {
+ private String baseMember;
+ public String getBaseMember() {
+ return baseMember;
+ }
+
+ public void setBaseMember(String baseMember) {
+ this.baseMember = baseMember;
+ }
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/exception/ErrorCodeException.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/exception/ErrorCodeException.java
index 9921a8cb..85d486c9 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/exception/ErrorCodeException.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/exception/ErrorCodeException.java
@@ -23,18 +23,6 @@ public class ErrorCodeException extends Exception {
private final int errorCode;
private final String[] arguments;
- private static String defaultText = null;
-
-
- public static void setDefaultText(String text) {
- defaultText = text;
- }
-
-
- public static String getDefaultText() {
- return defaultText;
- }
-
public ErrorCodeException(int code, String debugMessage) {
this(code, debugMessage, null);
@@ -145,3 +133,4 @@ public class ErrorCodeException extends Exception {
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/impl/MarketplaceDaoImpl.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/impl/MarketplaceDaoImpl.java
index 67cfb355..1e152991 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/impl/MarketplaceDaoImpl.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/impl/MarketplaceDaoImpl.java
@@ -32,9 +32,9 @@ import org.slf4j.LoggerFactory;
/**
* This class is the implementation for the DAO Layer for Driver Manager.
* <br/>
- *
+ *
* @author
- * @version
+ * @version
*/
public class MarketplaceDaoImpl implements IMarketplaceDao {
@@ -43,12 +43,12 @@ public class MarketplaceDaoImpl implements IMarketplaceDao {
private SqlSessionFactory sqlSessionFactory = null;
/**
- *
+ *
* Constructor<br/>
* <p>
* </p>
- *
- * @since
+ *
+ * @since
*/
public MarketplaceDaoImpl() {
sqlSessionFactory = ConnectionUtil.getSession();
@@ -57,21 +57,20 @@ public class MarketplaceDaoImpl implements IMarketplaceDao {
/**
* get all package data.
* <br/>
- *
+ *
* @return
- * @since
+ * @since
*/
+ @Override
public List<PackageData> getAllPackageData() {
SqlSession session = sqlSessionFactory.openSession();
- List<PackageData> csars = null;
+ List<PackageData> csars = null;
try {
IMarketplaceMapper mapper = session.getMapper(IMarketplaceMapper.class);
csars = mapper.getAllPackageData();
session.commit();
} catch(PersistenceException e) {
LOGGER.error("Exception caught {}", e);
-// throw new DriverManagerException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
-// ErrorCode.INVALID_DB);
} finally {
session.close();
}
@@ -81,59 +80,57 @@ public class MarketplaceDaoImpl implements IMarketplaceDao {
/**
* saving the package data object to the DB using the mybatis.
* <br/>
- *
+ *
* @param dirverInstance
- * @since
+ * @since
*/
- public void savePackageData(PackageData lPackageData) {
- SqlSession session = sqlSessionFactory.openSession();
+ @Override
+ public void savePackageData(PackageData lPackageData) {
+ SqlSession session = sqlSessionFactory.openSession();
try {
IMarketplaceMapper mapper = session.getMapper(IMarketplaceMapper.class);
mapper.savePackageData(lPackageData);
session.commit();
} catch(PersistenceException e) {
LOGGER.error("Exception caught {}", e);
-// throw new DriverManagerException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
-// ErrorCode.INVALID_DB);
} finally {
session.close();
}
-
- }
- public List<PackageData> getPackageData(String csarId) {
+ }
+
+ @Override
+ public List<PackageData> getPackageData(String csarId) {
SqlSession session = sqlSessionFactory.openSession();
- List<PackageData> csars = null;
+ List<PackageData> csars = null;
try {
IMarketplaceMapper mapper = session.getMapper(IMarketplaceMapper.class);
csars = mapper.getPackageData(csarId);
session.commit();
} catch(PersistenceException e) {
LOGGER.error("Exception caught {}", e);
-// throw new DriverManagerException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
-// ErrorCode.INVALID_DB);
} finally {
session.close();
}
return csars;
- }
+ }
- public void deletePackageData(String csarId) {
- SqlSession session = sqlSessionFactory.openSession();
+ @Override
+ public void deletePackageData(String csarId) {
+ SqlSession session = sqlSessionFactory.openSession();
try {
IMarketplaceMapper mapper = session.getMapper(IMarketplaceMapper.class);
mapper.deletePackageData(csarId);
session.commit();
} catch(PersistenceException e) {
- LOGGER.error("Exception caught {}", e);
-// throw new DriverManagerException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
-// ErrorCode.INVALID_DB);
+ LOGGER.error("Exception caught {}", e);;
} finally {
session.close();
}
-
- }
+ }
+
+ @Override
public void updatePackageData(PackageData oPackageData) {
SqlSession session = sqlSessionFactory.openSession();
try {
@@ -145,6 +142,7 @@ public class MarketplaceDaoImpl implements IMarketplaceDao {
} finally {
session.close();
}
-
- }
+
+ }
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/resource/PackageManager.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/resource/PackageManager.java
index 63573715..113e9663 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/resource/PackageManager.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/resource/PackageManager.java
@@ -17,6 +17,7 @@ package org.onap.vnfsdk.marketplace.db.resource;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.onap.vnfsdk.marketplace.db.common.Parameters;
@@ -64,10 +65,10 @@ public class PackageManager {
* @return package data list
* @throws MarketplaceResourceException e
*/
- public ArrayList<PackageData> queryPackageByCsarId(String csarId)
+ public List<PackageData> queryPackageByCsarId(String csarId)
throws MarketplaceResourceException {
LOGGER.info("start query package info by csarid." + csarId);
- ArrayList<PackageData> data = handler.queryByID(csarId);
+ List<PackageData> data = handler.queryByID(csarId);
LOGGER.info("query package info end.size:" + data.size() + "detail:"
+ MarketplaceDbUtil.objectToString(data));
return data;
@@ -83,11 +84,11 @@ public class PackageManager {
* @return package data list
* @throws MarketplaceResourceException e
*/
- public ArrayList<PackageData> queryPackage(String name, String provider, String version,
+ public List<PackageData> queryPackage(String name, String provider, String version,
String deletionPending, String type) throws MarketplaceResourceException {
LOGGER.info("start query package info.name:" + name + " provider:" + provider + " version:"
+ version + " type:" + type);
- Map<String, String> queryParam = new HashMap<String, String>();
+ Map<String, String> queryParam = new HashMap<>();
if (MarketplaceDbUtil.isNotEmpty(name)) {
queryParam.put(Parameters.name.name(), name);
}
@@ -103,7 +104,7 @@ public class PackageManager {
if (MarketplaceDbUtil.isNotEmpty(provider)) {
queryParam.put(Parameters.provider.name(), provider);
}
- ArrayList<PackageData> data = handler.query(queryParam);
+ List<PackageData> data = handler.query(queryParam);
LOGGER.info("query package info end.size:" + data.size() + "detail:"
+ MarketplaceDbUtil.objectToString(data));
return data;
@@ -131,7 +132,7 @@ public class PackageManager {
//STEP 1: Get the Existing download count from DB
//-------------------------------------------------
- ArrayList<PackageData> data = handler.queryByID(packageId);
+ List<PackageData> data = handler.queryByID(packageId);
if(data.isEmpty())
{
LOGGER.info("Package Info not foun for ID:" + packageId);
@@ -149,3 +150,4 @@ public class PackageManager {
LOGGER.info("Download count updated to :" + idownloadcount);
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/util/MarketplaceDbUtil.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/util/MarketplaceDbUtil.java
index da175330..3aad5280 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/util/MarketplaceDbUtil.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/util/MarketplaceDbUtil.java
@@ -16,12 +16,14 @@
package org.onap.vnfsdk.marketplace.db.util;
-import com.google.gson.Gson;
-
import java.util.UUID;
+import com.google.gson.Gson;
+
public class MarketplaceDbUtil {
+ private MarketplaceDbUtil() {
+ }
public static String generateId() {
return UUID.randomUUID().toString();
@@ -46,3 +48,4 @@ public class MarketplaceDbUtil {
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/BaseHandler.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/BaseHandler.java
index cd413296..4f3a3a6f 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/BaseHandler.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/BaseHandler.java
@@ -27,22 +27,19 @@ import org.onap.vnfsdk.marketplace.db.util.MarketplaceDbUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.Gson;
-
/**
* an abstract class for NFV wrapper class.
* provide the common methods to process the CRUD rest request.
- *
+ *
*/
public abstract class BaseHandler<T extends BaseData> {
private static final Logger logger = LoggerFactory.getLogger(BaseHandler.class);
- public Gson gson = new Gson();
/**
- * create date.
+ * create date.
* @param data data to create
* @param resouceType resouce type
* @return T
@@ -50,16 +47,14 @@ public abstract class BaseHandler<T extends BaseData> {
*/
@SuppressWarnings({"unchecked", "rawtypes"})
public PackageData create(PackageData data, String resouceType) throws MarketplaceResourceException {
- PackageData rtnData = null;
+ PackageData rtnData = null;
logger.info("BaseHandler:start create data.info:" + MarketplaceDbUtil.objectToString(data));
try {
-// check(data);
IMarketplaceDao dao = new MarketplaceDaoImpl();
dao.savePackageData(data);
rtnData = data;
} catch (Exception e1) {
logger.error("BaseHandler:error while creating " + resouceType, e1);
- // throw e1;
}
logger.info("BaseHandler:create data end.info:" + MarketplaceDbUtil.objectToString(data));
return rtnData;
@@ -72,7 +67,7 @@ public abstract class BaseHandler<T extends BaseData> {
* @throws MarketplaceResourceException e1
*/
@SuppressWarnings({"rawtypes", "unchecked"})
- public void delete(T data, String resouceType) throws MarketplaceResourceException {
+ public void delete(T data) throws MarketplaceResourceException {
logger.info("BaseHandler:start delete data.info:" + MarketplaceDbUtil.objectToString(data));
IMarketplaceDao dao = new MarketplaceDaoImpl();
dao.deletePackageData(((PackageData)data).getCsarId());
@@ -87,12 +82,11 @@ public abstract class BaseHandler<T extends BaseData> {
* @throws MarketplaceResourceException e1
*/
@SuppressWarnings({"rawtypes", "unchecked"})
- public List<PackageData> query(Map<String, String> queryParam, String resouceType)
+ public List<PackageData> query(Map<String, String> queryParam)
throws MarketplaceResourceException {
logger.info("BaseHandler:start query data .info:" + MarketplaceDbUtil.objectToString(queryParam));
- List<PackageData> datas = null;
IMarketplaceDao dao = new MarketplaceDaoImpl();
- datas = dao.getAllPackageData();
+ List<PackageData> datas = dao.getAllPackageData();
logger.info("BaseHandler: query data end .info:" + MarketplaceDbUtil.objectToString(datas));
return datas;
}
@@ -105,17 +99,9 @@ public abstract class BaseHandler<T extends BaseData> {
* @throws MarketplaceResourceException e1
*/
@SuppressWarnings({"rawtypes", "unchecked"})
- public List<T> unionQuery(String filter, String resouceType) throws MarketplaceResourceException {
+ public List<T> unionQuery(String filter) throws MarketplaceResourceException {
logger.info("BaseHandler:start union query data.fliter:" + filter);
List<T> datas = null;
- /* try {
- BaseDao dao = DaoManager.getInstance().getDao(resouceType);
- datas = dao.unionQuery(filter);
-
- } catch (MarketplaceResourceException e1) {
- logger.error("BaseHandler:error while union querying " + resouceType, e1);
- throw e1;
- }*/
logger.info("BaseHandler:union query data end .info:" + MarketplaceDbUtil.objectToString(datas));
return datas;
}
@@ -128,36 +114,28 @@ public abstract class BaseHandler<T extends BaseData> {
* @throws MarketplaceResourceException e1
*/
@SuppressWarnings({"rawtypes", "unchecked"})
- public int unionDelete(String filter, String resouceType) throws MarketplaceResourceException {
+ public int unionDelete(String filter) throws MarketplaceResourceException {
logger.info("BaseHandler:start delete query data.fliter:" + filter);
-// int num;
int num=0;
- /*try {
- BaseDao dao = DaoManager.getInstance().getDao(resouceType);
- num = dao.unionDelete(filter);
-
- } catch (MarketplaceResourceException e1) {
- logger.error("BaseHandler:error while union delete " + resouceType, e1);
- throw e1;
- }*/
logger.info("BaseHandler:union delete data end .num:" + num);
return num;
}
@SuppressWarnings({"rawtypes", "unchecked"})
- public void update(T data, String resouceType) throws MarketplaceResourceException {
+ public void update(T data) throws MarketplaceResourceException {
logger.info("BaseHandler:start update data.info:" + MarketplaceDbUtil.objectToString(data));
IMarketplaceDao dao = new MarketplaceDaoImpl();
dao.updatePackageData((PackageData)data);
logger.info("update data end");
}
-
+
/**
* check if the related object id exists in the system.
- *
+ *
* @param data data to check
* @throws MarketplaceResourceException e
*/
public abstract void check(T data) throws MarketplaceResourceException;
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/PackageHandler.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/PackageHandler.java
index 3619a745..b526f1b9 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/PackageHandler.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/db/wrapper/PackageHandler.java
@@ -16,10 +16,9 @@
package org.onap.vnfsdk.marketplace.db.wrapper;
import java.util.ArrayList;
-import java.util.Map;
+import java.util.List;
import org.onap.vnfsdk.marketplace.db.common.MarketplaceResourceType;
-import org.onap.vnfsdk.marketplace.db.common.Parameters;
import org.onap.vnfsdk.marketplace.db.entity.PackageData;
import org.onap.vnfsdk.marketplace.db.exception.MarketplaceResourceException;
import org.onap.vnfsdk.marketplace.db.impl.MarketplaceDaoImpl;
@@ -65,7 +64,7 @@ public class PackageHandler extends BaseHandler<PackageData> {
logger.info("packageHandler:start delete package info.");
PackageData packageData = new PackageData();
packageData.setCsarId(id);
- delete(packageData, MarketplaceResourceType.PACKAGE.name());
+ delete(packageData);
logger.info("packageHandler: delete package info end.");
}
@@ -75,30 +74,10 @@ public class PackageHandler extends BaseHandler<PackageData> {
* @return PackageData list
* @throws MarketplaceResourceException e
*/
- public ArrayList<PackageData> query(Map<String, String> queryParam)
+ public List<PackageData> queryByID(String csarID)
throws MarketplaceResourceException {
logger.info("packageHandler:start query package info.");
- ArrayList<PackageData> data = new ArrayList<PackageData>();
- Object result = query(queryParam, MarketplaceResourceType.PACKAGE.name());
- if (result != null) {
- data = (ArrayList<PackageData>) result;
- } else {
- logger.info("packageHandler: query package info is null.");
- }
- logger.info("packageHandler: query package info end.");
- return data;
- }
-
- /**
- * query package data by map.
- * @param queryParam map data
- * @return PackageData list
- * @throws MarketplaceResourceException e
- */
- public ArrayList<PackageData> queryByID(String csarID)
- throws MarketplaceResourceException {
- logger.info("packageHandler:start query package info.");
- ArrayList<PackageData> data = new ArrayList<PackageData>();
+ List<PackageData> data = new ArrayList<>();
logger.info("packageHandler:start query data .info:" + csarID);
IMarketplaceDao dao = new MarketplaceDaoImpl();
Object result = dao.getPackageData(csarID);
@@ -111,13 +90,9 @@ public class PackageHandler extends BaseHandler<PackageData> {
return data;
}
- public void update(PackageData oPackageData) throws MarketplaceResourceException{
- update(oPackageData, MarketplaceResourceType.PACKAGE.name());
- logger.info("packageHandler: update package info end.");
- }
-
@Override
public void check(PackageData packageData) throws MarketplaceResourceException {
-
+ throw new UnsupportedOperationException();
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/entity/CsarQueryCondition.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/entity/CsarQueryCondition.java
deleted file mode 100644
index 7344336c..00000000
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/entity/CsarQueryCondition.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright 2017 Huawei Technologies Co., Ltd.
- *
- * 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.vnfsdk.marketplace.entity;
-
-
-public class CsarQueryCondition {
-
- private String csarId;
-
- private String name;
-
- private String provider;
-
- private String version;
-
- private Boolean deletionPending;
-
- private EnumType type;
-}
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/entity/response/PackageMeta.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/entity/response/PackageMeta.java
index 49b78429..e094fc87 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/entity/response/PackageMeta.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/entity/response/PackageMeta.java
@@ -82,14 +82,6 @@ public class PackageMeta {
this.size = size;
}
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
public String getProvider() {
return provider;
}
@@ -98,6 +90,14 @@ public class PackageMeta {
this.provider = provider;
}
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
public String getType() {
return type;
}
@@ -139,6 +139,13 @@ public class PackageMeta {
}
+ public String getDetails() {
+ return details;
+ }
+
+ public void setDetails(String details) {
+ this.details = details;
+ }
public String getShortDesc() {
return shortDesc;
@@ -148,14 +155,6 @@ public class PackageMeta {
this.shortDesc = shortDesc;
}
- public String getDetails() {
- return details;
- }
-
- public void setDetails(String details) {
- this.details = details;
- }
-
public String getRemarks() {
return remarks;
}
@@ -182,3 +181,4 @@ public class PackageMeta {
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/filemanage/http/ToolUtil.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/filemanage/http/ToolUtil.java
index 1b45e75f..1d5d46f9 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/filemanage/http/ToolUtil.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/filemanage/http/ToolUtil.java
@@ -17,7 +17,6 @@ package org.onap.vnfsdk.marketplace.filemanage.http;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -31,6 +30,8 @@ import org.slf4j.LoggerFactory;
public class ToolUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(ToolUtil.class);
+ private ToolUtil() {
+ }
/**
* copy from directory.
* @param srcDirName source directory name
@@ -42,49 +43,36 @@ public class ToolUtil {
public static boolean copyDirectory(String srcDirName, String destDirName, boolean overlay)
throws IOException {
File srcDir = new File(srcDirName);
- if (!srcDir.exists()) {
- return false;
- } else if (!srcDir.isDirectory()) {
+ if (!srcDir.exists() || !srcDir.isDirectory()) {
return false;
}
- if (!destDirName.endsWith(File.separator)) {
- destDirName = destDirName + File.separator;
+ String useDestDirName = destDirName;
+ if (!useDestDirName.endsWith(File.separator)) {
+ useDestDirName += File.separator;
}
- File destDir = new File(destDirName);
- if (destDir.exists()) {
- if (overlay) {
+ File destDir = new File(useDestDirName);
+ if (destDir.exists() && overlay) {
new File(destDirName).delete();
- } else {
+ } else if ((destDir.exists() && !overlay) || (!destDir.exists() && !destDir.mkdirs())) {
return false;
- }
- } else {
- if (!destDir.mkdirs()) {
- return false;
- }
}
boolean flag = true;
File[] files = srcDir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
flag = copyFile(files[i].getAbsolutePath(), destDirName + files[i].getName(), true);
- if (!flag) {
- break;
- }
} else if (files[i].isDirectory()) {
flag = copyDirectory(files[i].getAbsolutePath(), destDirName + files[i].getName(), overlay);
- if (!flag) {
- break;
- }
+ }
+ if (!flag) {
+ String message = "Copy catagory " + srcDirName + " to " + destDirName + " failed!";
+ LOGGER.error(message);
+ return false;
}
}
- if (!flag) {
- String message = "Copy catagory " + srcDirName + " to " + destDirName + " failed!";
- LOGGER.error(message);
- return false;
- } else {
- return true;
- }
+
+ return true;
}
/**
@@ -97,56 +85,36 @@ public class ToolUtil {
public static boolean copyFile(String srcFileName, String destFileName, boolean overlay) {
File srcFile = new File(srcFileName);
- if (!srcFile.exists()) {
+ if (!srcFile.exists() || !srcFile.isFile()) {
String message = "Source file : " + srcFileName + " not exist !";
LOGGER.error(message);
return false;
- } else if (!srcFile.isFile()) {
- return false;
}
File destFile = new File(destFileName);
- if (destFile.exists()) {
- if (overlay) {
+ if (destFile.exists() && overlay) {
new File(destFileName).delete();
- }
- } else {
- if (!destFile.getParentFile().exists()) {
- if (!destFile.getParentFile().mkdirs()) {
- return false;
- }
- }
+ } else if (!destFile.exists() && !destFile.getParentFile().exists() && !destFile.getParentFile().mkdirs()) {
+ return false;
}
int byteread = 0;
- InputStream in = null;
- OutputStream out = null;
- try {
- in = new FileInputStream(srcFile);
- out = new FileOutputStream(destFile);
+ try (
+ InputStream in = new FileInputStream(srcFile);
+ OutputStream out = new FileOutputStream(destFile);
+ ) {
byte[] buffer = new byte[1024];
while ((byteread = in.read(buffer)) != -1) {
out.write(buffer, 0, byteread);
}
return true;
- } catch (FileNotFoundException e1) {
- return false;
- } catch (IOException e1) {
+ } catch (IOException e) {
+ LOGGER.error("IOException in copyFile", e);
return false;
- } finally {
- try {
- if (out != null) {
- out.close();
- }
- if (in != null) {
- in.close();
- }
- } catch (IOException e1) {
- e1.printStackTrace();
- }
}
+
}
/**
@@ -155,18 +123,16 @@ public class ToolUtil {
* @return boolean
*/
public static boolean createDir(String destDirName) {
- File dir = new File(destDirName);
+ String useDestDirName = destDirName;
+ if (!useDestDirName.endsWith(File.separator)) {
+ useDestDirName += File.separator;
+ }
+ File dir = new File(useDestDirName);
if (dir.exists()) {
dir.delete();
}
- if (!destDirName.endsWith(File.separator)) {
- destDirName = destDirName + File.separator;
- }
- if (dir.mkdirs()) {
- return true;
- } else {
- return false;
- }
+
+ return dir.mkdirs();
}
public static String getHttpServerAbsolutePath() {
@@ -190,9 +156,10 @@ public class ToolUtil {
}
return dir.delete();
}
-
+
public static String getAppDeployPath()
{
return Thread.currentThread().getContextClassLoader().getResource("/").getPath();
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/onboarding/hooks/validatelifecycle/LifecycleTestExceutor.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/onboarding/hooks/validatelifecycle/LifecycleTestExceutor.java
index 38ca5794..21a61add 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/onboarding/hooks/validatelifecycle/LifecycleTestExceutor.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/onboarding/hooks/validatelifecycle/LifecycleTestExceutor.java
@@ -37,38 +37,38 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-public class LifecycleTestExceutor
+public class LifecycleTestExceutor
{
- private static final Logger logger = LoggerFactory.getLogger(LifecycleTestExceutor.class);
+ private static final Logger logger = LoggerFactory.getLogger(LifecycleTestExceutor.class);
public static final String CATALOUGE_UPLOAD_URL_IN = "{0}:{1}/openoapi/catalog/v1/csars";
private LifecycleTestExceutor()
{}
/**
- * Interface to Send Request to Start Function test
+ * Interface to Send Request to Start Function test
* @param onBoradFuncTestReq
* @return
*/
@SuppressWarnings("unchecked")
public static String uploadPackageToCatalouge(OnBoradingRequest onBoradFuncTestReq)
- {
+ {
String packagePath = onBoradFuncTestReq.getPackagePath() + File.separator + onBoradFuncTestReq.getPackageName();
logger.info("Package file path uploadPackageToCatalouge:" + packagePath);
- String catalougeCsarId = null;
+ String catalougeCsarId = null;
MsbDetails oMsbDetails = MsbDetailsHolder.getMsbDetails();
if(null == oMsbDetails)
{
logger.error("Failed to get MSB details during uploadPackageToCatalouge !!!");
return catalougeCsarId;
}
-
+
File fileData = new File (packagePath);
-
- MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+
+ MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("file", fileData, ContentType.MULTIPART_FORM_DATA, onBoradFuncTestReq.getPackageName());
-
+
//IP and Port needs to be configured !!!
RestResponse rsp = RestfulClient.post(oMsbDetails.getDefaultServer().getHost(),Integer.parseInt(oMsbDetails.getDefaultServer().getPort()),CommonConstant.CATALOUGE_UPLOAD_URL,builder.build());
if(!checkValidResponse(rsp))
@@ -79,16 +79,16 @@ public class LifecycleTestExceutor
logger.info("Response for uploadPackageToCatalouge :" + rsp.getResult());
catalougeCsarId = getCsarIdValue(rsp.getResult());
-
+
logger.info("CSARID for uploadPackageToCatalouge :" + catalougeCsarId);
- return catalougeCsarId;
+ return catalougeCsarId;
}
public static String execlifecycleTest(OnBoradingRequest onBoradFuncTestReq, LifeCycleTestReq oLifeCycleTestReq)
- {
+ {
String packagePath = onBoradFuncTestReq.getPackagePath() + File.separator + onBoradFuncTestReq.getPackageName();
logger.info("Package file path Function test:" + packagePath);
@@ -108,12 +108,12 @@ public class LifecycleTestExceutor
oMsbDetails.getDefaultServer().getPort(),
CommonConstant.LifeCycleTest.LIFECYCLE_TEST_URL, rawDataJson);
- if(!checkValidResponse(oResponse)) {
+ if(!checkValidResponse(oResponse)) {
logger.error("execlifecycleTest response is faliure :"+ oResponse.getStatusCode());
return null;
}
logger.info("Response execlifecycleTest :"+ oResponse.getResult());
- return oResponse.getResult();
+ return oResponse.getResult();
}
/**
@@ -121,29 +121,29 @@ public class LifecycleTestExceutor
* @param rsp
* @return
*/
- private static boolean checkValidResponse(RestResponse rsp)
+ private static boolean checkValidResponse(RestResponse rsp)
{
- if (rsp.getStatusCode() == null || rsp.getResult() == null
+ if (rsp.getStatusCode() == null || rsp.getResult() == null
|| (RestConstant.RESPONSE_CODE_200 != rsp.getStatusCode() && RestConstant.RESPONSE_CODE_201 != rsp.getStatusCode()))
{
return false;
}
return true;
- }
-
+ }
+
/**
- *
+ *
* @param strJsonData
* @return
*/
- private static String getCsarIdValue(String strJsonData)
+ private static String getCsarIdValue(String strJsonData)
{
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
Map<String, String> dataMap = null;
- try
+ try
{
- dataMap = (Map<String, String>)mapper.readValue(strJsonData, Map.class);
+ dataMap = mapper.readValue(strJsonData, Map.class);
} catch(JsonParseException e) {
logger.error("JsonParseException:Failed to upload package to catalouge:", e);
} catch(JsonMappingException e) {
@@ -151,9 +151,17 @@ public class LifecycleTestExceutor
} catch(IOException e) {
logger.error("IOException:Failed to upload package to catalouge:", e);
}
- if(dataMap.get("csarId") != null){
- return dataMap.get("csarId");
+ try
+ {
+ if(dataMap != null) {
+ return dataMap.get("csarId");
+ }
+ }
+ catch (NullPointerException e)
+ {
+ logger.error("NullPointerException:Failed to get csarId", e);
}
return "";
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/resource/PackageResource.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/resource/PackageResource.java
index 83babfa2..7e50eab8 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/resource/PackageResource.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/resource/PackageResource.java
@@ -15,6 +15,7 @@
*/
package org.onap.vnfsdk.marketplace.resource;
+import java.io.IOException;
import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
@@ -34,6 +35,7 @@ import javax.ws.rs.core.Response;
import org.eclipse.jetty.http.HttpStatus;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;
+import org.onap.vnfsdk.marketplace.db.exception.MarketplaceResourceException;
import org.onap.vnfsdk.marketplace.entity.response.CsarFileUriResponse;
import org.onap.vnfsdk.marketplace.entity.response.PackageMeta;
import org.onap.vnfsdk.marketplace.entity.response.UploadPackageResponse;
@@ -48,9 +50,9 @@ import io.swagger.annotations.ApiResponses;
/**
* csar package service.
- *
+ *
* @author 10189609
- *
+ *
*/
@Path("/PackageResource")
@Api(tags = {"Package Resource"})
@@ -71,9 +73,9 @@ public class PackageResource {
public Response updateValidateStatus(
@ApiParam(value = "http request body") @Context HttpServletRequest request,
@ApiParam(value = "http header") @Context HttpHeaders head
- ) throws Exception {
+ ) throws IOException {
InputStream input = request.getInputStream();
- return PackageWrapper.getInstance().updateValidateStatus(input, head);
+ return PackageWrapper.getInstance().updateValidateStatus(input);
}
@@ -133,7 +135,7 @@ public class PackageResource {
required = true) @FormDataParam("file") InputStream uploadedInputStream,@FormDataParam("params") String details,
@ApiParam(value = "file detail",
required = false) @FormDataParam("file") FormDataContentDisposition fileDetail,
- @ApiParam(value = "http header") @Context HttpHeaders head) throws Exception {
+ @ApiParam(value = "http header") @Context HttpHeaders head) throws IOException, MarketplaceResourceException {
return PackageWrapper.getInstance().uploadPackage(uploadedInputStream, fileDetail, details, head);
}
@@ -192,16 +194,16 @@ public class PackageResource {
required = true) @FormDataParam("file") InputStream uploadedInputStream,@FormDataParam("params") String details,
@ApiParam(value = "file detail",
required = false) @FormDataParam("file") FormDataContentDisposition fileDetail,
- @ApiParam(value = "http header") @Context HttpHeaders head) throws Exception {
+ @ApiParam(value = "http header") @Context HttpHeaders head) throws IOException, MarketplaceResourceException {
return PackageWrapper.getInstance().reUploadPackage(csarId,uploadedInputStream, fileDetail, details, head);
- }
+ }
@Path("/csars/{csarId}/onboardstatus")
@GET
@ApiOperation(value="Get VNF OnBoarding Result", response=OnBoardingResult.class)
@Produces(MediaType.APPLICATION_JSON)
- public Response getOnBoardingResult(@ApiParam("csar Id") @PathParam("csarId") String csarId,
- @ApiParam("operation type") @QueryParam("operTypeId") String operTypeId,
+ public Response getOnBoardingResult(@ApiParam("csar Id") @PathParam("csarId") String csarId,
+ @ApiParam("operation type") @QueryParam("operTypeId") String operTypeId,
@ApiParam("operation id") @QueryParam("operId") String operId)
{
return PackageWrapper.getInstance().getOnBoardingResult(csarId, operTypeId, operId);
@@ -225,3 +227,4 @@ public class PackageResource {
return PackageWrapper.getInstance().getOnBoardingSteps();
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestConstant.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestConstant.java
index 31ad5e0f..0eb4c81f 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestConstant.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestConstant.java
@@ -21,8 +21,6 @@ public class RestConstant {
public static final String UNAME_KEY = "UNAME_KEY";
- public static final String PWD_KEY = "PWD_KEY";
-
public static final String NETCONF = "NETCONF";
public static final String ASYNC = "ASYNC";
@@ -44,9 +42,9 @@ public class RestConstant {
public static final int DEFAULT_STRING_LENGTH_64 = 64;
public static final int DEFAULT_STRING_LENGTH_128 = 128;
-
+
public static final int RESPONSE_CODE_200 = 200;
-
+
public static final int RESPONSE_CODE_201 = 201;
public static class HttpContext {
@@ -81,3 +79,4 @@ public class RestConstant {
private RestConstant() {
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestfulClient.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestfulClient.java
index 093afce2..9a530479 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestfulClient.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/rest/RestfulClient.java
@@ -15,26 +15,18 @@
*/
package org.onap.vnfsdk.marketplace.rest;
-import java.io.File;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
@@ -60,15 +52,15 @@ public class RestfulClient {
*/
public static RestResponse executeHttp(HttpMethod method, String ip, int port, String url,
HttpEntity body) {
- CloseableHttpClient httpclient = HttpClients.createDefault();
- HttpResponse httpResponse = null;
RestResponse result = new RestResponse();
- try {
+ try (
+ CloseableHttpClient httpclient = HttpClients.createDefault();
+ ){
// specify the host, protocol, and port
HttpHost target = new HttpHost(ip, port, HTTP);
// specify the get request
HttpRequest request = getRequest(method, url, body);
- httpResponse = httpclient.execute(target, request);
+ HttpResponse httpResponse = httpclient.execute(target, request);
HttpEntity entity = httpResponse.getEntity();
if (entity != null) {
result.setStatusCode(httpResponse.getStatusLine().getStatusCode());
@@ -76,12 +68,6 @@ public class RestfulClient {
}
} catch (Exception e1) {
logger.error("send get rest request error:", e1);
- } finally {
- try {
- httpclient.close();
- } catch (IOException e2) {
- logger.error("close httpclient error:", e2);
- }
}
return result;
}
@@ -121,42 +107,42 @@ public class RestfulClient {
return executeHttp(HttpMethod.POST, ip, port, url, requestBody);
}
- public static RestResponse sendPostRequest(String ip, String port, String url, String strJson)
+ public static RestResponse sendPostRequest(String ip, String port, String url, String strJson)
{
RestResponse result = new RestResponse();
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpResponse httpResponse = null;
- try
- {
+ try
+ {
String urlPost = "http://" + ip + ":" + port + url;
logger.info("URL formed for Post, URL :" + urlPost);
logger.info("URL formed for Post, JSON :" + strJson);
-
+
HttpPost request = new HttpPost(urlPost);
-
+
StringEntity params = new StringEntity(strJson);
request.addHeader("content-type", "application/json");
request.setEntity(params);
httpResponse = httpClient.execute(request);
HttpEntity entity = httpResponse.getEntity();
- if (entity != null)
+ if (entity != null)
{
result.setStatusCode(httpResponse.getStatusLine().getStatusCode());
result.setResult(EntityUtils.toString(entity));
}
- }
- catch (Exception ex)
+ }
+ catch (Exception ex)
{
logger.error("Send Post request error:", ex);
- }
- finally
+ }
+ finally
{
try {
if(null != httpClient) {
- httpClient.close();
+ httpClient.close();
}
- }
+ }
catch(IOException e){
logger.error("IOException :Send Post request error:", e);
}
@@ -164,3 +150,4 @@ public class RestfulClient {
return result;
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapper.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapper.java
index e21418f9..97b96b88 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapper.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapper.java
@@ -31,7 +31,6 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
-import net.sf.json.JSONObject;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
@@ -54,12 +53,13 @@ import org.onap.vnfsdk.marketplace.onboarding.entity.OnBoardingSteps;
import org.onap.vnfsdk.marketplace.onboarding.entity.OnBoradingRequest;
import org.onap.vnfsdk.marketplace.onboarding.hooks.functiontest.FunctionTestExceutor;
import org.onap.vnfsdk.marketplace.onboarding.hooks.functiontest.FunctionTestHook;
-import org.onap.vnfsdk.marketplace.onboarding.hooks.validatelifecycle.LifecycleTestExceutor;
import org.onap.vnfsdk.marketplace.onboarding.hooks.validatelifecycle.ValidateLifecycleTestResponse;
import org.onap.vnfsdk.marketplace.onboarding.onboardmanager.OnBoardingHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import net.sf.json.JSONObject;
+
public class PackageWrapper {
private static PackageWrapper packageWrapper;
private static final Logger LOG = LoggerFactory.getLogger(PackageWrapper.class);
@@ -75,7 +75,7 @@ public class PackageWrapper {
return packageWrapper;
}
- public Response updateValidateStatus(InputStream inputStream, HttpHeaders head) throws Exception
+ public Response updateValidateStatus(InputStream inputStream) throws IOException
{
String reqParam = IOUtils.toString(inputStream);
LOG.info("updateValidateStatus request param:"+reqParam);
@@ -83,39 +83,39 @@ public class PackageWrapper {
LOG.error("The updateValidateStatus request params can't be null");
return Response.status(Status.EXPECTATION_FAILED).build();
}
-
+
ValidateLifecycleTestResponse lyfValidateResp = JsonUtil.fromJson(reqParam, ValidateLifecycleTestResponse.class);
if(!checkOperationSucess(lyfValidateResp))
{
return Response.status(Status.EXPECTATION_FAILED).build();
}
-
+
String funcTestResponse = FunctionTestExceutor.executeFunctionTest(reqParam);
if(null == funcTestResponse)
{
return Response.status(Status.EXPECTATION_FAILED).build();
}
-
- JSONObject funcTestRspObject = JSONObject.fromObject(funcTestResponse);
+
+ JSONObject funcTestRspObject = JSONObject.fromObject(funcTestResponse);
if(!funcTestRspObject.get("status").equals(CommonConstant.SUCCESS_STR))
{
return Response.status(Status.EXPECTATION_FAILED).build();
}
-
- JSONObject result = new JSONObject();
+
+ JSONObject result = new JSONObject();
result.put("msg","SUCCESS");
return Response.ok(ToolUtil.objectToString(result), MediaType.APPLICATION_JSON).build();
}
-
- private boolean checkOperationSucess(ValidateLifecycleTestResponse lyfValidateResp)
+
+ private boolean checkOperationSucess(ValidateLifecycleTestResponse lyfValidateResp)
{
boolean bOperStatus = false;
- if(null == lyfValidateResp)
+ if(null == lyfValidateResp)
{
LOG.error("ValidateLifecycleTestResponse is NUll !!!");
return bOperStatus;
}
- if(lyfValidateResp.getLifecycle_status().equalsIgnoreCase(CommonConstant.SUCCESS_STR)
+ if(lyfValidateResp.getLifecycle_status().equalsIgnoreCase(CommonConstant.SUCCESS_STR)
&& lyfValidateResp.getValidate_status().equalsIgnoreCase(CommonConstant.SUCCESS_STR))
{
LOG.error("Lifecycle/Validation Response failed :" + lyfValidateResp.getLifecycle_status() + File.separator + lyfValidateResp.getValidate_status());
@@ -135,8 +135,8 @@ public class PackageWrapper {
*/
public Response queryPackageListByCond(String name, String provider, String version,
String deletionPending, String type) {
- ArrayList<PackageData> dbresult = new ArrayList<PackageData>();
- List<PackageMeta> result = new ArrayList<PackageMeta>();
+ List<PackageData> dbresult = new ArrayList<>();
+ List<PackageMeta> result = new ArrayList<>();
LOG.info("query package info.name:" + name + " provider:" + provider + " version" + version
+ " deletionPending" + deletionPending + " type:" + type);
try {
@@ -156,10 +156,8 @@ public class PackageWrapper {
* @return Response
*/
public Response queryPackageById(String csarId) {
- PackageData dbResult = new PackageData();
- PackageMeta result = new PackageMeta();
- dbResult = PackageWrapperUtil.getPackageInfoById(csarId);
- result = PackageWrapperUtil.packageData2PackageMeta(dbResult);
+ PackageData dbResult = PackageWrapperUtil.getPackageInfoById(csarId);
+ PackageMeta result = PackageWrapperUtil.packageData2PackageMeta(dbResult);
return Response.ok(ToolUtil.objectToString(result)).build();
}
@@ -172,10 +170,10 @@ public class PackageWrapper {
* @throws Exception e
*/
public Response uploadPackage(InputStream uploadedInputStream,
- FormDataContentDisposition fileDetail, String details, HttpHeaders head) throws Exception
+ FormDataContentDisposition fileDetail, String details, HttpHeaders head) throws IOException, MarketplaceResourceException
{
LOG.info("Upload/Reupload request Received !!!!");
-
+
String packageId = MarketplaceDbUtil.generateId();
return handlePackageUpload(packageId,uploadedInputStream, fileDetail, details, head);
}
@@ -192,8 +190,8 @@ public class PackageWrapper {
* @throws MarketplaceResourceException
*/
private Response handlePackageUpload(String packageId,InputStream uploadedInputStream, FormDataContentDisposition fileDetail,
- String details, HttpHeaders head) throws IOException, MarketplaceResourceException
- {
+ String details, HttpHeaders head) throws IOException, MarketplaceResourceException
+ {
boolean bResult = handleDataValidate(packageId,uploadedInputStream,fileDetail);
if(!bResult)
{
@@ -208,11 +206,11 @@ public class PackageWrapper {
fileName = ToolUtil.processFileName(fileDetail.getFileName());
}
-
+
String localDirName = ToolUtil.getTempDir(CommonConstant.CATALOG_CSAR_DIR_NAME, fileName);
String contentRange = null;
- if (head != null)
+ if (head != null)
{
contentRange = head.getHeaderString(CommonConstant.HTTP_HEADER_CONTENT_RANGE);
}
@@ -228,66 +226,48 @@ public class PackageWrapper {
uploadedInputStream.close();
- PackageBasicInfo basicInfo = PackageWrapperUtil.getPacageBasicInfo(fileLocation);
- if (null == basicInfo.getType() || null == basicInfo.getProvider() || null == basicInfo.getVersion())
- {
- LOG.error("Package basicInfo is incorrect ! basicIonfo = " + ToolUtil.objectToString(basicInfo));
- return Response.serverError().build();
- }
-
- UploadPackageResponse result = new UploadPackageResponse();
+ PackageBasicInfo basicInfo = PackageWrapperUtil.getPacageBasicInfo(fileLocation);
+ UploadPackageResponse result = new UploadPackageResponse();
Boolean isEnd = PackageWrapperUtil.isUploadEnd(contentRange);
- if (isEnd)
+ if (isEnd)
{
PackageMeta packageMeta = PackageWrapperUtil.getPackageMeta(packageId,fileName, fileLocation, basicInfo, details);
-
- String path = basicInfo.getType().toString() + File.separator + basicInfo.getProvider() + File.separator + packageMeta.getCsarId() + File.separator + fileName.replace(".csar", "") + File.separator + basicInfo.getVersion();
- String dowloadUri = File.separator + path + File.separator;
- packageMeta.setDownloadUri(dowloadUri);
-
- LOG.info("dest path is : " + path);
- LOG.info("packageMeta = " + ToolUtil.objectToString(packageMeta));
-
- PackageData packageData = PackageWrapperUtil.getPackageData(packageMeta);
-
- String destPath = File.separator + path + File.separator + File.separator;
- boolean uploadResult = FileManagerFactory.createFileManager().upload(localDirName, destPath);
- if (uploadResult)
- {
- //Create OnBoarding Request
- //--------------------------
- OnBoradingRequest oOnboradingRequest = new OnBoradingRequest();
- oOnboradingRequest.setCsarId(packageId);
- oOnboradingRequest.setPackageName(fileName);
- oOnboradingRequest.setPackagePath(localDirName);
-
- //Upload the Package to CATALOUGE and get CSARID
- //---------------------------------------------
- //String catalougeCsarId = LifecycleTestExceutor.uploadPackageToCatalouge(oOnboradingRequest);
- //if((null == catalougeCsarId) || catalougeCsarId.isEmpty())
- //{
- // LOG.error("Failed to Upload Package to catalougeCsarId " + ToolUtil.objectToString(basicInfo));
- //return Response.status(Status.INTERNAL_SERVER_ERROR).build();
- // }
- //oOnboradingRequest.setCsarIdCatalouge(catalougeCsarId);
- //LOG.info("catalougeCsarId :" + catalougeCsarId);
-
-
- //Update Default download count to -1
- packageData.setCsarId(packageId);
- packageData.setDownloadCount(-1);
- PackageData packateDbData = PackageManager.getInstance().addPackage(packageData);
-
- LOG.info("Store package data to database succed ! packateDbData = " + ToolUtil.objectToString(packateDbData));
- LOG.info("upload package file end, fileName:" + fileName);
-
- result.setCsarId(packateDbData.getCsarId());
-
- //Assign OnBoarding Request to OnBoarding Handler
- //------------------------------------------------
- addOnBoardingRequest(oOnboradingRequest);
-
- LOG.info("OnboradingRequest Data : " + ToolUtil.objectToString(oOnboradingRequest));
+ try {
+ String path = basicInfo.getType().toString() + File.separator + basicInfo.getProvider() + File.separator + packageMeta.getCsarId() + File.separator + fileName.replace(".csar", "") + File.separator + basicInfo.getVersion();
+
+ String dowloadUri = File.separator + path + File.separator;
+ packageMeta.setDownloadUri(dowloadUri);
+
+ LOG.info("dest path is : " + path);
+ LOG.info("packageMeta = " + ToolUtil.objectToString(packageMeta));
+
+ PackageData packageData = PackageWrapperUtil.getPackageData(packageMeta);
+
+ String destPath = File.separator + path + File.separator + File.separator;
+ boolean uploadResult = FileManagerFactory.createFileManager().upload(localDirName, destPath);
+ if (uploadResult)
+ {
+ OnBoradingRequest oOnboradingRequest = new OnBoradingRequest();
+ oOnboradingRequest.setCsarId(packageId);
+ oOnboradingRequest.setPackageName(fileName);
+ oOnboradingRequest.setPackagePath(localDirName);
+
+ packageData.setCsarId(packageId);
+ packageData.setDownloadCount(-1);
+ PackageData packateDbData = PackageManager.getInstance().addPackage(packageData);
+
+ LOG.info("Store package data to database succed ! packateDbData = " + ToolUtil.objectToString(packateDbData));
+ LOG.info("upload package file end, fileName:" + fileName);
+
+ result.setCsarId(packateDbData.getCsarId());
+
+ addOnBoardingRequest(oOnboradingRequest);
+
+ LOG.info("OnboradingRequest Data : " + ToolUtil.objectToString(oOnboradingRequest));
+ }
+ } catch (NullPointerException e) {
+ LOG.error("Package basicInfo is incorrect ! basicIonfo = " + ToolUtil.objectToString(basicInfo), e);
+ return Response.serverError().build();
}
}
return Response.ok(ToolUtil.objectToString(result), MediaType.APPLICATION_JSON).build();
@@ -297,17 +277,14 @@ public class PackageWrapper {
* Execute OnBarding request
* @param oOnboradingRequest
*/
- private void addOnBoardingRequest(final OnBoradingRequest oOnboradingRequest)
+ private void addOnBoardingRequest(final OnBoradingRequest oOnboradingRequest)
{
ExecutorService es = Executors.newFixedThreadPool(CommonConstant.ONBOARDING_THREAD_COUNT);
- es.submit(new Callable<Integer>()
- {
- public Integer call() throws Exception
- {
- new OnBoardingHandler().handleOnBoardingReq(oOnboradingRequest);
- return CommonConstant.SUCESS;
- }
- });
+ Callable<Integer> callableInteger = () -> {
+ new OnBoardingHandler().handleOnBoardingReq(oOnboradingRequest);
+ return CommonConstant.SUCESS;
+ };
+ es.submit(callableInteger);
}
/**
@@ -334,13 +311,13 @@ public class PackageWrapper {
if (packagePath == null) {
LOG.error("package path is null! ");
}
-
+
//Delete Package
FileManagerFactory.createFileManager().delete(packagePath);
//Delete Results Data
FileManagerFactory.createFileManager().delete(File.separator + csarId);
-
+
//delete package data from database
try {
PackageManager.getInstance().deletePackage(csarId);
@@ -356,29 +333,29 @@ public class PackageWrapper {
*/
public Response downloadCsarPackagesById(String csarId) {
PackageData packageData = PackageWrapperUtil.getPackageInfoById(csarId);
-
+
String packageName = packageData.getName();
String path = org.onap.vnfsdk.marketplace.filemanage.http.ToolUtil.getHttpServerAbsolutePath() +File.separatorChar+packageData.getType()+File.separatorChar+
- packageData.getProvider()+File.separatorChar+ packageData.getCsarId() +File.separator +packageName+File.separatorChar+packageData.getVersion()
+ packageData.getProvider()+File.separatorChar+ packageData.getCsarId() +File.separator +packageName+File.separatorChar+packageData.getVersion()
+File.separator + packageName + ".csar";
-
+
LOG.info("downloadCsarPackagesById path is : " + path);
-
+
File csarFile = new File(path);
if (!csarFile.exists()) {
return Response.status(Status.INTERNAL_SERVER_ERROR).build();
}
LOG.info("downloadCsarPackagesById ABS path is : " + csarFile.getAbsolutePath());
-
- try
+
+ try
{
InputStream fis = new BufferedInputStream(new FileInputStream(csarFile.getAbsolutePath()));
return Response.ok(fis)
.header("Content-Disposition", "attachment; filename=\"" + csarFile.getName() + "\"")
.build();
- }
- catch (Exception e1)
+ }
+ catch (Exception e1)
{
LOG.error("download vnf package fail.", e1);
return RestUtil.getRestException(e1.getMessage());
@@ -401,8 +378,8 @@ public class PackageWrapper {
* @return
*/
public Response updateDwonloadCount(String csarId) {
- return handleDownladCountUpdate(csarId) ?
- Response.ok().build() :
+ return handleDownladCountUpdate(csarId) ?
+ Response.ok().build() :
Response.status(Status.EXPECTATION_FAILED).build();
}
@@ -413,12 +390,12 @@ public class PackageWrapper {
*/
private boolean handleDownladCountUpdate(String csarId) {
boolean bupdateSucess = false;
- try
+ try
{
PackageManager.getInstance().updateDwonloadCount(csarId);
bupdateSucess = true;
- }
- catch (Exception exp)
+ }
+ catch (Exception exp)
{
LOG.error("Updating Donwload count failed for Package with ID !!! : " + exp.getMessage(), exp);
}
@@ -426,7 +403,7 @@ public class PackageWrapper {
}
/**
- * Interface to Re upload Package
+ * Interface to Re upload Package
* @param csarId
* @param uploadedInputStream
* @param fileDetail
@@ -436,14 +413,14 @@ public class PackageWrapper {
* @throws Exception
*/
public Response reUploadPackage(String csarId,
- InputStream uploadedInputStream,
+ InputStream uploadedInputStream,
FormDataContentDisposition fileDetail,
- String details,
- HttpHeaders head) throws Exception
+ String details,
+ HttpHeaders head) throws IOException, MarketplaceResourceException
{
LOG.info("Reupload request Received !!!!");
-
- //STEP 1: Validate Input Data
+
+ //STEP 1: Validate Input Data
//----------------------------
boolean bResult = handleDataValidate(csarId,uploadedInputStream,fileDetail);
if(!bResult)
@@ -471,31 +448,30 @@ public class PackageWrapper {
public Response getOnBoardingResult(String csarId, String operTypeId, String operId)
{
LOG.info("getOnBoardingResult request : csarId:" + csarId + " operTypeId:" + operTypeId + " operId:" + operId);
- if ((null == csarId) || (null == operTypeId) || (null == operId)) {
- return Response.status(Response.Status.BAD_REQUEST).build();
- }
- if ((csarId.isEmpty()) || (operTypeId.isEmpty()) || (operId.isEmpty())) {
+ try {
+ PackageData packageData = PackageWrapperUtil.getPackageInfoById(csarId);
+ if (null == packageData) {
+ return Response.status(Response.Status.PRECONDITION_FAILED).build();
+ }
+
+ handleDelayExec(operId);
+
+ OnBoardingResult oOnBoardingResult = FunctionTestHook.getOnBoardingResult(packageData);
+ if (null == oOnBoardingResult) {
+ return Response.status(Response.Status.PRECONDITION_FAILED).build();
+ }
+ filterOnBoardingResultByOperId(oOnBoardingResult, operId);
+
+ String strResult = ToolUtil.objectToString(oOnBoardingResult);
+ LOG.info("getOnBoardingResult response : " + strResult);
+ return Response.ok(strResult, "application/json").build();
+ } catch (NullPointerException e) {
+ LOG.error("Null param in getOnBoardingResult", e);
return Response.status(Response.Status.BAD_REQUEST).build();
}
- PackageData packageData = PackageWrapperUtil.getPackageInfoById(csarId);
- if (null == packageData) {
- return Response.status(Response.Status.PRECONDITION_FAILED).build();
- }
-
- handleDelayExec(operId);
-
- OnBoardingResult oOnBoardingResult = FunctionTestHook.getOnBoardingResult(packageData);
- if (null == oOnBoardingResult) {
- return Response.status(Response.Status.PRECONDITION_FAILED).build();
- }
- filterOnBoardingResultByOperId(oOnBoardingResult, operId);
-
- String strResult = ToolUtil.objectToString(oOnBoardingResult);
- LOG.info("getOnBoardingResult response : " + strResult);
- return Response.ok(strResult, "application/json").build();
}
-
+
private void filterOnBoardingResultByOperId(OnBoardingResult oOnBoardingResult, String operId)
{
if (0 == operId.compareToIgnoreCase("all")) {
@@ -503,7 +479,7 @@ public class PackageWrapper {
}
if (0 == operId.compareToIgnoreCase("download"))
{
- List<OnBoardingOperResult> operResultListTemp = new ArrayList<OnBoardingOperResult>();
+ List<OnBoardingOperResult> operResultListTemp = new ArrayList<>();
OnBoardingOperResult operResultListTmp = new OnBoardingOperResult();
operResultListTmp.setOperId("download");
operResultListTmp.setStatus(0);
@@ -511,7 +487,7 @@ public class PackageWrapper {
oOnBoardingResult.setOperResult(operResultListTemp);
return;
}
- List<OnBoardingOperResult> operResultListOut = new ArrayList<OnBoardingOperResult>();
+ List<OnBoardingOperResult> operResultListOut = new ArrayList<>();
List<OnBoardingOperResult> operResultList = oOnBoardingResult.getOperResult();
for (OnBoardingOperResult operResult : operResultList) {
if (0 == operResult.getOperId().compareToIgnoreCase(operId)) {
@@ -527,37 +503,37 @@ public class PackageWrapper {
* @param operTypeId
* @return
*/
- public Response getOperResultByOperTypeId(String csarId, String operTypeId)
+ public Response getOperResultByOperTypeId(String csarId, String operTypeId)
{
- LOG.error("getOnBoardingResult request : csarId:"+ csarId + " operTypeId:"+operTypeId);
+ LOG.error("getOnBoardingResult request : csarId:"+ csarId + " operTypeId:"+operTypeId);
if(null == csarId || null == operTypeId || csarId.isEmpty() || operTypeId.isEmpty())
{
- return Response.status(Status.BAD_REQUEST).build();
+ return Response.status(Status.BAD_REQUEST).build();
}
PackageData packageData = PackageWrapperUtil.getPackageInfoById(csarId);
if(null == packageData)
{
- LOG.error("Failed to find package for PackageID:"+ csarId);
- return Response.status(Status.PRECONDITION_FAILED).build();
- }
+ LOG.error("Failed to find package for PackageID:"+ csarId);
+ return Response.status(Status.PRECONDITION_FAILED).build();
+ }
//Get result key to fetch Function Test Results
//---------------------------------------------
String strResult = FunctionTestHook.getFuncTestResults(packageData);
if(null == strResult)
{
- LOG.error("NULL reponse for getOperResultByOperTypeId response :"+ strResult);
- return Response.status(Status.INTERNAL_SERVER_ERROR).build();
- }
- LOG.info("getOperResultByOperTypeId response :"+ strResult);
+ LOG.error("NULL reponse for getOperResultByOperTypeId response :"+ strResult);
+ return Response.status(Status.INTERNAL_SERVER_ERROR).build();
+ }
+ LOG.info("getOperResultByOperTypeId response :"+ strResult);
return Response.ok(strResult, MediaType.APPLICATION_JSON).build();
}
- private boolean handleDataValidate(String packageId,InputStream uploadedInputStream, FormDataContentDisposition fileDetail)
+ private boolean handleDataValidate(String packageId,InputStream uploadedInputStream, FormDataContentDisposition fileDetail)
{
boolean bvalidateOk = false;
- if ((null != uploadedInputStream) && (fileDetail != null) && !ToolUtil.isEmptyString(packageId))
+ if ((null != uploadedInputStream) && (fileDetail != null) && !ToolUtil.isEmptyString(packageId))
{
bvalidateOk = true;
}
@@ -572,7 +548,7 @@ public class PackageWrapper {
{
LOG.info("Get OnBoarding Steps request Received !!!");
- String filePath = org.onap.vnfsdk.marketplace.filemanage.http.ToolUtil.getAppDeployPath() + File.separator +"generalconfig/OnBoardingSteps.json";
+ String filePath = org.onap.vnfsdk.marketplace.filemanage.http.ToolUtil.getAppDeployPath() + File.separator +"generalconfig/OnBoardingSteps.json";
LOG.info("Onboarding Steps Json file Path :" + filePath);
OnBoardingSteps oOnBoardingSteps = (OnBoardingSteps)FileUtil.readJsonDatafFromFile(filePath, OnBoardingSteps.class);
@@ -583,19 +559,21 @@ public class PackageWrapper {
LOG.info("getOnBoardingSteps response :" + strResult);
return Response.ok(strResult, MediaType.APPLICATION_JSON).build();
}
-
- private void handleDelayExec(String operId)
+
+ private void handleDelayExec(String operId)
{
- if (0 == operId.compareToIgnoreCase(CommonConstant.functionTest.FUNCTEST_EXEC))
+ if (0 == operId.compareToIgnoreCase(CommonConstant.functionTest.FUNCTEST_EXEC))
{
- try
+ try
{
Thread.sleep(8000);
- }
- catch (InterruptedException e)
+ }
+ catch (InterruptedException e)
{
LOG.info("handleDelayExex response : ", e);
+ Thread.currentThread().interrupt();
}
}
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapperUtil.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapperUtil.java
index a763a361..cddb4c4e 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapperUtil.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapperUtil.java
@@ -106,14 +106,14 @@ public class PackageWrapperUtil {
*/
public static PackageData getPackageInfoById(String csarId) {
PackageData result = new PackageData();
- ArrayList<PackageData> packageDataList = new ArrayList<>();
+ List<PackageData> packageDataList = new ArrayList<>();
try {
packageDataList = PackageManager.getInstance().queryPackageByCsarId(csarId);
if (packageDataList != null && ! packageDataList.isEmpty()) {
result = PackageManager.getInstance().queryPackageByCsarId(csarId).get(0);
}
} catch (MarketplaceResourceException e1) {
- LOG.error("query package by csarId from db error ! " + e1.getMessage());
+ LOG.error("query package by csarId from db error ! " + e1.getMessage(), e1);
}
return result;
}
@@ -130,12 +130,10 @@ public class PackageWrapperUtil {
PackageMeta packageMeta = new PackageMeta();
long size = getPacakgeSize(fileLocation);
packageMeta.setFormat(basic.getFormat());
- String usedPackageId = null;
+ String usedPackageId = packageId;
if(null == packageId)
{
usedPackageId = ToolUtil.generateId();
- } else {
- usedPackageId = packageId;
}
packageMeta.setCsarId(usedPackageId);
@@ -167,13 +165,13 @@ public class PackageWrapperUtil {
* @return download uri
*/
public static String getPackagePath(String csarId) {
- ArrayList<PackageData> packageList = new ArrayList<PackageData>();
+ List<PackageData> packageList = new ArrayList<>();
String downloadUri = null;
try {
packageList = PackageManager.getInstance().queryPackageByCsarId(csarId);
downloadUri = packageList.get(0).getDownloadUri();
} catch (MarketplaceResourceException e1) {
- LOG.error("Query CSAR package by ID failed ! csarId = " + csarId);
+ LOG.error("Query CSAR package by ID failed ! csarId = " + csarId, e1);
}
return downloadUri;
}
@@ -198,11 +196,10 @@ public class PackageWrapperUtil {
public static List<PackageMeta> packageDataList2PackageMetaList(
List<PackageData> dbResult) {
ArrayList<PackageMeta> metas = new ArrayList<>();
- PackageMeta meta = null;
if (! dbResult.isEmpty()) {
for (int i = 0; i < dbResult.size(); i++) {
PackageData data = dbResult.get(i);
- meta = packageData2PackageMeta(data);
+ PackageMeta meta = packageData2PackageMeta(data);
metas.add(meta);
}
}
@@ -245,8 +242,7 @@ public class PackageWrapperUtil {
} else {
url += uri;
}
- String urlresult = url.replace("\\", "/");
- return urlresult;
+ return url.replace("\\", "/");
}
public static String getDownloadUriHead() {
@@ -275,20 +271,20 @@ public class PackageWrapperUtil {
boolean isXmlCsar = false;
try {
String tempfolder = unzipDir;
- ArrayList<String> unzipFiles = FileUtil.unzip(fileLocation, tempfolder);
+ List<String> unzipFiles = FileUtil.unzip(fileLocation, tempfolder);
if (unzipFiles.isEmpty()) {
isXmlCsar = true;
}
for (String unzipFile : unzipFiles) {
- if (unzipFile.endsWith(CommonConstant.MANIFEST)) {
- basicInfo = readManifest(unzipFile);
+ if (unzipFile.endsWith(CommonConstant.MANIFEST)) {
+ basicInfo = readManifest(unzipFile);
}
if (ToolUtil.isYamlFile(new File(unzipFile))) {
isXmlCsar = false;
}
}
} catch (IOException e1) {
- LOG.error("judge package type error ! " + e1.getMessage());
+ LOG.error("judge package type error ! " + e1.getMessage(), e1);
}
if (isXmlCsar) {
basicInfo.setFormat(CommonConstant.PACKAGE_XML_FORMAT);
@@ -298,81 +294,51 @@ public class PackageWrapperUtil {
return basicInfo;
}
- private static PackageBasicInfo readCsarMeta(String unzipFile) {
+ /**
+ * Reads the manifest file in the package and fills the basic infor about package
+ * @param unzipFile
+ * @return basic infor about package
+ */
+ private static PackageBasicInfo readManifest(String unzipFile) {
+
+ // Fix the package type to CSAR, temporary
PackageBasicInfo basicInfo = new PackageBasicInfo();
+ basicInfo.setType(EnumType.CSAR);
+
File file = new File(unzipFile);
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
+
String tempString = null;
while ((tempString = reader.readLine()) != null) {
- if (tempString.equals("")) {
+
+ // If line is empty, ignore
+ if ("".equals(tempString)) {
continue;
}
+
int count1 = tempString.indexOf(":");
String meta = tempString.substring(0, count1).trim();
- if (CommonConstant.CSAR_TYPE_META.equalsIgnoreCase(meta)) {
- int count = tempString.indexOf(":") + 1;
- basicInfo.setType(EnumType.valueOf(tempString.substring(count).trim()));
- }
- if (CommonConstant.CSAR_PROVIDER_META.equalsIgnoreCase(meta)) {
+
+ // Check for the package provider name
+ if (meta.equalsIgnoreCase(CommonConstant.MF_PROVIDER_META)) {
int count = tempString.indexOf(":") + 1;
basicInfo.setProvider(tempString.substring(count).trim());
}
- if (CommonConstant.CSAR_VERSION_META.equalsIgnoreCase(meta)) {
+
+ // Check for package version
+ if (meta.equalsIgnoreCase(CommonConstant.MF_VERSION_META)) {
int count = tempString.indexOf(":") + 1;
basicInfo.setVersion(tempString.substring(count).trim());
}
}
+
reader.close();
- } catch (IOException e2) {
- e2.printStackTrace();
+ } catch (IOException e) {
+ LOG.error("Exception while parsing manifest file" + e, e);
}
+
return basicInfo;
}
- /**
- * Reads the manifest file in the package and fills the basic infor about package
- * @param unzipFile
- * @return basic infor about package
- */
- private static PackageBasicInfo readManifest(String unzipFile) {
-
- // Fix the package type to CSAR, temporary
- PackageBasicInfo basicInfo = new PackageBasicInfo();
- basicInfo.setType(EnumType.CSAR);
-
- File file = new File(unzipFile);
- try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
-
- String tempString = null;
- while ((tempString = reader.readLine()) != null) {
-
- // If line is empty, ignore
- if (tempString.equals("")) {
- continue;
- }
-
- int count1 = tempString.indexOf(":");
- String meta = tempString.substring(0, count1).trim();
-
- // Check for the package provider name
- if (meta.equalsIgnoreCase(CommonConstant.MF_PROVIDER_META)) {
- int count = tempString.indexOf(":") + 1;
- basicInfo.setProvider(tempString.substring(count).trim());
- }
-
- // Check for package version
- if (meta.equalsIgnoreCase(CommonConstant.MF_VERSION_META)) {
- int count = tempString.indexOf(":") + 1;
- basicInfo.setVersion(tempString.substring(count).trim());
- }
- }
-
- reader.close();
- } catch (IOException e) {
- LOG.error("Exception while parsing manifest file" + e);
- }
-
- return basicInfo;
- }
/**
* get package format enum.
* @param format package format
@@ -388,3 +354,4 @@ public class PackageWrapperUtil {
}
}
}
+
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/test/java/org/onap/vnfsdk/marketplace/resource/PackageResourceTest.java b/vnfmarket-be/vnf-sdk-marketplace/src/test/java/org/onap/vnfsdk/marketplace/resource/PackageResourceTest.java
index 13dcf2f6..d9081166 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/test/java/org/onap/vnfsdk/marketplace/resource/PackageResourceTest.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/test/java/org/onap/vnfsdk/marketplace/resource/PackageResourceTest.java
@@ -41,7 +41,6 @@ import org.junit.Test;
import org.onap.vnfsdk.marketplace.common.FileUtil;
import org.onap.vnfsdk.marketplace.common.JsonUtil;
import org.onap.vnfsdk.marketplace.common.ToolUtil;
-import org.onap.vnfsdk.marketplace.db.connection.ConnectionUtil;
import org.onap.vnfsdk.marketplace.db.entity.PackageData;
import org.onap.vnfsdk.marketplace.db.impl.MarketplaceDaoImpl;
import org.onap.vnfsdk.marketplace.db.resource.PackageManager;
@@ -62,14 +61,13 @@ import org.onap.vnfsdk.marketplace.onboarding.entity.OnBoradingRequest;
import org.onap.vnfsdk.marketplace.onboarding.entity.ResultKey;
import org.onap.vnfsdk.marketplace.onboarding.hooks.functiontest.FunctionTestExceutor;
import org.onap.vnfsdk.marketplace.onboarding.hooks.functiontest.FunctionTestHook;
-import org.onap.vnfsdk.marketplace.resource.PackageResource;
import org.onap.vnfsdk.marketplace.rest.RestResponse;
import org.onap.vnfsdk.marketplace.rest.RestfulClient;
import org.onap.vnfsdk.marketplace.wrapper.PackageWrapper;
import org.onap.vnfsdk.marketplace.wrapper.PackageWrapperUtil;
-import mockit.MockUp;
import mockit.Mock;
+import mockit.MockUp;
public class PackageResourceTest {
@@ -112,7 +110,7 @@ public class PackageResourceTest {
catch(Exception e) {
e.printStackTrace();
}
-
+
filePath = "src" + File.separator + "test" + File.separator + "resources" + File.separator + "testfolder";
file = new File(filePath);
if(!file.exists()) {
@@ -121,7 +119,7 @@ public class PackageResourceTest {
StringBuilder sb = new StringBuilder();
sb.append("test data");
-
+
filePath = "src" + File.separator + "test" + File.separator + "resources" + File.separator + "temp.zip";
file = new File(filePath);
try {
@@ -143,15 +141,15 @@ public class PackageResourceTest {
public void testQueryPackageListByCond() throws Exception{
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getAllPackageData() {
- return new ArrayList<PackageData>();
+ public List<PackageData> getAllPackageData() {
+ return new ArrayList<PackageData>();
}
};
try {
response = PackageWrapper.getInstance().queryPackageListByCond( null, null, null, null, null);
} catch( Exception e ) {
e.printStackTrace();
- }
+ }
assertNotNull( response );
assertEquals( 200, response.getStatus());
@@ -167,11 +165,11 @@ public class PackageResourceTest {
return null;
}
- };
+ };
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getPackageData( String csarId ) {
- packageDataList = new ArrayList<PackageData>();
+ public List<PackageData> getPackageData( String csarId ) {
+ packageDataList = new ArrayList<PackageData>();
packageData = new PackageData();
packageData.setCsarId( csarId );
packageData.setDownloadUri( "src\\test\\resources\\clearwater_ns.csar" );
@@ -180,9 +178,9 @@ public class PackageResourceTest {
packageData.setVersion( "v1.0" );
packageData.setProvider( "Huawei" );
packageDataList.add( packageData );
- return packageDataList;
+ return packageDataList;
}
- };
+ };
try {
response = PackageWrapper.getInstance().queryPackageById( csarID );
@@ -190,53 +188,53 @@ public class PackageResourceTest {
e.printStackTrace();
}
assertNotNull( response );
- assertEquals( 200, response.getStatus());
- }
+ assertEquals( 200, response.getStatus());
+ }
@Test
public void testDelPackageFaiure() {
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getAllPackageData() {
- return new ArrayList<PackageData>();
+ public List<PackageData> getAllPackageData() {
+ return new ArrayList<PackageData>();
}
};
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public void deletePackageData( String csarId ) {
- return;
+ public void deletePackageData( String csarId ) {
+ return;
}
};
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getPackageData( String csarId ) {
- return new ArrayList<PackageData>();
+ public List<PackageData> getPackageData( String csarId ) {
+ return new ArrayList<PackageData>();
}
- };
+ };
try {
response = PackageWrapper.getInstance().delPackage( "" );
} catch ( Exception e5 ) {
e5.printStackTrace();
- }
+ }
assertEquals( 500, response.getStatus());
try {
response = PackageWrapper.getInstance().delPackage( null );
} catch ( Exception e5 ) {
e5.printStackTrace();
- }
- assertEquals( 500, response.getStatus());
+ }
+ assertEquals( 500, response.getStatus());
}
@Test
public void testDelPackageSuccess() {
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getAllPackageData() {
- packageDataList = new ArrayList<PackageData>();
+ public List<PackageData> getAllPackageData() {
+ packageDataList = new ArrayList<PackageData>();
packageData = new PackageData();
packageData.setCsarId( csarID );
packageData.setDownloadUri( "src\\test\\resources\\clearwater_ns.csar" );
@@ -245,28 +243,28 @@ public class PackageResourceTest {
packageData.setVersion( "v1.0" );
packageData.setProvider( "Huawei" );
packageDataList.add( packageData );
- return packageDataList;
+ return packageDataList;
}
};
new MockUp<PackageManager>() {
@Mock
- public void deletePackage( String csarId ) {
- return;
+ public void deletePackage( String csarId ) {
+ return;
}
};
new MockUp<HttpFileManagerImpl>() {
@Mock
- public boolean delete( String srcPath ) {
- return true;
+ public boolean delete( String srcPath ) {
+ return true;
}
};
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getPackageData( String csarId ) {
- packageDataList = new ArrayList<PackageData>();
+ public List<PackageData> getPackageData( String csarId ) {
+ packageDataList = new ArrayList<PackageData>();
packageData = new PackageData();
packageData.setCsarId( csarID );
packageData.setDownloadUri( "src\\test\\resources\\" );
@@ -275,26 +273,26 @@ public class PackageResourceTest {
packageData.setVersion( "v1.0" );
packageData.setProvider( "Huawei" );
packageDataList.add( packageData );
- return packageDataList;
+ return packageDataList;
}
- };
+ };
try {
response = PackageWrapper.getInstance().delPackage( "csarid" );
} catch ( Exception e ) {
e.printStackTrace();
- }
+ }
assertNotNull( response );
- assertEquals( 200, response.getStatus());
+ assertEquals( 200, response.getStatus());
}
@Test
- public void testGetCsarFileUri() {
+ public void testGetCsarFileUri() {
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getPackageData( String csarId ) {
- packageDataList = new ArrayList<PackageData>();
+ public List<PackageData> getPackageData( String csarId ) {
+ packageDataList = new ArrayList<PackageData>();
packageData = new PackageData();
packageData.setCsarId( csarId );
packageData.setDownloadUri( "src\\test\\resources\\" );
@@ -303,25 +301,25 @@ public class PackageResourceTest {
packageData.setVersion( "v1.0" );
packageData.setProvider( "Huawei" );
packageDataList.add( packageData );
- return packageDataList;
+ return packageDataList;
}
- };
+ };
- new MockUp<PackageWrapper>() {
+ new MockUp<PackageWrapper>() {
@Mock
Response downloadCsarPackagesById(String csarId) throws FileNotFoundException
- {
+ {
String fileName="src" + File.separator + "test" + File.separator + "resources" + File.separator + "Test.txt";
InputStream fis = new BufferedInputStream(new FileInputStream(fileName));
return Response.ok(fis).header("Content-Disposition", "attachment; filename=\"" + fileName + "\"").build();
- }
- };
+ }
+ };
response = PackageWrapper.getInstance().getCsarFileUri("csarId");
- assertEquals( 200, response.getStatus() );
+ assertEquals( 200, response.getStatus() );
- }
+ }
- @Test
+ @Test
public void testupdateDwonloadCountSuccess() throws Exception
{
final List<PackageData> pkgList = new ArrayList<PackageData>();
@@ -330,14 +328,14 @@ public class PackageResourceTest {
pkgList.add(pkgDataObj);
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getPackageData(String csarId) {
+ public List<PackageData> getPackageData(String csarId) {
return pkgList;
//return new ArrayList<PackageData>();
}
};
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public void updatePackageData(PackageData oPackageData){
+ public void updatePackageData(PackageData oPackageData){
return ;
}
@@ -355,7 +353,7 @@ public class PackageResourceTest {
public void testReUploadPackage() {
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getPackageData( String csarId ) {
+ public List<PackageData> getPackageData( String csarId ) {
List<PackageData> packageDataList = new ArrayList<PackageData>();
PackageData packageData = new PackageData();
packageData = new PackageData();
@@ -366,16 +364,16 @@ public class PackageResourceTest {
packageData.setVersion( "v1.0" );
packageData.setProvider( "Huawei" );
packageDataList.add( packageData );
- return packageDataList;
- }
- };
+ return packageDataList;
+ }
+ };
new MockUp<HttpFileManagerImpl>() {
@Mock
public boolean delete(String srcPath) {
return true;
}
- };
+ };
new MockUp<MarketplaceDaoImpl>() {
@Mock
@@ -453,7 +451,7 @@ public class PackageResourceTest {
assertEquals( 417, response.getStatus() );
try {
- fileDetail = FormDataContentDisposition.name( "fileName" ).fileName( "clearwater_ns.csar" ).build();
+ fileDetail = FormDataContentDisposition.name( "fileName" ).fileName( "clearwater_ns.csar" ).build();
String fileName = "src" + File.separator + "test" + File.separator + "resources" + File.separator + "clearwater_ns.csar";
inputStream = new FileInputStream(fileName);
response = PackageWrapper.getInstance().reUploadPackage( "csarID", inputStream, fileDetail, null, null );
@@ -461,7 +459,7 @@ public class PackageResourceTest {
} catch( Exception e ) {
e.printStackTrace();
}
- }
+ }
@Test
public void testgetOperResultByOperTypeIdFailure() throws Exception
@@ -477,15 +475,15 @@ public class PackageResourceTest {
};
new MockUp<FunctionTestExceutor>(){
@Mock
- String getTestResultsByFuncTestKey(String key)
- {
+ String getTestResultsByFuncTestKey(String key)
+ {
return null;
}
- };
+ };
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getPackageData( String csarId ) {
+ public List<PackageData> getPackageData( String csarId ) {
List<PackageData> packageDataList = new ArrayList<PackageData>();
PackageData packageData = new PackageData();
packageData = new PackageData();
@@ -496,8 +494,8 @@ public class PackageResourceTest {
packageData.setVersion( "v1.0" );
packageData.setProvider( "Airtel" );
packageDataList.add( packageData );
- return packageDataList;
- }
+ return packageDataList;
+ }
};
@@ -505,7 +503,7 @@ public class PackageResourceTest {
response = PackageWrapper.getInstance().getOperResultByOperTypeId( csarID,operTypeId );
} catch ( Exception e5 ) {
e5.printStackTrace();
- }
+ }
assertEquals(500,response.getStatus());
try {
@@ -517,10 +515,10 @@ public class PackageResourceTest {
}
@Test
- public void testgetOperResultByOperTypeIdSuccess() {
+ public void testgetOperResultByOperTypeIdSuccess() {
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getPackageData( String csarId ) {
+ public List<PackageData> getPackageData( String csarId ) {
List<PackageData> packageDataList = new ArrayList<PackageData>();
PackageData packageData = new PackageData();
packageData = new PackageData();
@@ -531,9 +529,9 @@ public class PackageResourceTest {
packageData.setVersion( "v1.0" );
packageData.setProvider( "Airtel" );
packageDataList.add( packageData );
- return packageDataList;
- }
- };
+ return packageDataList;
+ }
+ };
new MockUp<ToolUtil>() {
@Mock
@@ -542,15 +540,15 @@ public class PackageResourceTest {
return filena;
}
};
- new MockUp<PackageWrapper>() {
+ new MockUp<PackageWrapper>() {
@Mock
Response downloadCsarPackagesById(String csarId) throws FileNotFoundException
{
String fileName = "src" + File.separator + "test" + File.separator + "resources" + File.separator + "Test.txt";
InputStream fis = new BufferedInputStream(new FileInputStream(fileName));
return Response.ok(fis).header("Content-Disposition", "attachment; filename=\"" + fileName + "\"").build();
- }
- };
+ }
+ };
new MockUp<FunctionTestHook>() {
@Mock
@@ -562,17 +560,17 @@ public class PackageResourceTest {
};
new MockUp<FunctionTestExceutor>(){
@Mock
- String getTestResultsByFuncTestKey(String key) {
- return "key";
+ String getTestResultsByFuncTestKey(String key) {
+ return "key";
}
};
try {
- response = PackageWrapper.getInstance().getOperResultByOperTypeId( csarID, operTypeId );
+ response = PackageWrapper.getInstance().getOperResultByOperTypeId( csarID, operTypeId );
} catch( Exception e ) {
e.printStackTrace();
- }
- }
+ }
+ }
//@Ignore
@Test
@@ -586,7 +584,7 @@ public class PackageResourceTest {
new MockUp<MarketplaceDaoImpl>() {
@Mock
- public List<PackageData> getPackageData( String csarId ) {
+ public List<PackageData> getPackageData( String csarId ) {
List<PackageData> packageDataList = new ArrayList<PackageData>();
PackageData packageData = new PackageData();
packageData = new PackageData();
@@ -597,16 +595,16 @@ public class PackageResourceTest {
packageData.setVersion( "v1.0" );
packageData.setProvider( "Airtel" );
packageDataList.add( packageData );
- return packageDataList;
- }
- };
+ return packageDataList;
+ }
+ };
new MockUp<HttpFileManagerImpl>() {
@Mock
public boolean delete(String srcPath) {
return true;
}
- };
+ };
new MockUp<MarketplaceDaoImpl>() {
@Mock
@@ -710,14 +708,14 @@ public class PackageResourceTest {
@Test
- public void testGetOnBoardingStepsSuccess() {
+ public void testGetOnBoardingStepsSuccess() {
new MockUp<org.onap.vnfsdk.marketplace.filemanage.http.ToolUtil>() {
@Mock
String getAppDeployPath() {
String path = "src" + File.separator + "main" + File.separator + "resources";
return path;
}
- };
+ };
try {
response = PackageWrapper.getInstance().getOnBoardingSteps();
@@ -729,24 +727,24 @@ public class PackageResourceTest {
}
@Test
- public void testGetOnBoardingStepsFailure() {
+ public void testGetOnBoardingStepsFailure() {
new MockUp<org.onap.vnfsdk.marketplace.filemanage.http.ToolUtil>() {
@Mock
String getAppDeployPath() {
- String path = "src" + File.separator + "main" + File.separator + "resources"+ File.separator + "generalconfig";
+ String path = "src" + File.separator + "main" + File.separator + "resources"+ File.separator + "generalconfig";
return path;
}
- };
+ };
try {
response = PackageWrapper.getInstance().getOnBoardingSteps();
} catch( Exception e ) {
e.printStackTrace();
- }
+ }
assertEquals( 500, response.getStatus() );
}
- @Test
+ @Test
public void testRestGetClient() {
FunctionTestExceutor.getTestResultsByFuncTestKey("GET");
@@ -779,7 +777,7 @@ public class PackageResourceTest {
new MockUp<FunctionTestHook>() {
@Mock
- String getResultStorePath(){
+ String getResultStorePath(){
return "src/test/resources";
}
@@ -945,13 +943,6 @@ public class PackageResourceTest {
}
@Test
- public void testgetCataloguePath()
- {
- String res = ToolUtil.getCataloguePath();
- assertEquals(res,"");
- }
-
- @Test
public void testgetCatalogueCsarPath()
{
String res = ToolUtil.getCatalogueCsarPath();
@@ -974,7 +965,7 @@ public class PackageResourceTest {
@Test
public void teststoreChunkFileInLocal()
- {
+ {
try {
inputStream = new FileInputStream("src//test//resources//Test.txt");
String res = ToolUtil.storeChunkFileInLocal("src//test//resources","TestOut.txt",inputStream);
@@ -995,7 +986,7 @@ public class PackageResourceTest {
assertEquals(res,true);
}
-
+
@Test
public void testToJson() {
@@ -1151,9 +1142,9 @@ public class PackageResourceTest {
String res = pkgMetaObj.getCreateTime();
assertEquals(res,"05042017");
res = pkgMetaObj.getCsarId();
- assertEquals(res,"csarid");
+ assertEquals(res,"csarid");
res = pkgMetaObj.getDetails();
- assertEquals(res,"details");
+ assertEquals(res,"details");
res = pkgMetaObj.getDownloadCount()+"";
assertEquals(res,"10");
res = pkgMetaObj.getDownloadUri();
@@ -1176,7 +1167,7 @@ public class PackageResourceTest {
assertEquals(res,"1000");
res = pkgMetaObj.getType();
assertEquals(res,"type");
- res = pkgMetaObj.getVersion();
+ res = pkgMetaObj.getVersion();
assertEquals(res,"1");
}
@@ -1200,3 +1191,4 @@ public class PackageResourceTest {
}
}
+