summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/filemanage/http/ToolUtil.java51
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vnfsdk/marketplace/wrapper/PackageWrapper.java125
-rw-r--r--vnfmarket-be/vnf-sdk-marketplace/src/test/filemanage/FileManageTest.java32
3 files changed, 128 insertions, 80 deletions
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 e45d31bf..48a7d0ca 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
@@ -34,7 +34,7 @@ public class ToolUtil {
}
/**
- * copy in directory.
+ * simple copy directory
* @param srcDirName source directory name
* @param destDirName destination directory name
* @param files file list in directory
@@ -42,24 +42,44 @@ public class ToolUtil {
* @return boolean
* @throws IOException e
*/
- public static boolean copyInDirectory(String srcDirName, String destDirName, File[] files, boolean overlay)
+ public static boolean simpleCopyDirectory(String srcDirName, String destDirName)
throws IOException
{
+ File srcDir = new File(srcDirName);
+ File[] files = srcDir.listFiles();
for (int i = 0; i < files.length; i++) {
boolean flag = false;
if (files[i].isFile()) {
flag = copyFile(files[i].getAbsolutePath(), destDirName + files[i].getName(), true);
}
if (files[i].isDirectory()) {
- flag = copyDirectory(files[i].getAbsolutePath(), destDirName + files[i].getName(), overlay);
+ flag = simpleCopyDirectory(files[i].getAbsolutePath(), destDirName + files[i].getName());
}
if (!flag) {
String message = "Copy catagory " + srcDirName + " to " + destDirName + " failed!";
LOGGER.error(message);
return false;
}
- }
- return true;
+ }
+ return true;
+ }
+
+ /**
+ * create destDir
+ * @param destDirName destination directory name
+ * @param overlay overwrite or not
+ * @return boolean
+ */
+ public static boolean createDestDir(String destDirName, boolean overlay)
+ {
+ File destDir = new File(destDirName);
+ if (destDir.exists() && overlay) {
+ new File(destDirName).delete();
+ } else if (destDir.exists() && !overlay) {
+ return false;
+ }
+
+ return destDir.mkdirs();
}
/**
@@ -77,24 +97,17 @@ public class ToolUtil {
return false;
}
- String useDestDirName = destDirName;
- if (!useDestDirName.endsWith(File.separator)) {
- useDestDirName += File.separator;
- }
- File destDir = new File(useDestDirName);
- if (destDir.exists() && overlay) {
- new File(useDestDirName).delete();
- } else if (destDir.exists() && !overlay) {
- return false;
+ String fullDestDirName = destDirName;
+ if (!fullDestDirName.endsWith(File.separator)) {
+ fullDestDirName += File.separator;
}
- if (!destDir.mkdirs()) {
- return false;
+ if (!createDestDir(fullDestDirName, overlay))
+ {
+ return false;
}
- File[] files = srcDir.listFiles();
-
- return copyInDirectory(srcDirName, destDirName, files, overlay);
+ return simpleCopyDirectory(srcDirName, fullDestDirName);
}
/**
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 02ae5e30..de77d240 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
@@ -34,6 +34,7 @@ import javax.ws.rs.core.Response.Status;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+import org.onap.validation.csar.CsarValidator;
import org.onap.vnfsdk.marketplace.common.CommonConstant;
import org.onap.vnfsdk.marketplace.common.FileUtil;
import org.onap.vnfsdk.marketplace.common.JsonUtil;
@@ -58,8 +59,6 @@ import org.onap.vnfsdk.marketplace.onboarding.onboardmanager.OnBoardingHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.onap.validation.csar.CsarValidator;
-
import net.sf.json.JSONObject;
public class PackageWrapper {
@@ -184,6 +183,57 @@ public class PackageWrapper {
return Response.status(Status.INTERNAL_SERVER_ERROR).build();
}
+ private UploadPackageResponse manageUpload(String packageId, String fileName, String fileLocation,
+ String details, String contentRange) throws IOException, MarketplaceResourceException
+ {
+ String localDirName = ToolUtil.getTempDir(CommonConstant.CATALOG_CSAR_DIR_NAME, fileName);
+ PackageBasicInfo basicInfo = PackageWrapperUtil.getPacageBasicInfo(fileLocation);
+ UploadPackageResponse result = new UploadPackageResponse();
+ Boolean isEnd = PackageWrapperUtil.isUploadEnd(contentRange);
+ if (isEnd)
+ {
+ PackageMeta packageMeta = PackageWrapperUtil.getPackageMeta(packageId, fileName, fileLocation, basicInfo, details);
+ 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 null;
+ }
+ }
+ return result;
+ }
+
/**
* Interface for Uploading package
* @param packageId
@@ -232,66 +282,25 @@ public class PackageWrapper {
uploadedInputStream.close();
- try {
- CsarValidator cv = new CsarValidator(packageId, fileLocation);
-
- if (!cv.validateCsar()) {
- LOG.error("Could not validate failed");
- return Response.status(Status.EXPECTATION_FAILED).build();
- }
-
+ try {
+ CsarValidator cv = new CsarValidator(packageId, fileLocation);
- } catch (Exception e) {
- LOG.error("CSAR validation panicked", e);
- return Response.status(Status.EXPECTATION_FAILED).build();
- }
-
+ if (!cv.validateCsar()) {
+ LOG.error("Could not validate failed");
+ return Response.status(Status.EXPECTATION_FAILED).build();
+ }
+ } catch (Exception e) {
+ LOG.error("CSAR validation panicked", e);
+ return Response.status(Status.EXPECTATION_FAILED).build();
+ }
- PackageBasicInfo basicInfo = PackageWrapperUtil.getPacageBasicInfo(fileLocation);
- UploadPackageResponse result = new UploadPackageResponse();
- Boolean isEnd = PackageWrapperUtil.isUploadEnd(contentRange);
- if (isEnd)
+ UploadPackageResponse result = manageUpload(packageId, fileName, fileLocation, details, contentRange);
+ if (null != result)
{
- PackageMeta packageMeta = PackageWrapperUtil.getPackageMeta(packageId,fileName, fileLocation, basicInfo, details);
- 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();
+ } else {
+ return Response.serverError().build();
}
- return Response.ok(ToolUtil.objectToString(result), MediaType.APPLICATION_JSON).build();
}
/**
diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/test/filemanage/FileManageTest.java b/vnfmarket-be/vnf-sdk-marketplace/src/test/filemanage/FileManageTest.java
index c2597ff1..2fbaf756 100644
--- a/vnfmarket-be/vnf-sdk-marketplace/src/test/filemanage/FileManageTest.java
+++ b/vnfmarket-be/vnf-sdk-marketplace/src/test/filemanage/FileManageTest.java
@@ -18,13 +18,15 @@ package org.onap.vnfsdk.marketplace.filemanage;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Modifier;
import org.junit.Before;
import org.junit.Test;
-import org.onap.vnfsdk.marketplace.filemanage.http.HttpFileManagerImpl;
import org.onap.vnfsdk.marketplace.filemanage.http.ToolUtil;
import mockit.Mock;
@@ -45,6 +47,16 @@ public class FileManageTest {
assertNull(manager);
}
+ @Test
+ public void testFileManagerFactoryConstructor() {
+ try {
+ Constructor<FileManagerFactory> constructor = FileManagerFactory.class.getDeclaredConstructor();
+ assertTrue(Modifier.isPrivate(constructor.getModifiers()));
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ }
+ }
+
@Before
public void createTestFile()
{
@@ -58,7 +70,14 @@ public class FileManageTest {
@Test
public void testDelete() throws IOException {
- HttpFileManagerImpl ManagerImpl = new HttpFileManagerImpl();
+ new MockUp<FileManagerFactory>() {
+ @Mock
+ private FileManagerType getType() {
+ return FileManagerType.http;
+ }
+ };
+
+ FileManager ManagerImpl = FileManagerFactory.createFileManager();
String srcPath = "./srcPathForTest";
new MockUp<ToolUtil>() {
@Mock
@@ -78,7 +97,14 @@ public class FileManageTest {
@Test
public void testUpload() throws IOException {
- HttpFileManagerImpl ManagerImpl = new HttpFileManagerImpl();
+ new MockUp<FileManagerFactory>() {
+ @Mock
+ private FileManagerType getType() {
+ return FileManagerType.http;
+ }
+ };
+
+ FileManager ManagerImpl = FileManagerFactory.createFileManager();
String srcPath = "./srcPathForTest";
String dstPath = "./dstPathForTest";
new MockUp<ToolUtil>() {