--- old/src/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java 2014-02-14 18:49:41.874212040 -0800 +++ new/src/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java 2014-02-14 18:49:41.717545371 -0800 @@ -90,7 +90,7 @@ private String rootName; // Element name (String) -> Element - private HashMap elementMap = new HashMap(); + private HashMap elementMap = new HashMap<>(); class Element { String elementName; @@ -100,17 +100,17 @@ int maxChildren = 0; // Child names (Strings) - List childList = new ArrayList(); + List childList = new ArrayList<>(); // Parent names (Strings) - List parentList = new ArrayList(); + List parentList = new ArrayList<>(); // List of attribute names in the order they were added - List attrList = new ArrayList(); + List attrList = new ArrayList<>(); // Attr name (String) -> Attribute - Map attrMap = new HashMap(); + Map attrMap = new HashMap<>(); - ObjectValue objectValue; + ObjectValue objectValue; } class Attribute { @@ -122,7 +122,7 @@ String defaultValue = null; // enumeration - List enumeratedValues; + List enumeratedValues; // range String minValue; @@ -133,17 +133,18 @@ int listMaxLength; } - class ObjectValue { + class ObjectValue { int valueType = VALUE_NONE; - Class classType = null; - Object defaultValue = null; + // ? extends T So that ObjectValue can take Class + Class classType = null; + T defaultValue = null; // Meaningful only if valueType == VALUE_ENUMERATION - List enumeratedValues = null; + List enumeratedValues = null; // Meaningful only if valueType == VALUE_RANGE - Comparable minValue = null; - Comparable maxValue = null; + Comparable minValue = null; + Comparable maxValue = null; // Meaningful only if valueType == VALUE_LIST int arrayMinLength = 0; @@ -272,7 +273,7 @@ if (mustAppear && (elementName == null)) { throw new IllegalArgumentException("element name is null!"); } - Element element = (Element)elementMap.get(elementName); + Element element = elementMap.get(elementName); if (mustAppear && (element == null)) { throw new IllegalArgumentException("No such element: " + elementName); @@ -287,7 +288,7 @@ // Utility method for locating an attribute private Attribute getAttribute(String elementName, String attrName) { Element element = getElement(elementName); - Attribute attr = (Attribute)element.attrMap.get(attrName); + Attribute attr = element.attrMap.get(attrName); if (attr == null) { throw new IllegalArgumentException("No such attribute \"" + attrName + "\"!"); @@ -408,9 +409,9 @@ protected void removeElement(String elementName) { Element element = getElement(elementName, false); if (element != null) { - Iterator iter = element.parentList.iterator(); + Iterator iter = element.parentList.iterator(); while (iter.hasNext()) { - String parentName = (String)iter.next(); + String parentName = iter.next(); Element parent = getElement(parentName, false); if (parent != null) { parent.childList.remove(elementName); @@ -514,7 +515,7 @@ if (enumeratedValues.size() == 0) { throw new IllegalArgumentException("enumeratedValues is empty!"); } - Iterator iter = enumeratedValues.iterator(); + Iterator iter = enumeratedValues.iterator(); while (iter.hasNext()) { Object o = iter.next(); if (o == null) { @@ -681,7 +682,7 @@ String attrName, boolean hasDefaultValue, boolean defaultValue) { - List values = new ArrayList(); + List values = new ArrayList<>(); values.add("TRUE"); values.add("FALSE"); @@ -740,7 +741,7 @@ T defaultValue) { Element element = getElement(elementName); - ObjectValue obj = new ObjectValue(); + ObjectValue obj = new ObjectValue<>(); obj.valueType = VALUE_ARBITRARY; obj.classType = classType; obj.defaultValue = defaultValue; @@ -793,7 +794,7 @@ if (enumeratedValues.size() == 0) { throw new IllegalArgumentException("enumeratedValues is empty!"); } - Iterator iter = enumeratedValues.iterator(); + Iterator iter = enumeratedValues.iterator(); while (iter.hasNext()) { Object o = iter.next(); if (o == null) { @@ -804,7 +805,7 @@ } } - ObjectValue obj = new ObjectValue(); + ObjectValue obj = new ObjectValue<>(); obj.valueType = VALUE_ENUMERATION; obj.classType = classType; obj.defaultValue = defaultValue; @@ -854,7 +855,7 @@ boolean maxInclusive) { Element element = getElement(elementName); - ObjectValue obj = new ObjectValue(); + ObjectValue obj = new ObjectValue<>(); obj.valueType = VALUE_RANGE; if (minInclusive) { obj.valueType |= VALUE_RANGE_MIN_INCLUSIVE_MASK; @@ -895,7 +896,7 @@ int arrayMinLength, int arrayMaxLength) { Element element = getElement(elementName); - ObjectValue obj = new ObjectValue(); + ObjectValue obj = new ObjectValue<>(); obj.valueType = VALUE_LIST; obj.classType = classType; obj.arrayMinLength = arrayMinLength; @@ -962,10 +963,10 @@ * If that throws MissingResourceException, then try the * system class loader. */ - ClassLoader loader = (ClassLoader) + ClassLoader loader = java.security.AccessController.doPrivileged( - new java.security.PrivilegedAction() { - public Object run() { + new java.security.PrivilegedAction() { + public ClassLoader run() { return Thread.currentThread().getContextClassLoader(); } }); @@ -1037,17 +1038,17 @@ if (element.childPolicy == CHILD_POLICY_EMPTY) { return null; } - return (String[])element.childList.toArray(new String[0]); + return element.childList.toArray(new String[0]); } // Attributes public String[] getAttributeNames(String elementName) { Element element = getElement(elementName); - List names = element.attrList; + List names = element.attrList; String[] result = new String[names.size()]; - return (String[])names.toArray(result); + return names.toArray(result); } public int getAttributeValueType(String elementName, String attrName) { @@ -1079,10 +1080,9 @@ ("Attribute not an enumeration!"); } - List values = attr.enumeratedValues; - Iterator iter = values.iterator(); + List values = attr.enumeratedValues; String[] result = new String[values.size()]; - return (String[])values.toArray(result); + return values.toArray(result); } public String getAttributeMinValue(String elementName, String attrName) { @@ -1170,7 +1170,7 @@ if (attrName == null) { throw new IllegalArgumentException("attrName == null!"); } - Attribute attr = (Attribute)element.attrMap.get(attrName); + Attribute attr = element.attrMap.get(attrName); if (attr == null) { throw new IllegalArgumentException("No such attribute!"); } @@ -1179,9 +1179,9 @@ return getResource(key, locale); } - private ObjectValue getObjectValue(String elementName) { + private ObjectValue getObjectValue(String elementName) { Element element = getElement(elementName); - ObjectValue objv = element.objectValue; + ObjectValue objv = element.objectValue; if (objv == null) { throw new IllegalArgumentException("No object within element " + elementName + "!"); @@ -1191,7 +1191,7 @@ public int getObjectValueType(String elementName) { Element element = getElement(elementName); - ObjectValue objv = element.objectValue; + ObjectValue objv = element.objectValue; if (objv == null) { return VALUE_NONE; } @@ -1199,27 +1199,27 @@ } public Class getObjectClass(String elementName) { - ObjectValue objv = getObjectValue(elementName); + ObjectValue objv = getObjectValue(elementName); return objv.classType; } public Object getObjectDefaultValue(String elementName) { - ObjectValue objv = getObjectValue(elementName); + ObjectValue objv = getObjectValue(elementName); return objv.defaultValue; } public Object[] getObjectEnumerations(String elementName) { - ObjectValue objv = getObjectValue(elementName); + ObjectValue objv = getObjectValue(elementName); if (objv.valueType != VALUE_ENUMERATION) { throw new IllegalArgumentException("Not an enumeration!"); } - List vlist = objv.enumeratedValues; + List vlist = objv.enumeratedValues; Object[] values = new Object[vlist.size()]; return vlist.toArray(values); } public Comparable getObjectMinValue(String elementName) { - ObjectValue objv = getObjectValue(elementName); + ObjectValue objv = getObjectValue(elementName); if ((objv.valueType & VALUE_RANGE) != VALUE_RANGE) { throw new IllegalArgumentException("Not a range!"); } @@ -1227,7 +1227,7 @@ } public Comparable getObjectMaxValue(String elementName) { - ObjectValue objv = getObjectValue(elementName); + ObjectValue objv = getObjectValue(elementName); if ((objv.valueType & VALUE_RANGE) != VALUE_RANGE) { throw new IllegalArgumentException("Not a range!"); } @@ -1235,7 +1235,7 @@ } public int getObjectArrayMinLength(String elementName) { - ObjectValue objv = getObjectValue(elementName); + ObjectValue objv = getObjectValue(elementName); if (objv.valueType != VALUE_LIST) { throw new IllegalArgumentException("Not a list!"); } @@ -1243,7 +1243,7 @@ } public int getObjectArrayMaxLength(String elementName) { - ObjectValue objv = getObjectValue(elementName); + ObjectValue objv = getObjectValue(elementName); if (objv.valueType != VALUE_LIST) { throw new IllegalArgumentException("Not a list!"); }