public String extractGarArchive(String garPath) throws CarbonException { garPath = AppDeployerUtils.formatPath(garPath); String fileName = garPath.substring(garPath.lastIndexOf('/') + 1); String javaTempDir = System.getProperty("axis2.work.dir"); String appUnzipDir = javaTempDir.endsWith(File.separator) ? javaTempDir + AppDeployerConstants.CARBON_APPS : javaTempDir + File.separator + AppDeployerConstants.CARBON_APPS; String destinationDir = appUnzipDir + File.separator + System.currentTimeMillis() + fileName + File.separator; AppDeployerUtils.createDir(destinationDir); try { extract(garPath, destinationDir); } catch (IOException e) { throw new CarbonException("Error while extracting cApp artifact : " + fileName, e); } return destinationDir; }
private static void extract(String sourcePath, String destPath) throws IOException { Enumeration entries; ZipFile zipFile; zipFile = new ZipFile(sourcePath); entries = zipFile.entries(); while (entries.hasMoreElements()) { ZipEntry entry = (ZipEntry) entries.nextElement(); // if the entry is a directory, create a new dir if (entry.isDirectory()) { AppDeployerUtils.createDir(destPath + entry.getName()); continue; } // if the entry is a file, write the file copyInputStream( zipFile.getInputStream(entry), new BufferedOutputStream(new FileOutputStream(destPath + entry.getName()))); } zipFile.close(); }