提交 601240ad 编写于 作者: K ksrini

7060849: Eliminate pack200 build warnings

Reviewed-by: ksrini, jjg
Contributed-by: alexandre.boulgakov@oracle.com
上级 87309953
......@@ -32,6 +32,8 @@ PACKAGE = com.sun.java.util.jar.pack
LIBRARY = unpack
PRODUCT = sun
PGRM = unpack200
JAVAC_MAX_WARNINGS=true
JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
CPLUSPLUSLIBRARY=true
......
......@@ -116,12 +116,17 @@ ifeq ($(DEBUG_CLASSFILES),true)
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 @@ endif
# 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
......
/*
* 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 @@ import static com.sun.java.util.jar.pack.Constants.*;
* 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 @@ class Attribute implements Comparable {
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 @@ class Attribute implements Comparable {
* 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 @@ class Attribute implements Comparable {
* 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 @@ class Attribute implements Comparable {
public static
class FormatException extends IOException {
private static final long serialVersionUID = -2542243830788066513L;
private int ctype;
private String name;
String layout;
......
......@@ -1704,7 +1704,7 @@ class BandStructure {
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 @@ class BandStructure {
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 @@ class BandStructure {
// 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;
......
/*
* 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 @@ class ClassReader {
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 @@ class ClassReader {
this.attrDefs = attrDefs;
}
public void setAttrCommands(Map attrCommands) {
public void setAttrCommands(Map<Attribute.Layout, String> attrCommands) {
this.attrCommands = attrCommands;
}
......@@ -348,8 +348,8 @@ class ClassReader {
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 @@ class ClassReader {
}
static class ClassFormatException extends IOException {
private static final long serialVersionUID = -3564121733989501833L;
public ClassFormatException(String message) {
super(message);
}
......
/*
* 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.ByteArrayOutputStream;
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 @@ class ClassWriter {
}
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);
}
}
......
/*
* 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 @@ class Code extends Attribute.Holder {
return expandInstructionMap(getInsnMap());
}
void addFixups(Collection moreFixups) {
void addFixups(Collection<Fixups.Fixup> moreFixups) {
if (fixups == null) {
fixups = new Fixups(bytes);
}
......
/*
* 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 @@ import static com.sun.java.util.jar.pack.Constants.*;
* 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 @@ class Coding implements Comparable, CodingMethod, Histogram.BitMetric {
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;
......
/*
* 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 @@ class ConstantPool {
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 @@ class ConstantPool {
/** 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 @@ class ConstantPool {
super(tag);
}
public abstract Comparable literalValue();
public abstract Comparable<?> literalValue();
}
public static
......@@ -280,15 +280,17 @@ class ConstantPool {
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 @@ class ConstantPool {
}
return x;
}
public Comparable literalValue() {
public Comparable<?> literalValue() {
return ref.stringValue();
}
public String stringValue() {
......@@ -728,7 +730,7 @@ class ConstantPool {
/** 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 @@ class ConstantPool {
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 @@ class ConstantPool {
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 @@ class ConstantPool {
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() {
......
/*
* 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 @@ class Constants {
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
......
/*
* 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 @@ import java.util.Iterator;
*
* @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 @@ final class Fixups extends AbstractCollection {
// 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 @@ final class Fixups extends AbstractCollection {
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 @@ final class Fixups extends AbstractCollection {
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 @@ final class Fixups extends AbstractCollection {
// 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 @@ final class Fixups extends AbstractCollection {
/** 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 @@ final class Fixups extends AbstractCollection {
// 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 @@ final class Fixups extends AbstractCollection {
}
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 @@ final class Fixups extends AbstractCollection {
}
}
public Iterator iterator() {
public Iterator<Fixup> iterator() {
return new Itr();
}
public void add(int location, int format, Entry entry) {
......@@ -308,11 +303,8 @@ final class Fixups extends AbstractCollection {
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 @@ final class Fixups extends AbstractCollection {
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
......
/*
* 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 @@ class Instruction {
}
}
static class FormatException extends IOException {
private static final long serialVersionUID = 3175572275651367015L;
FormatException(String message) {
super(message);
}
......
......@@ -292,7 +292,7 @@ class NativeUnpack {
}
ZipEntry z = new ZipEntry(name);
z.setTime( (long)mtime * 1000);
z.setTime(mtime * 1000);
if (size == 0) {
z.setMethod(ZipOutputStream.STORED);
......
/*
* 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 @@ class Package {
}
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 @@ class Package {
}
// 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 @@ class Package {
}
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 @@ class Package {
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 @@ class Package {
}
// 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 @@ class Package {
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 @@ class Package {
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 @@ class Package {
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 @@ class Package {
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 @@ class Package {
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 @@ class Package {
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 @@ class Package {
}
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 @@ class Package {
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 @@ class Package {
}
static
class InnerClass implements Comparable {
class InnerClass implements Comparable<InnerClass> {
final ClassEntry thisClass;
final ClassEntry outerClass;
final Utf8Entry name;
......@@ -977,8 +969,7 @@ class Package {
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 @@ class Package {
return ConstantPool.getUtf8Entry(s);
}
static LiteralEntry getRefLiteral(Comparable s) {
static LiteralEntry getRefLiteral(Comparable<?> s) {
return ConstantPool.getLiteralEntry(s);
}
......@@ -1199,7 +1190,6 @@ class Package {
// 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 @@ class Package {
// 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;
......
......@@ -750,7 +750,7 @@ class PackageReader extends BandStructure {
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 @@ class PackageReader extends BandStructure {
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 @@ class PackageReader extends BandStructure {
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 @@ class PackageReader extends BandStructure {
// 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 @@ class PackageReader extends BandStructure {
// 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 @@ class PackageReader extends BandStructure {
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 PackageReader extends BandStructure {
// (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 @@ class PackageReader extends BandStructure {
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();
......
......@@ -720,7 +720,6 @@ class PackageWriter extends BandStructure {
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 @@ class PackageWriter extends BandStructure {
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 @@ class PackageWriter extends BandStructure {
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 @@ class PackageWriter extends BandStructure {
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];
......
/*
* 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 @@ public class PackerImpl extends TLGlobals implements Pack200.Packer {
* 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 @@ public class PackerImpl extends TLGlobals implements Pack200.Packer {
// All the worker bees.....
// The packer worker.
@SuppressWarnings("unchecked")
private class DoPack {
final int verbose = props.getInteger(Utils.DEBUG_VERBOSE);
......@@ -199,9 +197,8 @@ public class PackerImpl extends TLGlobals implements Pack200.Packer {
};
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);
......
......@@ -27,7 +27,6 @@ package com.sun.java.util.jar.pack;
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 @@ import java.util.jar.Pack200;
* 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 @@ final class PropMap implements SortedMap<Object, Object> {
}
// 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 @@ final class PropMap implements SortedMap<Object, Object> {
// 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 @@ final class PropMap implements SortedMap<Object, Object> {
}
}
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 @@ final class PropMap implements SortedMap<Object, Object> {
// 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 @@ final class PropMap implements SortedMap<Object, Object> {
}
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 @@ final class PropMap implements SortedMap<Object, Object> {
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 @@ final class PropMap implements SortedMap<Object, Object> {
}
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 @@ final class PropMap implements SortedMap<Object, Object> {
}
@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 @@ final class PropMap implements SortedMap<Object, Object> {
}
@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();
}
}
/*
* 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 @@ class TLGlobals {
props = new PropMap();
}
SortedMap<Object, Object> getPropMap() {
SortedMap<String, String> getPropMap() {
return props;
}
......
......@@ -81,8 +81,7 @@ public class UnpackerImpl extends TLGlobals implements Pack200.Unpacker {
* 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;
}
......
......@@ -253,8 +253,8 @@ class Utils {
}
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)); ) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册