Mercurial > hg > release > icedtea7-forest-2.0 > jdk
changeset 4515:32e5be69954d
7060849: Eliminate pack200 build warnings
Reviewed-by: ksrini, jjg
Contributed-by: alexandre.boulgakov@oracle.com
line wrap: on
line diff
--- a/make/com/sun/java/pack/Makefile Thu Jun 30 17:59:13 2011 -0700 +++ b/make/com/sun/java/pack/Makefile Fri Jul 08 10:25:57 2011 -0700 @@ -32,6 +32,8 @@ LIBRARY = unpack PRODUCT = sun PGRM = unpack200 +JAVAC_MAX_WARNINGS=true +JAVAC_WARNINGS_FATAL=true include $(BUILDDIR)/common/Defs.gmk CPLUSPLUSLIBRARY=true
--- a/make/common/shared/Defs-java.gmk Thu Jun 30 17:59:13 2011 -0700 +++ b/make/common/shared/Defs-java.gmk Fri Jul 08 10:25:57 2011 -0700 @@ -116,12 +116,17 @@ JAVACFLAGS += -g endif ifeq ($(JAVAC_MAX_WARNINGS), true) - JAVACFLAGS += -Xlint:all + JAVAC_LINT_OPTIONS += -Xlint:all endif ifeq ($(JAVAC_WARNINGS_FATAL), true) JAVACFLAGS += -Werror endif +# TODO: Workaround for CR 7063027. Remove -path eventually. +JAVAC_LINT_OPTIONS += -Xlint:-path + +JAVACFLAGS += $(JAVAC_LINT_OPTIONS) + # # Some licensees do not get the Security Source bundles. We will # fall back on the prebuilt jce.jar so that we can do a best @@ -211,9 +216,7 @@ # The javac options supplied to the boot javac is limited. This compiler # should only be used to build the 'make/tools' sources, which are not # class files that end up in the classes directory. -ifeq ($(JAVAC_MAX_WARNINGS), true) - BOOT_JAVACFLAGS += -Xlint:all -endif +BOOT_JAVACFLAGS += $(JAVAC_LINT_OPTIONS) ifeq ($(JAVAC_WARNINGS_FATAL), true) BOOT_JAVACFLAGS += -Werror endif
--- a/src/share/classes/com/sun/java/util/jar/pack/Attribute.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/Attribute.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -45,7 +45,7 @@ * attribute layouts. * @author John Rose */ -class Attribute implements Comparable { +class Attribute implements Comparable<Attribute> { // Attribute instance fields. Layout def; // the name and format of this attr @@ -99,8 +99,7 @@ return this == def.canon; } - public int compareTo(Object o) { - Attribute that = (Attribute) o; + public int compareTo(Attribute that) { return this.def.compareTo(that.def); } @@ -447,7 +446,7 @@ * and format. The formats are specified in a "little language". */ public static - class Layout implements Comparable { + class Layout implements Comparable<Layout> { int ctype; // attribute context type, e.g., ATTR_CONTEXT_CODE String name; // name of attribute boolean hasRefs; // this kind of attr contains CP refs? @@ -540,8 +539,7 @@ * 37 + layout.hashCode()) * 37 + ctype); } - public int compareTo(Object o) { - Layout that = (Layout) o; + public int compareTo(Layout that) { int r; r = this.name.compareTo(that.name); if (r != 0) return r; @@ -663,6 +661,8 @@ public static class FormatException extends IOException { + private static final long serialVersionUID = -2542243830788066513L; + private int ctype; private String name; String layout;
--- a/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java Fri Jul 08 10:25:57 2011 -0700 @@ -1704,7 +1704,7 @@ for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) { assert(attrIndexLimit[i] == 0); attrIndexLimit[i] = 32; // just for the sake of predefs. - attrDefs.set(i, new ArrayList<Attribute.Layout>(Collections.nCopies( + attrDefs.set(i, new ArrayList<>(Collections.nCopies( attrIndexLimit[i], (Attribute.Layout)null))); } @@ -1892,7 +1892,7 @@ return testBit(archiveOptions, mask); } - protected List getPredefinedAttrs(int ctype) { + protected List<Attribute.Layout> getPredefinedAttrs(int ctype) { assert(attrIndexLimit[ctype] != 0); List<Attribute.Layout> res = new ArrayList<>(attrIndexLimit[ctype]); // Remove nulls and non-predefs. @@ -2649,7 +2649,7 @@ // Utilities for reallocating: protected static Object[] realloc(Object[] a, int len) { - java.lang.Class elt = a.getClass().getComponentType(); + java.lang.Class<?> elt = a.getClass().getComponentType(); Object[] na = (Object[]) java.lang.reflect.Array.newInstance(elt, len); System.arraycopy(a, 0, na, 0, Math.min(a.length, len)); return na;
--- a/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -52,7 +52,7 @@ long inPos; DataInputStream in; Map<Attribute.Layout, Attribute> attrDefs; - Map attrCommands; + Map<Attribute.Layout, String> attrCommands; String unknownAttrCommand = "error";; ClassReader(Class cls, InputStream in) throws IOException { @@ -82,7 +82,7 @@ this.attrDefs = attrDefs; } - public void setAttrCommands(Map attrCommands) { + public void setAttrCommands(Map<Attribute.Layout, String> attrCommands) { this.attrCommands = attrCommands; } @@ -348,8 +348,8 @@ int length = readInt(); // See if there is a special command that applies. if (attrCommands != null) { - Object lkey = Attribute.keyForLookup(ctype, name); - String cmd = (String) attrCommands.get(lkey); + Attribute.Layout lkey = Attribute.keyForLookup(ctype, name); + String cmd = attrCommands.get(lkey); if (cmd != null) { switch (cmd) { case "pass": @@ -483,6 +483,8 @@ } static class ClassFormatException extends IOException { + private static final long serialVersionUID = -3564121733989501833L; + public ClassFormatException(String message) { super(message); }
--- a/src/share/classes/com/sun/java/util/jar/pack/ClassWriter.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/ClassWriter.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,7 +36,6 @@ import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; -import java.util.Iterator; import java.util.List; import static com.sun.java.util.jar.pack.Constants.*; /** @@ -165,14 +164,13 @@ } void writeMembers(boolean doMethods) throws IOException { - List mems; + List<? extends Class.Member> mems; if (!doMethods) mems = cls.getFields(); else mems = cls.getMethods(); writeShort(mems.size()); - for (Iterator i = mems.iterator(); i.hasNext(); ) { - Class.Member m = (Class.Member) i.next(); + for (Class.Member m : mems) { writeMember(m, doMethods); } }
--- a/src/share/classes/com/sun/java/util/jar/pack/Code.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/Code.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -125,7 +125,7 @@ return expandInstructionMap(getInsnMap()); } - void addFixups(Collection moreFixups) { + void addFixups(Collection<Fixups.Fixup> moreFixups) { if (fixups == null) { fixups = new Fixups(bytes); }
--- a/src/share/classes/com/sun/java/util/jar/pack/Coding.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/Coding.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ * varying degrees of length variability, and varying amounts of signed-ness. * @author John Rose */ -class Coding implements Comparable, CodingMethod, Histogram.BitMetric { +class Coding implements Comparable<Coding>, CodingMethod, Histogram.BitMetric { /* Coding schema for single integers, parameterized by (B,H,S): @@ -605,8 +605,7 @@ public int byteMin(int b) { return byteMin[b-1]; } public int byteMax(int b) { return byteMax[b-1]; } - public int compareTo(Object x) { - Coding that = (Coding) x; + public int compareTo(Coding that) { int dkey = this.del - that.del; if (dkey == 0) dkey = this.B - that.B;
--- a/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -72,7 +72,7 @@ return e; } /** Factory for literal constants (String, Integer, etc.). */ - public static synchronized LiteralEntry getLiteralEntry(Comparable value) { + public static synchronized LiteralEntry getLiteralEntry(Comparable<?> value) { Map<Object, LiteralEntry> literalEntries = Utils.getLiteralEntries(); LiteralEntry e = literalEntries.get(value); if (e == null) { @@ -140,7 +140,7 @@ /** Entries in the constant pool. */ public static abstract - class Entry implements Comparable { + class Entry implements Comparable<Object> { protected final byte tag; // a CONSTANT_foo code protected int valueHash; // cached hashCode @@ -257,7 +257,7 @@ super(tag); } - public abstract Comparable literalValue(); + public abstract Comparable<?> literalValue(); } public static @@ -280,15 +280,17 @@ public int compareTo(Object o) { int x = superCompareTo(o); if (x == 0) { - x = ((Comparable)value).compareTo(((NumberEntry)o).value); + @SuppressWarnings("unchecked") + Comparable<Number> compValue = (Comparable<Number>)value; + x = compValue.compareTo(((NumberEntry)o).value); } return x; } public Number numberValue() { return value; } - public Comparable literalValue() { - return (Comparable) value; + public Comparable<?> literalValue() { + return (Comparable<?>) value; } public String stringValue() { return value.toString(); @@ -319,7 +321,7 @@ } return x; } - public Comparable literalValue() { + public Comparable<?> literalValue() { return ref.stringValue(); } public String stringValue() { @@ -728,7 +730,7 @@ /** An Index is a mapping between CP entries and small integers. */ public static final - class Index extends AbstractList { + class Index extends AbstractList<Entry> { protected String debugName; protected Entry[] cpMap; protected boolean flattenSigs; @@ -758,7 +760,7 @@ public int size() { return cpMap.length; } - public Object get(int i) { + public Entry get(int i) { return cpMap[i]; } public Entry getEntry(int i) { @@ -803,13 +805,7 @@ assert(index >= 0); return index; } - public boolean contains(Object e) { - return findIndexOf((Entry)e) >= 0; - } - public int indexOf(Object e) { - return findIndexOf((Entry)e); - } - public int lastIndexOf(Object e) { + public int lastIndexOf(Entry e) { return indexOf(e); } @@ -862,14 +858,14 @@ indexValue[probe] = i; } } - public Object[] toArray(Object[] a) { + public Entry[] toArray(Entry[] a) { int sz = size(); if (a.length < sz) return super.toArray(a); System.arraycopy(cpMap, 0, a, 0, sz); if (a.length > sz) a[sz] = null; return a; } - public Object[] toArray() { + public Entry[] toArray() { return toArray(new Entry[size()]); } public Object clone() {
--- a/src/share/classes/com/sun/java/util/jar/pack/Constants.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/Constants.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -153,11 +153,11 @@ public static final int NO_MODTIME = 0; // null modtime value // some comstantly empty containers - public final static int[] noInts = {}; - public final static byte[] noBytes = {}; - public final static Object[] noValues = {}; - public final static String[] noStrings = {}; - public final static List emptyList = Arrays.asList(noValues); + public final static int[] noInts = {}; + public final static byte[] noBytes = {}; + public final static Object[] noValues = {}; + public final static String[] noStrings = {}; + public final static List<Object> emptyList = Arrays.asList(noValues); // meta-coding public final static int
--- a/src/share/classes/com/sun/java/util/jar/pack/Fixups.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/Fixups.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,7 +42,7 @@ * * @author John Rose */ -final class Fixups extends AbstractCollection { +final class Fixups extends AbstractCollection<Fixups.Fixup> { byte[] bytes; // the subject of the relocations int head; // desc locating first reloc int tail; // desc locating last reloc @@ -66,11 +66,11 @@ // If there are no bytes, all descs are kept in bigDescs. this((byte[])null); } - Fixups(byte[] bytes, Collection fixups) { + Fixups(byte[] bytes, Collection<Fixup> fixups) { this(bytes); addAll(fixups); } - Fixups(Collection fixups) { + Fixups(Collection<Fixup> fixups) { this((byte[])null); addAll(fixups); } @@ -108,8 +108,7 @@ public void clear() { if (bytes != null) { // Clean the bytes: - for (Iterator i = iterator(); i.hasNext(); ) { - Fixup fx = (Fixup) i.next(); + for (Fixup fx : this) { //System.out.println("clean "+fx); storeIndex(fx.location(), fx.format(), 0); } @@ -124,15 +123,14 @@ return bytes; } - @SuppressWarnings("unchecked") public void setBytes(byte[] newBytes) { if (bytes == newBytes) return; - ArrayList old = null; - assert((old = new ArrayList(this)) != null); + ArrayList<Fixup> old = null; + assert((old = new ArrayList<>(this)) != null); if (bytes == null || newBytes == null) { // One or the other representations is deficient. // Construct a checkpoint. - ArrayList save = new ArrayList(this); + ArrayList<Fixup> save = new ArrayList<>(this); clear(); bytes = newBytes; addAll(save); @@ -140,7 +138,7 @@ // assume newBytes is some sort of bitwise copy of the old bytes bytes = newBytes; } - assert(old.equals(new ArrayList(this))); + assert(old.equals(new ArrayList<>(this))); } static final int LOC_SHIFT = 1; @@ -236,7 +234,7 @@ /** Simple and necessary tuple to present each fixup. */ public static - class Fixup implements Comparable { + class Fixup implements Comparable<Fixup> { int desc; // location and format of reloc Entry entry; // which entry to plug into the bytes Fixup(int desc, Entry entry) { @@ -254,9 +252,6 @@ // Ordering depends only on location. return this.location() - that.location(); } - public int compareTo(Object that) { - return compareTo((Fixup)that); - } public boolean equals(Object x) { if (!(x instanceof Fixup)) return false; Fixup that = (Fixup) x; @@ -268,13 +263,13 @@ } private - class Itr implements Iterator { + class Itr implements Iterator<Fixup> { int index = 0; // index into entries int bigIndex = BIGSIZE+1; // index into bigDescs int next = head; // desc pointing to next fixup public boolean hasNext() { return index < size; } public void remove() { throw new UnsupportedOperationException(); } - public Object next() { + public Fixup next() { int thisIndex = index; return new Fixup(nextDesc(), entries[thisIndex]); } @@ -298,7 +293,7 @@ } } - public Iterator iterator() { + public Iterator<Fixup> iterator() { return new Itr(); } public void add(int location, int format, Entry entry) { @@ -308,11 +303,8 @@ addDesc(f.desc, f.entry); return true; } - public boolean add(Object fixup) { - return add((Fixup) fixup); - } - @SuppressWarnings("unchecked") - public boolean addAll(Collection c) { + + public boolean addAll(Collection<? extends Fixup> c) { if (c instanceof Fixups) { // Use knowledge of Itr structure to avoid building little structs. Fixups that = (Fixups) c; @@ -453,8 +445,7 @@ void finishRefs(ConstantPool.Index ix) { if (isEmpty()) return; - for (Iterator i = iterator(); i.hasNext(); ) { - Fixup fx = (Fixup) i.next(); + for (Fixup fx : this) { int index = ix.indexOf(fx.entry); //System.out.println("finish "+fx+" = "+index); // Note that the iterator has already fetched the
--- a/src/share/classes/com/sun/java/util/jar/pack/Instruction.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/Instruction.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -657,6 +657,8 @@ } } static class FormatException extends IOException { + private static final long serialVersionUID = 3175572275651367015L; + FormatException(String message) { super(message); }
--- a/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java Fri Jul 08 10:25:57 2011 -0700 @@ -292,7 +292,7 @@ } ZipEntry z = new ZipEntry(name); - z.setTime( (long)mtime * 1000); + z.setTime(mtime * 1000); if (size == 0) { z.setMethod(ZipOutputStream.STORED);
--- a/src/share/classes/com/sun/java/util/jar/pack/Package.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/Package.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -188,7 +188,7 @@ } public final - class Class extends Attribute.Holder implements Comparable { + class Class extends Attribute.Holder implements Comparable<Class> { public Package getPackage() { return Package.this; } // Optional file characteristics and data source (a "class stub") @@ -247,8 +247,7 @@ } // Note: equals and hashCode are identity-based. - public int compareTo(Object o) { - Class that = (Class)o; + public int compareTo(Class that) { String n0 = this.getName(); String n1 = that.getName(); return n0.compareTo(n1); @@ -488,7 +487,7 @@ } public abstract - class Member extends Attribute.Holder implements Comparable { + class Member extends Attribute.Holder implements Comparable<Member> { DescriptorEntry descriptor; protected Member(int flags, DescriptorEntry descriptor) { @@ -549,7 +548,7 @@ return descriptor.getLiteralTag(); } - public int compareTo(Object o) { + public int compareTo(Member o) { Field that = (Field)o; return this.order - that.order; } @@ -582,7 +581,7 @@ } // Sort methods in a canonical order (by type, then by name). - public int compareTo(Object o) { + public int compareTo(Member o) { Method that = (Method)o; return this.getDescriptor().compareTo(that.getDescriptor()); } @@ -608,11 +607,10 @@ public void trimToSize() { super.trimToSize(); for (int isM = 0; isM <= 1; isM++) { - ArrayList members = (isM == 0) ? fields : methods; + ArrayList<? extends Member> members = (isM == 0) ? fields : methods; if (members == null) continue; members.trimToSize(); - for (Iterator i = members.iterator(); i.hasNext(); ) { - Member m = (Member)i.next(); + for (Member m : members) { m.trimToSize(); } } @@ -625,10 +623,9 @@ if ("InnerClass".equals(attrName)) innerClasses = null; for (int isM = 0; isM <= 1; isM++) { - ArrayList members = (isM == 0) ? fields : methods; + ArrayList<? extends Member> members = (isM == 0) ? fields : methods; if (members == null) continue; - for (Iterator i = members.iterator(); i.hasNext(); ) { - Member m = (Member)i.next(); + for (Member m : members) { m.strip(attrName); } } @@ -641,10 +638,9 @@ refs.add(superClass); refs.addAll(Arrays.asList(interfaces)); for (int isM = 0; isM <= 1; isM++) { - ArrayList members = (isM == 0) ? fields : methods; + ArrayList<? extends Member> members = (isM == 0) ? fields : methods; if (members == null) continue; - for (Iterator i = members.iterator(); i.hasNext(); ) { - Member m = (Member)i.next(); + for (Member m : members) { boolean ok = false; try { m.visitRefs(mode, refs); @@ -747,13 +743,13 @@ return classStubs; } - public final class File implements Comparable { + public final class File implements Comparable<File> { String nameString; // true name of this file Utf8Entry name; int modtime = NO_MODTIME; int options = 0; // random flag bits, such as deflate_hint Class stubClass; // if this is a stub, here's the class - ArrayList prepend = new ArrayList(); // list of byte[] + ArrayList<byte[]> prepend = new ArrayList<>(); // list of byte[] java.io.ByteArrayOutputStream append = new ByteArrayOutputStream(); File(Utf8Entry name) { @@ -798,8 +794,7 @@ return nameString.hashCode(); } // Simple alphabetic sort. PackageWriter uses a better comparator. - public int compareTo(Object o) { - File that = (File)o; + public int compareTo(File that) { return this.nameString.compareTo(that.nameString); } public String toString() { @@ -834,8 +829,7 @@ public long getFileLength() { long len = 0; if (prepend == null || append == null) return 0; - for (Iterator i = prepend.iterator(); i.hasNext(); ) { - byte[] block = (byte[]) i.next(); + for (byte[] block : prepend) { len += block.length; } len += append.size(); @@ -843,8 +837,7 @@ } public void writeTo(OutputStream out) throws IOException { if (prepend == null || append == null) return; - for (Iterator i = prepend.iterator(); i.hasNext(); ) { - byte[] block = (byte[]) i.next(); + for (byte[] block : prepend) { out.write(block); } append.writeTo(out); @@ -860,8 +853,7 @@ InputStream in = new ByteArrayInputStream(append.toByteArray()); if (prepend.isEmpty()) return in; List<InputStream> isa = new ArrayList<>(prepend.size()+1); - for (Iterator i = prepend.iterator(); i.hasNext(); ) { - byte[] bytes = (byte[]) i.next(); + for (byte[] bytes : prepend) { isa.add(new ByteArrayInputStream(bytes)); } isa.add(in); @@ -926,7 +918,7 @@ } static - class InnerClass implements Comparable { + class InnerClass implements Comparable<InnerClass> { final ClassEntry thisClass; final ClassEntry outerClass; final Utf8Entry name; @@ -977,8 +969,7 @@ public int hashCode() { return thisClass.hashCode(); } - public int compareTo(Object o) { - InnerClass that = (InnerClass)o; + public int compareTo(InnerClass that) { return this.thisClass.compareTo(that.thisClass); } @@ -1108,7 +1099,7 @@ return ConstantPool.getUtf8Entry(s); } - static LiteralEntry getRefLiteral(Comparable s) { + static LiteralEntry getRefLiteral(Comparable<?> s) { return ConstantPool.getLiteralEntry(s); } @@ -1199,7 +1190,6 @@ // compress better. It also moves classes to the end of the // file order. It also removes JAR directory entries, which // are useless. - @SuppressWarnings("unchecked") void reorderFiles(boolean keepClassOrder, boolean stripDirectories) { // First reorder the classes, if that is allowed. if (!keepClassOrder) { @@ -1226,10 +1216,8 @@ // This keeps files of similar format near each other. // Put class files at the end, keeping their fixed order. // Be sure the JAR file's required manifest stays at the front. (4893051) - Collections.sort(files, new Comparator() { - public int compare(Object o0, Object o1) { - File r0 = (File) o0; - File r1 = (File) o1; + Collections.sort(files, new Comparator<File>() { + public int compare(File r0, File r1) { // Get the file name. String f0 = r0.nameString; String f1 = r1.nameString;
--- a/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java Fri Jul 08 10:25:57 2011 -0700 @@ -750,7 +750,7 @@ file_options.readFrom(in); file_bits.setInputStreamFrom(in); - Iterator nextClass = pkg.getClasses().iterator(); + Iterator<Class> nextClass = pkg.getClasses().iterator(); // Compute file lengths before reading any file bits. long totalFileLength = 0; @@ -790,14 +790,14 @@ pkg.addFile(file); if (file.isClassStub()) { assert(file.getFileLength() == 0); - Class cls = (Class) nextClass.next(); + Class cls = nextClass.next(); cls.initFile(file); } } // Do the rest of the classes. while (nextClass.hasNext()) { - Class cls = (Class) nextClass.next(); + Class cls = nextClass.next(); cls.initFile(null); // implicitly initialize to a trivial one cls.file.modtime = pkg.default_modtime; } @@ -1006,14 +1006,14 @@ if (k >= 0) return k; if (e.tag == CONSTANT_Utf8) { - Entry se = (Entry) utf8Signatures.get(e); + Entry se = utf8Signatures.get(e); return pkg.cp.untypedIndexOf(se); } return -1; } Comparator<Entry> entryOutputOrder = new Comparator<Entry>() { - public int compare(Entry e0, Entry e1) { + public int compare(Entry e0, Entry e1) { int k0 = getOutputIndex(e0); int k1 = getOutputIndex(e1); if (k0 >= 0 && k1 >= 0) @@ -1332,7 +1332,8 @@ // classes, fields, methods, and codes. // The holders is a global list, already collected, // of attribute "customers". - void countAndReadAttrs(int ctype, Collection holders) throws IOException { + void countAndReadAttrs(int ctype, Collection<? extends Attribute.Holder> holders) + throws IOException { // class_attr_bands: // *class_flags :UNSIGNED5 // *class_attr_count :UNSIGNED5 @@ -1386,7 +1387,8 @@ // Read flags and count the attributes that are to be placed // on the given holders. - void countAttrs(int ctype, Collection holders) throws IOException { + void countAttrs(int ctype, Collection<? extends Attribute.Holder> holders) + throws IOException { // Here, xxx stands for one of class, field, method, code. MultiBand xxx_attr_bands = attrBands[ctype]; long flagMask = attrFlagMask[ctype]; @@ -1414,8 +1416,7 @@ xxx_flags_lo.expectLength(holders.size()); xxx_flags_lo.readFrom(in); assert((flagMask & overflowMask) == overflowMask); - for (Iterator i = holders.iterator(); i.hasNext(); ) { - Attribute.Holder h = (Attribute.Holder) i.next(); + for (Attribute.Holder h : holders) { int flags = xxx_flags_lo.getInt(); h.flags = flags; if ((flags & overflowMask) != 0) @@ -1433,8 +1434,7 @@ // (class/field/method/code), and also we accumulate (b) a total // count for each attribute type. int[] totalCounts = new int[defs.length]; - for (Iterator i = holders.iterator(); i.hasNext(); ) { - Attribute.Holder h = (Attribute.Holder) i.next(); + for (Attribute.Holder h : holders) { assert(h.attributes == null); // System.out.println("flags="+h.flags+" using fm="+flagMask); long attrBits = ((h.flags & flagMask) << 32) >>> 32; @@ -1582,13 +1582,12 @@ ATTR_CONTEXT_NAME[ctype]+" attribute"); } - @SuppressWarnings("unchecked") - void readAttrs(int ctype, Collection holders) throws IOException { + void readAttrs(int ctype, Collection<? extends Attribute.Holder> holders) + throws IOException { // Decode band values into attributes. Set<Attribute.Layout> sawDefs = new HashSet<>(); ByteArrayOutputStream buf = new ByteArrayOutputStream(); - for (Iterator i = holders.iterator(); i.hasNext(); ) { - final Attribute.Holder h = (Attribute.Holder) i.next(); + for (final Attribute.Holder h : holders) { if (h.attributes == null) continue; for (ListIterator<Attribute> j = h.attributes.listIterator(); j.hasNext(); ) { Attribute a = j.next();
--- a/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java Fri Jul 08 10:25:57 2011 -0700 @@ -720,7 +720,6 @@ Utils.log.info("Wrote "+numFiles+" resource files"); } - @SuppressWarnings("unchecked") void collectAttributeLayouts() { maxFlags = new int[ATTR_CONTEXT_LIMIT]; allLayouts = new FixedList<>(ATTR_CONTEXT_LIMIT); @@ -781,26 +780,27 @@ avHiBits &= (1L<<attrIndexLimit[i])-1; int nextLoBit = 0; Map<Attribute.Layout, int[]> defMap = allLayouts.get(i); - Map.Entry[] layoutsAndCounts = new Map.Entry[defMap.size()]; + @SuppressWarnings("unchecked") + Map.Entry<Attribute.Layout, int[]>[] layoutsAndCounts = + new Map.Entry<>[defMap.size()]; defMap.entrySet().toArray(layoutsAndCounts); // Sort by count, most frequent first. // Predefs. participate in this sort, though it does not matter. - Arrays.sort(layoutsAndCounts, new Comparator<Object>() { - public int compare(Object o0, Object o1) { - Map.Entry e0 = (Map.Entry) o0; - Map.Entry e1 = (Map.Entry) o1; + Arrays.sort(layoutsAndCounts, + new Comparator<Map.Entry<Attribute.Layout, int[]>>() { + public int compare(Map.Entry<Attribute.Layout, int[]> e0, + Map.Entry<Attribute.Layout, int[]> e1) { // Primary sort key is count, reversed. - int r = - ( ((int[])e0.getValue())[0] - - ((int[])e1.getValue())[0] ); + int r = -(e0.getValue()[0] - e1.getValue()[0]); if (r != 0) return r; - return ((Comparable)e0.getKey()).compareTo(e1.getKey()); + return e0.getKey().compareTo(e1.getKey()); } }); attrCounts[i] = new int[attrIndexLimit[i]+layoutsAndCounts.length]; for (int j = 0; j < layoutsAndCounts.length; j++) { - Map.Entry e = layoutsAndCounts[j]; - Attribute.Layout def = (Attribute.Layout) e.getKey(); - int count = ((int[])e.getValue())[0]; + Map.Entry<Attribute.Layout, int[]> e = layoutsAndCounts[j]; + Attribute.Layout def = e.getKey(); + int count = e.getValue()[0]; int index; Integer predefIndex = attrIndexTable.get(def); if (predefIndex != null) { @@ -881,7 +881,6 @@ Attribute.Layout[] attrDefsWritten; - @SuppressWarnings("unchecked") void writeAttrDefs() throws IOException { List<Object[]> defList = new ArrayList<>(); for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) { @@ -906,20 +905,19 @@ int numAttrDefs = defList.size(); Object[][] defs = new Object[numAttrDefs][]; defList.toArray(defs); - Arrays.sort(defs, new Comparator() { - public int compare(Object o0, Object o1) { - Object[] a0 = (Object[]) o0; - Object[] a1 = (Object[]) o1; + Arrays.sort(defs, new Comparator<Object[]>() { + public int compare(Object[] a0, Object[] a1) { // Primary sort key is attr def header. + @SuppressWarnings("unchecked") int r = ((Comparable)a0[0]).compareTo(a1[0]); if (r != 0) return r; - Object ind0 = attrIndexTable.get(a0[1]); - Object ind1 = attrIndexTable.get(a1[1]); + Integer ind0 = attrIndexTable.get(a0[1]); + Integer ind1 = attrIndexTable.get(a1[1]); // Secondary sort key is attribute index. // (This must be so, in order to keep overflow attr order.) assert(ind0 != null); assert(ind1 != null); - return ((Comparable)ind0).compareTo(ind1); + return ind0.compareTo(ind1); } }); attrDefsWritten = new Attribute.Layout[numAttrDefs];
--- a/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -69,8 +69,7 @@ * Get the set of options for the pack and unpack engines. * @return A sorted association of option key strings to option values. */ - @SuppressWarnings("unchecked") - public SortedMap properties() { + public SortedMap<String, String> properties() { return props; } @@ -157,7 +156,6 @@ // All the worker bees..... // The packer worker. - @SuppressWarnings("unchecked") private class DoPack { final int verbose = props.getInteger(Utils.DEBUG_VERBOSE); @@ -199,9 +197,8 @@ }; for (int i = 0; i < ctypes.length; i++) { String pfx = keys[i]; - Map<Object, Object> map = props.prefixMap(pfx); - for (Object k : map.keySet()) { - String key = (String)k; + Map<String, String> map = props.prefixMap(pfx); + for (String key : map.keySet()) { assert(key.startsWith(pfx)); String name = key.substring(pfx.length()); String layout = props.getProperty(key);
--- a/src/share/classes/com/sun/java/util/jar/pack/PropMap.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/PropMap.java Fri Jul 08 10:25:57 2011 -0700 @@ -27,7 +27,6 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; -import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; @@ -47,8 +46,8 @@ * Control block for publishing Pack200 options to the other classes. */ -final class PropMap implements SortedMap<Object, Object> { - private final TreeMap<Object, Object> theMap = new TreeMap<>();; +final class PropMap implements SortedMap<String, String> { + private final TreeMap<String, String> theMap = new TreeMap<>();; private final List<PropertyChangeListener> listenerList = new ArrayList<>(1); void addListener(PropertyChangeListener listener) { @@ -68,12 +67,12 @@ } // Override: - public Object put(Object key, Object value) { - Object oldValue = theMap.put(key, value); + public String put(String key, String value) { + String oldValue = theMap.put(key, value); if (value != oldValue && !listenerList.isEmpty()) { // Post the property change event. PropertyChangeEvent event = - new PropertyChangeEvent(this, (String) key, + new PropertyChangeEvent(this, key, oldValue, value); for (PropertyChangeListener listener : listenerList) { listener.propertyChange(event); @@ -85,7 +84,7 @@ // All this other stuff is private to the current package. // Outide clients of Pack200 do not need to use it; they can // get by with generic SortedMap functionality. - private static Map<Object, Object> defaultProps; + private static Map<String, String> defaultProps; static { Properties props = new Properties(); @@ -141,7 +140,9 @@ } } - defaultProps = (new HashMap<>(props)); // shrink to fit + @SuppressWarnings({"unchecked", "rawtypes"}) + HashMap<String, String> temp = new HashMap(props); // shrink to fit + defaultProps = temp; } PropMap() { @@ -151,7 +152,7 @@ // Return a view of this map which includes only properties // that begin with the given prefix. This is easy because // the map is sorted, and has a subMap accessor. - SortedMap<Object, Object> prefixMap(String prefix) { + SortedMap<String, String> prefixMap(String prefix) { int len = prefix.length(); if (len == 0) return this; @@ -162,7 +163,7 @@ } String getProperty(String s) { - return (String) get(s); + return get(s); } String getProperty(String s, String defaultVal) { String val = getProperty(s); @@ -171,13 +172,13 @@ return val; } String setProperty(String s, String val) { - return (String) put(s, val); + return put(s, val); } // Get sequence of props for "prefix", and "prefix.*". - List getProperties(String prefix) { - Collection<Object> values = prefixMap(prefix).values(); - List<Object> res = new ArrayList<>(values.size()); + List<String> getProperties(String prefix) { + Collection<String> values = prefixMap(prefix).values(); + List<String> res = new ArrayList<>(values.size()); res.addAll(values); while (res.remove(null)); return res; @@ -241,8 +242,8 @@ } void list(PrintWriter out) { out.println("#"+Utils.PACK_ZIP_ARCHIVE_MARKER_COMMENT+"["); - Set defaults = defaultProps.entrySet(); - for (Map.Entry e : theMap.entrySet()) { + Set<Map.Entry<String, String>> defaults = defaultProps.entrySet(); + for (Map.Entry<String, String> e : theMap.entrySet()) { if (defaults.contains(e)) continue; out.println(" " + e.getKey() + " = " + e.getValue()); } @@ -270,18 +271,17 @@ } @Override - public Object get(Object key) { + public String get(Object key) { return theMap.get(key); } @Override - public Object remove(Object key) { + public String remove(Object key) { return theMap.remove(key); } @Override - @SuppressWarnings("unchecked") - public void putAll(Map m) { + public void putAll(Map<? extends String, ? extends String> m) { theMap.putAll(m); } @@ -291,48 +291,47 @@ } @Override - public Set<Object> keySet() { + public Set<String> keySet() { return theMap.keySet(); } @Override - public Collection<Object> values() { + public Collection<String> values() { return theMap.values(); } @Override - public Set<Map.Entry<Object, Object>> entrySet() { + public Set<Map.Entry<String, String>> entrySet() { return theMap.entrySet(); } @Override - @SuppressWarnings("unchecked") - public Comparator<Object> comparator() { - return (Comparator<Object>) theMap.comparator(); + public Comparator<? super String> comparator() { + return theMap.comparator(); } @Override - public SortedMap<Object, Object> subMap(Object fromKey, Object toKey) { + public SortedMap<String, String> subMap(String fromKey, String toKey) { return theMap.subMap(fromKey, toKey); } @Override - public SortedMap<Object, Object> headMap(Object toKey) { + public SortedMap<String, String> headMap(String toKey) { return theMap.headMap(toKey); } @Override - public SortedMap<Object, Object> tailMap(Object fromKey) { + public SortedMap<String, String> tailMap(String fromKey) { return theMap.tailMap(fromKey); } @Override - public Object firstKey() { + public String firstKey() { return theMap.firstKey(); } @Override - public Object lastKey() { + public String lastKey() { return theMap.lastKey(); } }
--- a/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java Fri Jul 08 10:25:57 2011 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -67,7 +67,7 @@ props = new PropMap(); } - SortedMap<Object, Object> getPropMap() { + SortedMap<String, String> getPropMap() { return props; }
--- a/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java Fri Jul 08 10:25:57 2011 -0700 @@ -81,8 +81,7 @@ * Get the set of options for the pack and unpack engines. * @return A sorted association of option key strings to option values. */ - @SuppressWarnings("unchecked") - public SortedMap properties() { + public SortedMap<String, String> properties() { return props; }
--- a/src/share/classes/com/sun/java/util/jar/pack/Utils.java Thu Jun 30 17:59:13 2011 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/Utils.java Fri Jul 08 10:25:57 2011 -0700 @@ -253,8 +253,8 @@ } static void copyJarFile(JarFile in, JarOutputStream out) throws IOException { byte[] buffer = new byte[1 << 14]; - for (Enumeration e = in.entries(); e.hasMoreElements(); ) { - JarEntry je = (JarEntry) e.nextElement(); + for (Enumeration<JarEntry> e = in.entries(); e.hasMoreElements(); ) { + JarEntry je = e.nextElement(); out.putNextEntry(je); InputStream ein = in.getInputStream(je); for (int nr; 0 < (nr = ein.read(buffer)); ) {