summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INFO.yaml45
-rw-r--r--deliveries/.env4
-rw-r--r--deliveries/Apps_Users_OnBoarding_Script.sql2
-rw-r--r--docs/release-notes.rst31
-rw-r--r--ecomp-portal-BE-common/src/main/java/jarutil/ExtractJar.java79
-rw-r--r--ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java52
-rw-r--r--ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterface.java2
-rw-r--r--ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/InitializationServiceImpl.java9
-rw-r--r--ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java169
-rw-r--r--ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/utils/UnzipUtil.java96
10 files changed, 279 insertions, 210 deletions
diff --git a/INFO.yaml b/INFO.yaml
new file mode 100644
index 00000000..5ce7de9c
--- /dev/null
+++ b/INFO.yaml
@@ -0,0 +1,45 @@
+---
+project: 'portal'
+project_creation_date: '2017-02-02'
+project_category: ''
+lifecycle_state: 'Incubation'
+project_lead: &onap_portal_ptl
+ name: 'Manoop Talasila'
+ email: 'mt2061@att.com'
+ id: 'mt2061'
+ company: 'ATT'
+ timezone: 'America/New_York'
+primary_contact: *onap_portal_ptl
+issue_tracking:
+ type: 'jira'
+ url: 'https://jira.onap.org/projects/PORTAL'
+ key: 'PORTAL'
+mailing_list:
+ type: 'groups.io'
+ url: 'lists.onap.org'
+ tag: '<[sub-project_name]>'
+realtime_discussion: ''
+meetings:
+ - type: 'zoom'
+ agenda: 'https://wiki.onap.org/pages/viewpage.action?pageId=10782705'
+ url: 'https://wiki.onap.org/pages/viewpage.action?pageId=10782705'
+ server: 'n/a'
+ channel: 'n/a'
+ repeats: 'weekly'
+ time: '15:00 UTC (DST)'
+repositories:
+ - 'portal'
+committers:
+ - <<: *onap_portal_ptl
+ - name: 'Manoop Talasila'
+ email: 'mt2061@att.com'
+ company: 'ATT'
+ id: 'mt2061'
+ timezone: 'America/New_York'
+ - name: 'Sunder Tattavarada'
+ email: 'st782s@att.com'
+ company: 'ATT'
+ id: 'st782s'
+ timezone: 'America/New_York'
+tsc:
+ approval: 'https://lists.onap.org/pipermail/onap-tsc'
diff --git a/deliveries/.env b/deliveries/.env
index 73259592..3b2fa140 100644
--- a/deliveries/.env
+++ b/deliveries/.env
@@ -14,11 +14,11 @@ CLI_IMG_NAME=onap/cli
# This is the first portion of the Docker image tag
# that is published to the ONAP registry.
-PORTAL_VERSION=v2.3.0
+PORTAL_VERSION=2.3.0
# This is used during builds and in docker-compose;
# it is never published to the ONAP registry.
-PORTAL_TAG=beijing
+PORTAL_TAG=casablanca
# Name of directory in apps container (NOT host)
WEBAPPS_DIR=/opt/apache-tomcat-8.0.37/webapps
diff --git a/deliveries/Apps_Users_OnBoarding_Script.sql b/deliveries/Apps_Users_OnBoarding_Script.sql
index 0232a1f4..af3edbaa 100644
--- a/deliveries/Apps_Users_OnBoarding_Script.sql
+++ b/deliveries/Apps_Users_OnBoarding_Script.sql
@@ -13,7 +13,7 @@ INSERT INTO `fn_app` (`app_id`, `app_name`, `app_image_url`, `app_description`,
(6, 'Virtual Infrastructure Deployment', 'images/cache/portal-345993588_92550.png', NULL, NULL, 'http://vid.api.simpledemo.onap.org:8080/vid/welcome.htm', NULL, 'http://vid.api.simpledemo.onap.org:8080/vid/api/v2', '', '', NULL, 'okYTaDrhzibcbGVq5mjkVQ==', 'N', 'Y', NULL, 'Default', '2Re7Pvdkgw5aeAUD', 'S31PrbOzGgL4hg4owgtx47Da', 'ECOMP-PORTAL-OUTBOX-90', 1,'N',NULL),
(7, 'A&AI UI', 'images/cache/portal-345993588_92550.png', NULL, NULL, 'http://aai.api.simpledemo.onap.org:9517/services/aai/webapp/index.html#/viewInspect', NULL, 'http://aai.api.simpledemo.onap.org:9517/api/v2', '', '', NULL, 't1oqm6wCXrGUXUSL8mS7pQ==', 'N', 'Y', NULL, 'aaiui', 'ueb_key', 'ueb_secret', 'ECOMP-PORTAL-OUTBOX', 1,'N',NULL),
(8, 'CLI', 'images/cache/portal-345993588_92550.png', NULL, NULL, 'http://portal.api.simpledemo.onap.org:8080/', NULL, NULL, '', '', NULL, '', 'Y', 'Y', NULL, '', '', '', '', 1,'N',NULL),
-(9, 'MSB', 'images/cache/portal-345993588_92550.png', NULL, NULL, 'http://msb-discovery:8080/iui/microservices/default.html', NULL, NULL, '', '', NULL, '', 'Y', 'Y', NULL, '', '', '', '', 2,'N',NULL);
+(9, 'MSB', 'images/cache/portal-345993588_92550.png', NULL, NULL, 'http://msb-iag:80/iui/microservices/index.html', NULL, NULL, '', '', NULL, '', 'Y', 'Y', NULL, '', '', '', '', 2,'N',NULL);
-- insert SDC users user id2-8
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 43803ad0..b0c3f33c 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -6,6 +6,37 @@
Portal Platform Release Notes
=============================
+Version: 2.3.0
+--------------
+:Release Date: XXXX-XX-XX
+
+.. toctree::
+ :maxdepth: 1
+
+We worked on SDK upgrade to integrate with AAF.
+
+**New Features**
+ * Portal SDK (2.4.0)
+ * Use of Semantic Versioning - V3 is the supported version
+ * Integration with AAF via REST; Supports both SDK and Framework Applicaitons
+
+**Bug Fixes**
+
+
+**Known Issues**
+
+**Security Issues**
+
+**Security Notes**
+
+**Upgrade Notes**
+
+**Deprecation Notes**
+
+**Other**
+ * portal/sdk - (Release branch: "release-2.4.0")
+
+
Version: 2.2.0
--------------
diff --git a/ecomp-portal-BE-common/src/main/java/jarutil/ExtractJar.java b/ecomp-portal-BE-common/src/main/java/jarutil/ExtractJar.java
index 7d3bfeea..b5508636 100644
--- a/ecomp-portal-BE-common/src/main/java/jarutil/ExtractJar.java
+++ b/ecomp-portal-BE-common/src/main/java/jarutil/ExtractJar.java
@@ -72,47 +72,50 @@ public class ExtractJar {
String classContainer = clazz.getProtectionDomain().getCodeSource().getLocation().toString();
URL jarUrl = clazz.getProtectionDomain().getCodeSource().getLocation();
- JarInputStream entryStream = new JarInputStream(jarUrl.openStream());
- JarEntry entry;
- while (true) {
- entry = entryStream.getNextJarEntry();
- if (entry == null)
- break;
- if (entry.getName().indexOf("jarutil") < 0) {
- logger.info(entry.getName());
- File file = new File(directory, entry.getName());
- if (entry.isDirectory()) {
- if (!file.exists())
- file.mkdirs();
- } else {
- // make directory (some jars don't list dirs)
- File dir = new File(file.getParent());
- if (!dir.exists())
- dir.mkdirs();
- if (file.exists())
- file.delete();
- // Make file
- FileOutputStream fout = new FileOutputStream(file);
- copy(entryStream, fout);
- fout.close();
-
- // touch the file.
- if (entry.getTime() >= 0)
- file.setLastModified(entry.getTime());
+ try(JarInputStream entryStream = new JarInputStream(jarUrl.openStream())){
+ JarEntry entry;
+ while (true) {
+ entry = entryStream.getNextJarEntry();
+ if (entry == null)
+ break;
+ if (entry.getName().indexOf("jarutil") < 0) {
+ logger.info(entry.getName());
+ File file = new File(directory, entry.getName());
+ if (entry.isDirectory()) {
+ if (!file.exists())
+ file.mkdirs();
+ } else {
+ // make directory (some jars don't list dirs)
+ File dir = new File(file.getParent());
+ if (!dir.exists())
+ dir.mkdirs();
+ if (file.exists())
+ file.delete();
+ // Make file
+ FileOutputStream fout = new FileOutputStream(file);
+ copy(entryStream, fout);
+ fout.close();
+
+ // touch the file.
+ if (entry.getTime() >= 0)
+ file.setLastModified(entry.getTime());
+ }
+
}
-
+ entryStream.closeEntry();
}
- entryStream.closeEntry();
+ System.out.println("************************************************");
+ System.out.println("* *");
+ System.out.println("* *");
+ System.out.println("* RAPTOR SETUP COMPLETE. *");
+ System.out.println("* *");
+ System.out.println("* Thank you for upgrading. *");
+ System.out.println("* *");
+ System.out.println("************************************************");
+ }catch(Exception e) {
+ logger.error("Exception in extractFilesFromJar",e);
}
- entryStream.close();
- System.out.println("************************************************");
- System.out.println("* *");
- System.out.println("* *");
- System.out.println("* RAPTOR SETUP COMPLETE. *");
- System.out.println("* *");
- System.out.println("* Thank you for upgrading. *");
- System.out.println("* *");
- System.out.println("************************************************");
+
}
public static void copy(InputStream in, OutputStream out, long byteCount) throws IOException {
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java
index d05fe014..a7ce3557 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java
@@ -377,32 +377,38 @@ public class WidgetsCatalogController extends EPRestrictedBaseController {
.getBody();
File downloadFile = File.createTempFile("temp", ".zip");
- FileOutputStream stream = new FileOutputStream(downloadFile.getPath());
- stream.write(byteFile);
- stream.close();
-
- FileInputStream inputStream = new FileInputStream(downloadFile);
- String mimeType = context.getMimeType(downloadFile.getPath());
- if (mimeType == null) {
- mimeType = "application/octet-stream";
+ try(FileOutputStream stream = new FileOutputStream(downloadFile.getPath())){
+ stream.write(byteFile);
+ }catch(Exception e)
+ {
+ logger.error(EELFLoggerDelegate.errorLogger, "doDownload failed", e);
+ throw e;
}
- response.setContentType(mimeType);
- response.setContentLength((int) downloadFile.length());
- String headerKey = "Content-Disposition";
- String headerValue = String.format("attachment; filename=\"%s\"", downloadFile.getName());
- downloadFile.delete();
- response.setHeader(headerKey, headerValue);
-
- OutputStream outStream = response.getOutputStream();
- byte[] buffer = new byte[32 * 1024];
- int bytesRead;
- while ((bytesRead = inputStream.read(buffer)) != -1) {
- outStream.write(buffer, 0, bytesRead);
- }
+ try(FileInputStream inputStream = new FileInputStream(downloadFile);
+ OutputStream outStream = response.getOutputStream()){
+ String mimeType = context.getMimeType(downloadFile.getPath());
+ if (mimeType == null) {
+ mimeType = "application/octet-stream";
+ }
- inputStream.close();
- outStream.close();
+ response.setContentType(mimeType);
+ response.setContentLength((int) downloadFile.length());
+ String headerKey = "Content-Disposition";
+ String headerValue = String.format("attachment; filename=\"%s\"", downloadFile.getName());
+ downloadFile.delete();
+ response.setHeader(headerKey, headerValue);
+
+ byte[] buffer = new byte[32 * 1024];
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ outStream.write(buffer, 0, bytesRead);
+ }
+ }catch(Exception e)
+ {
+ logger.error(EELFLoggerDelegate.errorLogger, "doDownload failed", e);
+ throw e;
+ }
}
@RequestMapping(value = { "/portalApi/microservices/parameters" }, method = RequestMethod.POST)
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterface.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterface.java
index 825d33a2..1886b8b5 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterface.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterface.java
@@ -157,7 +157,7 @@ public class SchedulerRestInterface implements SchedulerRestInterfaceIfc {
client = HttpsBasicClient.getClient();
}
} catch (Exception e) {
- logger.debug(EELFLoggerDelegate.debugLogger, "Unable to initialize rest client");
+ logger.debug(EELFLoggerDelegate.debugLogger, "Unable to initialize rest client",e.getMessage());
}
logger.debug(EELFLoggerDelegate.debugLogger, "Client Initialized");
diff --git a/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/InitializationServiceImpl.java b/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/InitializationServiceImpl.java
index cbc0c9d0..c9365c46 100644
--- a/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/InitializationServiceImpl.java
+++ b/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/InitializationServiceImpl.java
@@ -114,18 +114,13 @@ public class InitializationServiceImpl implements InitializationService {
long widgetId = widgetCatalogService.saveWidgetCatalog(newWidget);
File tmpZipFile = new File("/tmp/" + fileLocation);
- InputStream fileInputStream = null;
- OutputStream outputStream = null;
- try {
- fileInputStream = this.getClass().getClassLoader().getResourceAsStream(fileLocation);
- outputStream = new FileOutputStream(tmpZipFile);
+ try(OutputStream outputStream = new FileOutputStream(tmpZipFile);
+ InputStream fileInputStream = this.getClass().getClassLoader().getResourceAsStream(fileLocation)) {
int read = 0;
byte[] bytes = new byte[4096];
while ((read = fileInputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
- outputStream.close();
- fileInputStream.close();
} catch (Exception e) {
logger.error(
"Exception occurred while performing InitializationServiceImpl.initCommonWidget in widget microservices. Details:", e);
diff --git a/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java b/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java
index c2633948..18611728 100644
--- a/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java
+++ b/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java
@@ -101,9 +101,9 @@ public class StorageServiceImpl implements StorageService {
String fileLocation = file.getOriginalFilename();
logger.debug("StorageServiceImpl.checkZipFile: store the widget to:" + fileLocation);
convFile = new File(fileLocation);
- FileOutputStream fos = new FileOutputStream(convFile);
- fos.write(file.getBytes());
- fos.close();
+ try(FileOutputStream fos = new FileOutputStream(convFile)){
+ fos.write(file.getBytes());
+ }
map = unzipper.unzip_db(fileLocation, ".", "tempWidgets");
convFile.delete();
} catch (IOException e) {
@@ -137,9 +137,9 @@ public class StorageServiceImpl implements StorageService {
String fileLocation = file.getOriginalFilename();
logger.debug("StorageServiceImpl.save: store the widget to:" + fileLocation);
convFile = new File(fileLocation);
- FileOutputStream fos = new FileOutputStream(convFile);
- fos.write(file.getBytes());
- fos.close();
+ try(FileOutputStream fos = new FileOutputStream(convFile)){
+ fos.write(file.getBytes());
+ }
map = unzipper.unzip_db(fileLocation, ".", "tempWidgets");
convFile.delete();
} catch (IOException e) {
@@ -183,35 +183,29 @@ public class StorageServiceImpl implements StorageService {
widgetFile.setName(newWidget.getName());
widgetFile.setWidgetId(widgetId);
- InputStream fileInputStream = this.getClass().getClassLoader().getResourceAsStream("framework-template.js");
+
String sb = null;
- try {
+ try(InputStream fileInputStream = this.getClass().getClassLoader().getResourceAsStream("framework-template.js")) {
byte[] bytes = new byte[fileInputStream.available()];
- fileInputStream.read(bytes);
- sb = new String(bytes, "UTF-8");
+ if(fileInputStream.read(bytes) > 0) {
+ sb = new String(bytes, "UTF-8");
+ }
} catch (IOException e) {
logger.error("StorageServiceImpl.save: Failed to load framework-template.js file ", e);
- e.printStackTrace();
- } finally {
- if (fileInputStream != null) {
- try {
- fileInputStream.close();
- } catch (IOException e) {
- logger.error("StorageServiceImpl.update: Failed to close the fileInputStream ", e);
- }
- }
}
String namespace = "Portal" + widgetId + "Widget";
String controllerName = "Portal" + widgetId + "Ctrl";
String cssName = "portal" + widgetId + "-css-ready";
String colorArg1 = "color: #fff";
- String framework = sb.replaceAll("ARGUMENT1", namespace).replaceAll("ARGUMENT2", controllerName)
- .replaceAll("ARGUMENT3", cssName).replaceAll("CSS_ARG1", colorArg1)
- .replaceAll("MICROSERVICE_ID", newWidget.getServiceId().toString())
- .replaceAll("WIDGET_ID", Long.toString(widgetId));
-
+ String framework="";
+ if(sb!=null) {
+ framework = sb.replaceAll("ARGUMENT1", namespace).replaceAll("ARGUMENT2", controllerName)
+ .replaceAll("ARGUMENT3", cssName).replaceAll("CSS_ARG1", colorArg1)
+ .replaceAll("MICROSERVICE_ID", newWidget.getServiceId().toString())
+ .replaceAll("WIDGET_ID", Long.toString(widgetId));
+ }
widgetFile.setFramework(framework.getBytes());
final byte[] controllerLoc = map.get(WidgetConstant.WIDGET_CONTROLLER_LOCATION);
@@ -277,9 +271,9 @@ public class StorageServiceImpl implements StorageService {
String fileLocation = file.getOriginalFilename();
logger.debug("StorageServiceImpl.update: store the widget to:" + fileLocation);
convFile = new File(fileLocation);
- FileOutputStream fos = new FileOutputStream(convFile);
- fos.write(file.getBytes());
- fos.close();
+ try(FileOutputStream fos = new FileOutputStream(convFile)){
+ fos.write(file.getBytes());
+ }
map = unzipper.unzip_db(fileLocation, ".", "tempWidgets");
convFile.delete();
} catch (IOException e) {
@@ -289,34 +283,27 @@ public class StorageServiceImpl implements StorageService {
}
WidgetFile widgetFile = getWidgetFile(widgetId);
- InputStream fileInputStream = this.getClass().getClassLoader().getResourceAsStream("framework-template.js");
String sb = null;
- try {
+ try(InputStream fileInputStream = this.getClass().getClassLoader().getResourceAsStream("framework-template.js")){
byte[] bytes = new byte[fileInputStream.available()];
- fileInputStream.read(bytes);
- sb = new String(bytes, "UTF-8");
+ if(fileInputStream.read(bytes) > 0) {
+ sb = new String(bytes, "UTF-8");
+ }
} catch (IOException e) {
logger.error("StorageServiceImpl.save: Failed to load framework-template.js file ", e);
- e.printStackTrace();
- } finally {
- if (fileInputStream != null) {
- try {
- fileInputStream.close();
- } catch (IOException e) {
- logger.error("StorageServiceImpl.update: Failed to close the fileInputStream ", e);
- e.printStackTrace();
- }
- }
}
String namespace = "Portal" + widgetId + "Widget";
String controllerName = "Portal" + widgetId + "Ctrl";
String cssName = "portal" + widgetId + "-css-ready";
String colorArg1 = "color: #fff";
- String framework = sb.replaceAll("ARGUMENT1", namespace).replaceAll("ARGUMENT2", controllerName)
- .replaceAll("ARGUMENT3", cssName).replaceAll("CSS_ARG1", colorArg1)
- .replaceAll("MICROSERVICE_ID", newWidget.getServiceId().toString())
- .replaceAll("WIDGET_ID", Long.toString(widgetId));
+ String framework="";
+ if(sb!=null) {
+ framework = sb.replaceAll("ARGUMENT1", namespace).replaceAll("ARGUMENT2", controllerName)
+ .replaceAll("ARGUMENT3", cssName).replaceAll("CSS_ARG1", colorArg1)
+ .replaceAll("MICROSERVICE_ID", newWidget.getServiceId().toString())
+ .replaceAll("WIDGET_ID", Long.toString(widgetId));
+ }
widgetFile.setFramework(framework.getBytes());
String javascript = new String(map.get(WidgetConstant.WIDGET_CONTROLLER_LOCATION));
@@ -441,53 +428,53 @@ public class StorageServiceImpl implements StorageService {
String styles = getWidgetCSS(widgetId).replaceAll(cssName, widget.getName() + "-css-ready");
File f = File.createTempFile("temp", ".zip");
- ZipOutputStream out = new ZipOutputStream(new FileOutputStream(f));
- ZipEntry e = new ZipEntry(widget.getName() + "/styles/styles.css");
- out.putNextEntry(new ZipEntry(widget.getName() + "/"));
- out.putNextEntry(new ZipEntry(widget.getName() + "/styles/"));
- out.putNextEntry(e);
- byte[] data = styles.getBytes();
- out.write(data, 0, data.length);
-
- String widgetData = namespace + "=" + namespace + "||{};" + "var res = " + namespace + ".widgetData;";
- String javascript = getWidgetController(widgetId).replace(widgetData, "").replace(namespace + ".controller =",
- "");
-
- String functionHeader = javascript.substring(javascript.indexOf("function"), javascript.indexOf(")") + 1);
- javascript = javascript.replaceFirst(controllerName, widget.getName() + "Ctrl");
- String functionParam = functionHeader.substring(functionHeader.indexOf("(") + 1, functionHeader.indexOf(")"));
- StringBuilder injectStr = new StringBuilder().append("[");
- List<String> paramList = Arrays.asList(functionParam.split(","));
- for (int i = 0; i < paramList.size(); i++) {
- if (i == paramList.size() - 1)
- injectStr.append("'" + paramList.get(i).trim() + "'];");
- else
- injectStr.append("'" + paramList.get(i).trim() + "',");
+ try(ZipOutputStream out = new ZipOutputStream(new FileOutputStream(f))){
+ ZipEntry e = new ZipEntry(widget.getName() + "/styles/styles.css");
+ out.putNextEntry(new ZipEntry(widget.getName() + "/"));
+ out.putNextEntry(new ZipEntry(widget.getName() + "/styles/"));
+ out.putNextEntry(e);
+ byte[] data = styles.getBytes();
+ out.write(data, 0, data.length);
+
+ String widgetData = namespace + "=" + namespace + "||{};" + "var res = " + namespace + ".widgetData;";
+ String javascript = getWidgetController(widgetId).replace(widgetData, "").replace(namespace + ".controller =",
+ "");
+
+ String functionHeader = javascript.substring(javascript.indexOf("function"), javascript.indexOf(")") + 1);
+ javascript = javascript.replaceFirst(controllerName, widget.getName() + "Ctrl");
+ String functionParam = functionHeader.substring(functionHeader.indexOf("(") + 1, functionHeader.indexOf(")"));
+ StringBuilder injectStr = new StringBuilder().append("[");
+ List<String> paramList = Arrays.asList(functionParam.split(","));
+ for (int i = 0; i < paramList.size(); i++) {
+ if (i == paramList.size() - 1)
+ injectStr.append("'" + paramList.get(i).trim() + "'];");
+ else
+ injectStr.append("'" + paramList.get(i).trim() + "',");
+ }
+ javascript = javascript.replace(";" + namespace + ".controller.$inject = " + injectStr.toString(), "");
+
+ e = new ZipEntry(widget.getName() + "/js/controller.js");
+ out.putNextEntry(new ZipEntry(widget.getName() + "/js/"));
+ out.putNextEntry(e);
+ data = javascript.getBytes();
+ out.write(data, 0, data.length);
+
+ String html = getWidgetMarkup(widgetId).replaceFirst(controllerName, widget.getName() + "Ctrl");
+
+ // new
+ // String(map.get(WidgetConstant.WIDGET_MARKUP_LOCATION)).replaceFirst(functionName,
+ // controllerName);;
+
+ e = new ZipEntry(widget.getName() + "/markup/markup.html");
+ out.putNextEntry(new ZipEntry(widget.getName() + "/markup/"));
+ out.putNextEntry(e);
+ data = html.getBytes();
+ out.write(data, 0, data.length);
+ out.closeEntry();
+ byte[] result = Files.readAllBytes(Paths.get(f.getPath()));
+ f.delete();
+ return result;
}
- javascript = javascript.replace(";" + namespace + ".controller.$inject = " + injectStr.toString(), "");
-
- e = new ZipEntry(widget.getName() + "/js/controller.js");
- out.putNextEntry(new ZipEntry(widget.getName() + "/js/"));
- out.putNextEntry(e);
- data = javascript.getBytes();
- out.write(data, 0, data.length);
-
- String html = getWidgetMarkup(widgetId).replaceFirst(controllerName, widget.getName() + "Ctrl");
-
- // new
- // String(map.get(WidgetConstant.WIDGET_MARKUP_LOCATION)).replaceFirst(functionName,
- // controllerName);;
-
- e = new ZipEntry(widget.getName() + "/markup/markup.html");
- out.putNextEntry(new ZipEntry(widget.getName() + "/markup/"));
- out.putNextEntry(e);
- data = html.getBytes();
- out.write(data, 0, data.length);
- out.closeEntry();
- out.close();
- byte[] result = Files.readAllBytes(Paths.get(f.getPath()));
- f.delete();
- return result;
}
}
diff --git a/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/utils/UnzipUtil.java b/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/utils/UnzipUtil.java
index d699e5da..f20ed1b5 100644
--- a/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/utils/UnzipUtil.java
+++ b/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/utils/UnzipUtil.java
@@ -46,49 +46,51 @@ public class UnzipUtil {
File destDir = new File(destDirectory);
if (!destDir.exists())
destDir.mkdir();
- ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
- ZipEntry entry = zipIn.getNextEntry();
- Map<String, byte[]> map = new HashMap<>();
-
- String[] requiredKeys = { WidgetConstant.WIDGET_CONTROLLER_LOCATION, WidgetConstant.WIDGET_MARKUP_LOCATION,
- WidgetConstant.WIDGET_STYLE_LOCATION };
- for (String k : requiredKeys)
- map.put(k, null);
-
- // iterates over entries in the zip file
- Stack<File> stack = new Stack<>();
- while (entry != null) {
- String filePath = destDirectory + File.separator + widgetName + File.separator
- + entry.getName().substring(entry.getName().indexOf("/") + 1);
- final String entryShortName = entry.getName().substring(entry.getName().indexOf("/") + 1);
- logger.debug("UnzipUtil.unzip_db: file path {}, short name {}", filePath, entryShortName);
- if (!entry.isDirectory()) {
- // if the entry is a file, extracts it
- logger.debug("UnzipUtil.unzip_db: unzip and save widget file {}", filePath);
- stack.push(new File(filePath));
- extractFile(zipIn, filePath);
- } else {
- // if the entry is a directory, make the directory
- logger.debug("UnzipUtil.unzip_db: unzip and create widget folder {}", filePath);
- File dir = new File(filePath);
- stack.push(new File(filePath));
- dir.mkdir();
+ try(ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath)))
+ {
+ ZipEntry entry = zipIn.getNextEntry();
+ Map<String, byte[]> map = new HashMap<>();
+
+ String[] requiredKeys = { WidgetConstant.WIDGET_CONTROLLER_LOCATION, WidgetConstant.WIDGET_MARKUP_LOCATION,
+ WidgetConstant.WIDGET_STYLE_LOCATION };
+ for (String k : requiredKeys)
+ map.put(k, null);
+
+ // iterates over entries in the zip file
+ Stack<File> stack = new Stack<>();
+ while (entry != null) {
+ String filePath = destDirectory + File.separator + widgetName + File.separator
+ + entry.getName().substring(entry.getName().indexOf("/") + 1);
+ final String entryShortName = entry.getName().substring(entry.getName().indexOf("/") + 1);
+ logger.debug("UnzipUtil.unzip_db: file path {}, short name {}", filePath, entryShortName);
+ if (!entry.isDirectory()) {
+ // if the entry is a file, extracts it
+ logger.debug("UnzipUtil.unzip_db: unzip and save widget file {}", filePath);
+ stack.push(new File(filePath));
+ extractFile(zipIn, filePath);
+ } else {
+ // if the entry is a directory, make the directory
+ logger.debug("UnzipUtil.unzip_db: unzip and create widget folder {}", filePath);
+ File dir = new File(filePath);
+ stack.push(new File(filePath));
+ dir.mkdir();
+ }
+ // Is this one we need?
+ if (map.containsKey(entryShortName))
+ map.put(entryShortName, Files.readAllBytes(Paths.get(filePath)));
+ zipIn.closeEntry();
+ entry = zipIn.getNextEntry();
}
- // Is this one we need?
- if (map.containsKey(entryShortName))
- map.put(entryShortName, Files.readAllBytes(Paths.get(filePath)));
- zipIn.closeEntry();
- entry = zipIn.getNextEntry();
+
+ while (!stack.isEmpty())
+ stack.pop().delete();
+
+ for (String k : requiredKeys)
+ if (!map.containsKey(k))
+ logger.warn("UnzipUtil.unzip_db: no zip archive entry found for required key {}", k);
+
+ return map;
}
- zipIn.close();
- while (!stack.isEmpty())
- stack.pop().delete();
-
- for (String k : requiredKeys)
- if (!map.containsKey(k))
- logger.warn("UnzipUtil.unzip_db: no zip archive entry found for required key {}", k);
-
- return map;
}
/**
@@ -99,12 +101,12 @@ public class UnzipUtil {
* @throws IOException
*/
private void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
- byte[] bytesIn = new byte[BUFFER_SIZE];
- int read = 0;
- while ((read = zipIn.read(bytesIn)) != -1) {
- bos.write(bytesIn, 0, read);
+ try(BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath))){
+ byte[] bytesIn = new byte[BUFFER_SIZE];
+ int read = 0;
+ while ((read = zipIn.read(bytesIn)) != -1) {
+ bos.write(bytesIn, 0, read);
+ }
}
- bos.close();
}
} \ No newline at end of file