src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java

Print this page

        

*** 94,109 **** --- 94,111 ---- } //Driver routines // The unpack worker... + /** * Takes a packed-stream InputStream, and writes to a JarOutputStream. Internally * the entire buffer must be read, it may be more efficient to read the packed-stream * to a file and pass the File object, in the alternate method described below. * <p> * Closes its input but not its output. (The output can accumulate more elements.) + * * @param in an InputStream. * @param out a JarOutputStream. * @exception IOException if an error is encountered. */ public synchronized void unpack(InputStream in, JarOutputStream out) throws IOException {
*** 111,133 **** throw new NullPointerException("null input"); } if (out == null) { throw new NullPointerException("null output"); } ! assert(Utils.currentInstance.get() == null); ! TimeZone tz = (props.getBoolean(Utils.PACK_DEFAULT_TIMEZONE)) ! ? null ! : TimeZone.getDefault(); ! try { Utils.currentInstance.set(this); ! if (tz != null) TimeZone.setDefault(TimeZone.getTimeZone("UTC")); final int verbose = props.getInteger(Utils.DEBUG_VERBOSE); BufferedInputStream in0 = new BufferedInputStream(in); if (Utils.isJarMagic(Utils.readMagic(in0))) { ! if (verbose > 0) Utils.log.info("Copying unpacked JAR file..."); Utils.copyJarFile(new JarInputStream(in0), out); } else if (props.getBoolean(Utils.DEBUG_DISABLE_NATIVE)) { (new DoUnpack()).run(in0, out); in0.close(); Utils.markJarFile(out); --- 113,135 ---- throw new NullPointerException("null input"); } if (out == null) { throw new NullPointerException("null output"); } ! assert (Utils.currentInstance.get() == null); ! boolean needUTC = !props.getBoolean(Utils.PACK_DEFAULT_TIMEZONE); try { Utils.currentInstance.set(this); ! if (needUTC) { ! Utils.changeDefaultTimeZoneToUtc(); ! } final int verbose = props.getInteger(Utils.DEBUG_VERBOSE); BufferedInputStream in0 = new BufferedInputStream(in); if (Utils.isJarMagic(Utils.readMagic(in0))) { ! if (verbose > 0) { Utils.log.info("Copying unpacked JAR file..."); + } Utils.copyJarFile(new JarInputStream(in0), out); } else if (props.getBoolean(Utils.DEBUG_DISABLE_NATIVE)) { (new DoUnpack()).run(in0, out); in0.close(); Utils.markJarFile(out);
*** 142,159 **** Utils.markJarFile(out); } } finally { _nunp = null; Utils.currentInstance.set(null); ! if (tz != null) TimeZone.setDefault(tz); } } /** * Takes an input File containing the pack file, and generates a JarOutputStream. * <p> * Does not close its output. (The output can accumulate more elements.) * @param in a File. * @param out a JarOutputStream. * @exception IOException if an error is encountered. */ public synchronized void unpack(File in, JarOutputStream out) throws IOException { --- 144,164 ---- Utils.markJarFile(out); } } finally { _nunp = null; Utils.currentInstance.set(null); ! if (needUTC) { ! Utils.restoreDefaultTimeZone(); ! } } } /** * Takes an input File containing the pack file, and generates a JarOutputStream. * <p> * Does not close its output. (The output can accumulate more elements.) + * * @param in a File. * @param out a JarOutputStream. * @exception IOException if an error is encountered. */ public synchronized void unpack(File in, JarOutputStream out) throws IOException {