2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
8 * Unless otherwise specified, all software contained herein is licensed
9 * under the Apache License, Version 2.0 (the "License");
10 * you may not use this software except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * Unless otherwise specified, all documentation contained herein is licensed
22 * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23 * you may not use this documentation except in compliance with the License.
24 * You may obtain a copy of the License at
26 * https://creativecommons.org/licenses/by/4.0/
28 * Unless required by applicable law or agreed to in writing, documentation
29 * distributed under the License is distributed on an "AS IS" BASIS,
30 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 * See the License for the specific language governing permissions and
32 * limitations under the License.
34 * ============LICENSE_END============================================
36 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
41 import java.io.FileOutputStream;
42 import java.io.IOException;
43 import java.io.InputStream;
44 import java.io.OutputStream;
45 import java.io.Reader;
46 import java.io.Writer;
48 import java.util.jar.JarEntry;
49 import java.util.jar.JarInputStream;
50 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
53 public class ExtractJar {
55 public static final int bufferSize = 8192;
56 public static final String jarFile = "raptor_upgrade.jar";
57 private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ExtractJar.class);
59 public static void main(String[] args) throws Exception {
60 if (args.length > 0 && args[0] != null && args[0].length() > 0)
61 extractFilesFromJar(args[0]);
63 logger.info("Current Directory is taken as webapp path");
64 String currentDir = new File(".").getAbsolutePath();
65 extractFilesFromJar(currentDir);
69 public static void extractFilesFromJar(String directory) throws IOException {
71 Class clazz = ExtractJar.class;
72 String classContainer = clazz.getProtectionDomain().getCodeSource().getLocation().toString();
73 URL jarUrl = clazz.getProtectionDomain().getCodeSource().getLocation();
75 JarInputStream entryStream = new JarInputStream(jarUrl.openStream());
78 entry = entryStream.getNextJarEntry();
81 if (entry.getName().indexOf("jarutil") < 0) {
82 logger.info(entry.getName());
83 File file = new File(directory, entry.getName());
84 if (entry.isDirectory()) {
88 // make directory (some jars don't list dirs)
89 File dir = new File(file.getParent());
95 FileOutputStream fout = new FileOutputStream(file);
96 copy(entryStream, fout);
100 if (entry.getTime() >= 0)
101 file.setLastModified(entry.getTime());
105 entryStream.closeEntry();
108 System.out.println("************************************************");
109 System.out.println("* *");
110 System.out.println("* *");
111 System.out.println("* RAPTOR SETUP COMPLETE. *");
112 System.out.println("* *");
113 System.out.println("* Thank you for upgrading. *");
114 System.out.println("* *");
115 System.out.println("************************************************");
118 public static void copy(InputStream in, OutputStream out, long byteCount) throws IOException {
119 byte[] buffer = new byte[bufferSize];
120 int len = bufferSize;
121 if (byteCount >= 0) {
122 while (byteCount > 0) {
123 if (byteCount < bufferSize)
124 len = in.read(buffer, 0, (int) byteCount);
126 len = in.read(buffer, 0, bufferSize);
131 out.write(buffer, 0, len);
135 len = in.read(buffer, 0, bufferSize);
138 out.write(buffer, 0, len);
143 /* ------------------------------------------------------------------- */
145 * Copy Reader to Writer for byteCount bytes or until EOF or exception.
147 public static void copy(Reader in, Writer out, long byteCount) throws IOException {
148 char[] buffer = new char[bufferSize];
149 int len = bufferSize;
150 if (byteCount >= 0) {
151 while (byteCount > 0) {
152 if (byteCount < bufferSize)
153 len = in.read(buffer, 0, (int) byteCount);
155 len = in.read(buffer, 0, bufferSize);
160 out.write(buffer, 0, len);
164 len = in.read(buffer, 0, bufferSize);
167 out.write(buffer, 0, len);
172 /* ------------------------------------------------------------------- */
174 * Copy Stream in to Stream out until EOF or exception.
176 public static void copy(InputStream in, OutputStream out) throws IOException {
180 // Deletes all files and subdirectories under dir.
181 // Returns true if all deletions were successful.
182 // If a deletion fails, the method stops attempting to delete and returns false.
183 public static boolean deleteDir(File dir) {
184 if (dir.isDirectory()) {
185 String[] children = dir.list();
186 for (int i = 0; i < children.length; i++) {
187 boolean success = deleteDir(new File(dir, children[i]));
194 // The directory is now empty so delete it