< prev index next >

src/java.base/share/classes/java/util/zip/Deflater.java

Print this page

        

*** 185,195 **** */ public Deflater(int level, boolean nowrap) { this.level = level; this.strategy = DEFAULT_STRATEGY; this.zsRef = DeflaterZStreamRef.get(this, ! init(level, DEFAULT_STRATEGY, nowrap)); } /** * Creates a new compressor using the specified compression level. * Compressed data will be generated in ZLIB format. --- 185,195 ---- */ public Deflater(int level, boolean nowrap) { this.level = level; this.strategy = DEFAULT_STRATEGY; this.zsRef = DeflaterZStreamRef.get(this, ! level, DEFAULT_STRATEGY, nowrap); } /** * Creates a new compressor using the specified compression level. * Compressed data will be generated in ZLIB format.
*** 602,614 **** static class DeflaterZStreamRef implements Runnable { private long address; private final Cleanable cleanable; ! private DeflaterZStreamRef(Deflater owner, long addr) { this.cleanable = (owner != null) ? CleanerFactory.cleaner().register(owner, this) : null; ! this.address = addr; } long address() { return address; } --- 602,614 ---- static class DeflaterZStreamRef implements Runnable { private long address; private final Cleanable cleanable; ! private DeflaterZStreamRef(Deflater owner, int level, int strategy, boolean nowrap) { this.cleanable = (owner != null) ? CleanerFactory.cleaner().register(owner, this) : null; ! this.address = init(level, strategy, nowrap); } long address() { return address; }
*** 630,656 **** * overridden, uses {@code finalizer} mechanism for resource cleanup. So * {@code end} method can be called when the {@code Deflater} is unreachable. * This mechanism will be removed when the {@code finalize} method is * removed from {@code Deflater}. */ ! static DeflaterZStreamRef get(Deflater owner, long addr) { Class<?> clz = owner.getClass(); while (clz != Deflater.class) { try { clz.getDeclaredMethod("end"); ! return new FinalizableZStreamRef(owner, addr); } catch (NoSuchMethodException nsme) {} clz = clz.getSuperclass(); } ! return new DeflaterZStreamRef(owner, addr); } private static class FinalizableZStreamRef extends DeflaterZStreamRef { final Deflater owner; ! FinalizableZStreamRef (Deflater owner, long addr) { ! super(null, addr); this.owner = owner; } @Override void clean() { --- 630,656 ---- * overridden, uses {@code finalizer} mechanism for resource cleanup. So * {@code end} method can be called when the {@code Deflater} is unreachable. * This mechanism will be removed when the {@code finalize} method is * removed from {@code Deflater}. */ ! static DeflaterZStreamRef get(Deflater owner, int level, int strategy, boolean nowrap) { Class<?> clz = owner.getClass(); while (clz != Deflater.class) { try { clz.getDeclaredMethod("end"); ! return new FinalizableZStreamRef(owner, level, strategy, nowrap); } catch (NoSuchMethodException nsme) {} clz = clz.getSuperclass(); } ! return new DeflaterZStreamRef(owner, level, strategy, nowrap); } private static class FinalizableZStreamRef extends DeflaterZStreamRef { final Deflater owner; ! FinalizableZStreamRef (Deflater owner, int level, int strategy, boolean nowrap) { ! super(null, level, strategy, nowrap); this.owner = owner; } @Override void clean() {
< prev index next >