--- old/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGMetadata.java 2014-02-05 11:39:23.872597105 -0800 +++ new/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGMetadata.java 2014-02-05 11:39:23.675930429 -0800 @@ -52,6 +52,7 @@ import java.awt.color.ICC_Profile; import java.awt.color.ICC_ColorSpace; import java.awt.color.ColorSpace; +import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.Point; @@ -69,7 +70,7 @@ * markerSequence is modified. This is used by reset * to restore the original state. */ - private List resetSequence = null; + private List resetSequence = null; /** * Set to true when reading a thumbnail stored as @@ -100,7 +101,7 @@ * list is package visible so that the writer can access it. * @see #MarkerSegment */ - List markerSequence = new ArrayList(); + List markerSequence = new ArrayList<>(); /** * Indicates whether this object represents stream or image @@ -645,9 +646,9 @@ * with the given tag, or null if none is found. */ MarkerSegment findMarkerSegment(int tag) { - Iterator iter = markerSequence.iterator(); + Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { - MarkerSegment seg = (MarkerSegment)iter.next(); + MarkerSegment seg = iter.next(); if (seg.tag == tag) { return seg; } @@ -659,19 +660,19 @@ * Returns the first or last MarkerSegment object in the list * of the given class, or null if none is found. */ - MarkerSegment findMarkerSegment(Class cls, boolean first) { + MarkerSegment findMarkerSegment(Class cls, boolean first) { if (first) { - Iterator iter = markerSequence.iterator(); + Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { - MarkerSegment seg = (MarkerSegment)iter.next(); + MarkerSegment seg = iter.next(); if (cls.isInstance(seg)) { return seg; } } } else { - ListIterator iter = markerSequence.listIterator(markerSequence.size()); + ListIterator iter = markerSequence.listIterator(markerSequence.size()); while (iter.hasPrevious()) { - MarkerSegment seg = (MarkerSegment)iter.previous(); + MarkerSegment seg = iter.previous(); if (cls.isInstance(seg)) { return seg; } @@ -684,19 +685,19 @@ * Returns the index of the first or last MarkerSegment in the list * of the given class, or -1 if none is found. */ - private int findMarkerSegmentPosition(Class cls, boolean first) { + private int findMarkerSegmentPosition(Class cls, boolean first) { if (first) { - ListIterator iter = markerSequence.listIterator(); + ListIterator iter = markerSequence.listIterator(); for (int i = 0; iter.hasNext(); i++) { - MarkerSegment seg = (MarkerSegment)iter.next(); + MarkerSegment seg = iter.next(); if (cls.isInstance(seg)) { return i; } } } else { - ListIterator iter = markerSequence.listIterator(markerSequence.size()); + ListIterator iter = markerSequence.listIterator(markerSequence.size()); for (int i = markerSequence.size()-1; iter.hasPrevious(); i--) { - MarkerSegment seg = (MarkerSegment)iter.previous(); + MarkerSegment seg = iter.previous(); if (cls.isInstance(seg)) { return i; } @@ -706,9 +707,9 @@ } private int findLastUnknownMarkerSegmentPosition() { - ListIterator iter = markerSequence.listIterator(markerSequence.size()); + ListIterator iter = markerSequence.listIterator(markerSequence.size()); for (int i = markerSequence.size()-1; iter.hasPrevious(); i--) { - MarkerSegment seg = (MarkerSegment)iter.previous(); + MarkerSegment seg = iter.previous(); if (seg.unknown == true) { return i; } @@ -733,14 +734,14 @@ /** * Returns a deep copy of the current marker sequence. */ - private List cloneSequence() { + private List cloneSequence() { if (markerSequence == null) { return null; } - List retval = new ArrayList(markerSequence.size()); - Iterator iter = markerSequence.iterator(); + List retval = new ArrayList<>(markerSequence.size()); + Iterator iter = markerSequence.iterator(); while(iter.hasNext()) { - MarkerSegment seg = (MarkerSegment)iter.next(); + MarkerSegment seg = iter.next(); retval.add(seg.clone()); } @@ -774,7 +775,7 @@ IIOMetadataNode getNativeTree() { IIOMetadataNode root; IIOMetadataNode top; - Iterator iter = markerSequence.iterator(); + Iterator iter = markerSequence.iterator(); if (isStream) { root = new IIOMetadataNode(JPEG.nativeStreamMetadataFormatName); top = root; @@ -797,7 +798,7 @@ top = sequence; } while(iter.hasNext()) { - MarkerSegment seg = (MarkerSegment) iter.next(); + MarkerSegment seg = iter.next(); top.appendChild(seg.getNativeNode()); } return root; @@ -961,9 +962,9 @@ // NumProgressiveScans - count sos segments int sosCount = 0; - Iterator iter = markerSequence.iterator(); + Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { - MarkerSegment ms = (MarkerSegment) iter.next(); + MarkerSegment ms = iter.next(); if (ms.tag == JPEG.SOS) { sosCount++; } @@ -1028,9 +1029,9 @@ // Add a text entry for each COM Marker Segment if (findMarkerSegment(JPEG.COM) != null) { text = new IIOMetadataNode("Text"); - Iterator iter = markerSequence.iterator(); + Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { - MarkerSegment seg = (MarkerSegment) iter.next(); + MarkerSegment seg = iter.next(); if (seg.tag == JPEG.COM) { COMMarkerSegment com = (COMMarkerSegment) seg; IIOMetadataNode entry = new IIOMetadataNode("TextEntry"); @@ -1068,7 +1069,7 @@ if (root == null) { throw new IllegalArgumentException("null root!"); } - List copy = null; + List copy = null; if (resetSequence == null) { resetSequence = cloneSequence(); // Deep copy copy = resetSequence; // Avoid cloning twice @@ -1181,12 +1182,12 @@ */ private void mergeDQTNode(Node node) throws IIOInvalidTreeException { // First collect any existing DQT nodes into a local list - ArrayList oldDQTs = new ArrayList(); - Iterator iter = markerSequence.iterator(); + ArrayList oldDQTs = new ArrayList<>(); + Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { - MarkerSegment seg = (MarkerSegment) iter.next(); + MarkerSegment seg = iter.next(); if (seg instanceof DQTMarkerSegment) { - oldDQTs.add(seg); + oldDQTs.add((DQTMarkerSegment) seg); } } if (!oldDQTs.isEmpty()) { @@ -1201,10 +1202,9 @@ DQTMarkerSegment dqt = null; int tableIndex = -1; for (int j = 0; j < oldDQTs.size(); j++) { - DQTMarkerSegment testDQT = (DQTMarkerSegment) oldDQTs.get(j); + DQTMarkerSegment testDQT = oldDQTs.get(j); for (int k = 0; k < testDQT.tables.size(); k++) { - DQTMarkerSegment.Qtable testTable = - (DQTMarkerSegment.Qtable) testDQT.tables.get(k); + DQTMarkerSegment.Qtable testTable = testDQT.tables.get(k); if (childID == testTable.tableID) { dqt = testDQT; tableIndex = k; @@ -1216,7 +1216,7 @@ if (dqt != null) { dqt.tables.set(tableIndex, dqt.getQtableFromNode(child)); } else { - dqt = (DQTMarkerSegment) oldDQTs.get(oldDQTs.size()-1); + dqt = oldDQTs.get(oldDQTs.size()-1); dqt.tables.add(dqt.getQtableFromNode(child)); } } @@ -1257,12 +1257,12 @@ */ private void mergeDHTNode(Node node) throws IIOInvalidTreeException { // First collect any existing DQT nodes into a local list - ArrayList oldDHTs = new ArrayList(); - Iterator iter = markerSequence.iterator(); + ArrayList oldDHTs = new ArrayList<>(); + Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { - MarkerSegment seg = (MarkerSegment) iter.next(); + MarkerSegment seg = iter.next(); if (seg instanceof DHTMarkerSegment) { - oldDHTs.add(seg); + oldDHTs.add((DHTMarkerSegment) seg); } } if (!oldDHTs.isEmpty()) { @@ -1283,10 +1283,9 @@ DHTMarkerSegment dht = null; int tableIndex = -1; for (int j = 0; j < oldDHTs.size(); j++) { - DHTMarkerSegment testDHT = (DHTMarkerSegment) oldDHTs.get(j); + DHTMarkerSegment testDHT = oldDHTs.get(j); for (int k = 0; k < testDHT.tables.size(); k++) { - DHTMarkerSegment.Htable testTable = - (DHTMarkerSegment.Htable) testDHT.tables.get(k); + DHTMarkerSegment.Htable testTable = testDHT.tables.get(k); if ((childID == testTable.tableID) && (childClass == testTable.tableClass)) { dht = testDHT; @@ -1299,7 +1298,7 @@ if (dht != null) { dht.tables.set(tableIndex, dht.getHtableFromNode(child)); } else { - dht = (DHTMarkerSegment) oldDHTs.get(oldDHTs.size()-1); + dht = oldDHTs.get(oldDHTs.size()-1); dht.tables.add(dht.getHtableFromNode(child)); } } @@ -1735,8 +1734,8 @@ } if (idsDiffer) { // update the ids in each SOS marker segment - for (Iterator iter = markerSequence.iterator(); iter.hasNext();) { - MarkerSegment seg = (MarkerSegment) iter.next(); + for (Iterator iter = markerSequence.iterator(); iter.hasNext();) { + MarkerSegment seg = iter.next(); if (seg instanceof SOSMarkerSegment) { SOSMarkerSegment target = (SOSMarkerSegment) seg; for (int i = 0; i < target.componentSpecs.length; i++) { @@ -1788,11 +1787,11 @@ } if (updateQtables) { - List tableSegments = new ArrayList(); - for (Iterator iter = markerSequence.iterator(); iter.hasNext();) { - MarkerSegment seg = (MarkerSegment) iter.next(); + List tableSegments = new ArrayList<>(); + for (Iterator iter = markerSequence.iterator(); iter.hasNext();) { + MarkerSegment seg = iter.next(); if (seg instanceof DQTMarkerSegment) { - tableSegments.add(seg); + tableSegments.add((DQTMarkerSegment) seg); } } // If there are no tables, don't add them, as the metadata encodes an @@ -1806,12 +1805,11 @@ // Find the table with selector 1. boolean found = false; - for (Iterator iter = tableSegments.iterator(); iter.hasNext();) { - DQTMarkerSegment testdqt = (DQTMarkerSegment) iter.next(); - for (Iterator tabiter = testdqt.tables.iterator(); + for (Iterator iter = tableSegments.iterator(); iter.hasNext();) { + DQTMarkerSegment testdqt = iter.next(); + for (Iterator tabiter = testdqt.tables.iterator(); tabiter.hasNext();) { - DQTMarkerSegment.Qtable tab = - (DQTMarkerSegment.Qtable) tabiter.next(); + DQTMarkerSegment.Qtable tab = tabiter.next(); if (tab.tableID == 1) { found = true; } @@ -1820,12 +1818,11 @@ if (!found) { // find the table with selector 0. There should be one. DQTMarkerSegment.Qtable table0 = null; - for (Iterator iter = tableSegments.iterator(); iter.hasNext();) { - DQTMarkerSegment testdqt = (DQTMarkerSegment) iter.next(); - for (Iterator tabiter = testdqt.tables.iterator(); + for (Iterator iter = tableSegments.iterator(); iter.hasNext();) { + DQTMarkerSegment testdqt = iter.next(); + for (Iterator tabiter = testdqt.tables.iterator(); tabiter.hasNext();) { - DQTMarkerSegment.Qtable tab = - (DQTMarkerSegment.Qtable) tabiter.next(); + DQTMarkerSegment.Qtable tab = tabiter.next(); if (tab.tableID == 0) { table0 = tab; } @@ -1835,19 +1832,18 @@ // Assuming that the table with id 0 is a luminance table, // compute a new chrominance table of the same quality and // add it to the last DQT segment - DQTMarkerSegment dqt = - (DQTMarkerSegment) tableSegments.get(tableSegments.size()-1); + DQTMarkerSegment dqt = tableSegments.get(tableSegments.size()-1); dqt.tables.add(dqt.getChromaForLuma(table0)); } } } if (updateHtables) { - List tableSegments = new ArrayList(); - for (Iterator iter = markerSequence.iterator(); iter.hasNext();) { - MarkerSegment seg = (MarkerSegment) iter.next(); + List tableSegments = new ArrayList<>(); + for (Iterator iter = markerSequence.iterator(); iter.hasNext();) { + MarkerSegment seg = iter.next(); if (seg instanceof DHTMarkerSegment) { - tableSegments.add(seg); + tableSegments.add((DHTMarkerSegment) seg); } } // If there are no tables, don't add them, as the metadata encodes an @@ -1860,12 +1856,11 @@ // find a table with selector 1. AC/DC is irrelevant boolean found = false; - for (Iterator iter = tableSegments.iterator(); iter.hasNext();) { - DHTMarkerSegment testdht = (DHTMarkerSegment) iter.next(); - for (Iterator tabiter = testdht.tables.iterator(); + for (Iterator iter = tableSegments.iterator(); iter.hasNext();) { + DHTMarkerSegment testdht = iter.next(); + for (Iterator tabiter = testdht.tables.iterator(); tabiter.hasNext();) { - DHTMarkerSegment.Htable tab = - (DHTMarkerSegment.Htable) tabiter.next(); + DHTMarkerSegment.Htable tab = tabiter.next(); if (tab.tableID == 1) { found = true; } @@ -1875,7 +1870,7 @@ // Create new standard dc and ac chrominance tables and add them // to the last DHT segment DHTMarkerSegment lastDHT = - (DHTMarkerSegment) tableSegments.get(tableSegments.size()-1); + tableSegments.get(tableSegments.size()-1); lastDHT.addHtable(JPEGHuffmanTable.StdDCLuminance, true, 1); lastDHT.addHtable(JPEGHuffmanTable.StdACLuminance, true, 1); } @@ -2181,7 +2176,7 @@ if (resetSequence == null) { resetSequence = markerSequence; } - markerSequence = new ArrayList(); + markerSequence = new ArrayList<>(); // Build a whole new marker sequence from the tree @@ -2310,10 +2305,10 @@ * segments, including 0 if there are no SOS marker segments. */ private int countScanBands() { - List ids = new ArrayList(); - Iterator iter = markerSequence.iterator(); + List ids = new ArrayList<>(); + Iterator iter = markerSequence.iterator(); while(iter.hasNext()) { - MarkerSegment seg = (MarkerSegment)iter.next(); + MarkerSegment seg = iter.next(); if (seg instanceof SOSMarkerSegment) { SOSMarkerSegment sos = (SOSMarkerSegment) seg; SOSMarkerSegment.ScanComponentSpec [] specs = sos.componentSpecs; @@ -2334,7 +2329,7 @@ void writeToStream(ImageOutputStream ios, boolean ignoreJFIF, boolean forceJFIF, - List thumbnails, + List thumbnails, ICC_Profile iccProfile, boolean ignoreAdobe, int newAdobeTransform, @@ -2360,9 +2355,9 @@ } } // Iterate over each MarkerSegment - Iterator iter = markerSequence.iterator(); + Iterator iter = markerSequence.iterator(); while(iter.hasNext()) { - MarkerSegment seg = (MarkerSegment)iter.next(); + MarkerSegment seg = iter.next(); if (seg instanceof JFIFMarkerSegment) { if (ignoreJFIF == false) { JFIFMarkerSegment jfif = (JFIFMarkerSegment) seg; @@ -2409,7 +2404,7 @@ public void print() { for (int i = 0; i < markerSequence.size(); i++) { - MarkerSegment seg = (MarkerSegment) markerSequence.get(i); + MarkerSegment seg = markerSequence.get(i); seg.print(); } }