widget changes to upload single JS file
[portal.git] / ecomp-portal-widget-ms / widget-ms / src / main / java / org / onap / portalapp / widget / utils / UnzipUtil.java
index d699e5d..164a698 100644 (file)
@@ -46,49 +46,50 @@ 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 };
+                       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 +100,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