src/share/classes/javax/imageio/spi/PartiallyOrderedSet.java

Print this page
rev 9345 : 8035487: Fix raw and unchecked lint warnings in javax.imageio.spi
Reviewed-by:

*** 49,69 **** * service provider registry situation, an application might allow the * user to set a preference order for service provider objects * supplied by a trusted vendor over those supplied by another. * */ ! class PartiallyOrderedSet extends AbstractSet { // The topological sort (roughly) follows the algorithm described in // Horowitz and Sahni, _Fundamentals of Data Structures_ (1976), // p. 315. // Maps Objects to DigraphNodes that contain them ! private Map poNodes = new HashMap(); // The set of Objects ! private Set nodes = poNodes.keySet(); /** * Constructs a <code>PartiallyOrderedSet</code>. */ public PartiallyOrderedSet() {} --- 49,69 ---- * service provider registry situation, an application might allow the * user to set a preference order for service provider objects * supplied by a trusted vendor over those supplied by another. * */ ! class PartiallyOrderedSet<E> extends AbstractSet<E> { // The topological sort (roughly) follows the algorithm described in // Horowitz and Sahni, _Fundamentals of Data Structures_ (1976), // p. 315. // Maps Objects to DigraphNodes that contain them ! private Map<E, DigraphNode<E>> poNodes = new HashMap<>(); // The set of Objects ! private Set<E> nodes = poNodes.keySet(); /** * Constructs a <code>PartiallyOrderedSet</code>. */ public PartiallyOrderedSet() {}
*** 79,112 **** /** * Returns an iterator over the elements contained in this * collection, with an ordering that respects the orderings set * by the <code>setOrdering</code> method. */ ! public Iterator iterator() { ! return new PartialOrderIterator(poNodes.values().iterator()); } /** * Adds an <code>Object</code> to this * <code>PartiallyOrderedSet</code>. */ ! public boolean add(Object o) { if (nodes.contains(o)) { return false; } ! DigraphNode node = new DigraphNode(o); poNodes.put(o, node); return true; } /** * Removes an <code>Object</code> from this * <code>PartiallyOrderedSet</code>. */ public boolean remove(Object o) { ! DigraphNode node = (DigraphNode)poNodes.get(o); if (node == null) { return false; } poNodes.remove(o); --- 79,112 ---- /** * Returns an iterator over the elements contained in this * collection, with an ordering that respects the orderings set * by the <code>setOrdering</code> method. */ ! public Iterator<E> iterator() { ! return new PartialOrderIterator<>(poNodes.values().iterator()); } /** * Adds an <code>Object</code> to this * <code>PartiallyOrderedSet</code>. */ ! public boolean add(E o) { if (nodes.contains(o)) { return false; } ! DigraphNode<E> node = new DigraphNode<>(o); poNodes.put(o, node); return true; } /** * Removes an <code>Object</code> from this * <code>PartiallyOrderedSet</code>. */ public boolean remove(Object o) { ! DigraphNode<E> node = poNodes.get(o); if (node == null) { return false; } poNodes.remove(o);
*** 125,182 **** * between the nodes in the opposite order, it is removed. * * @return <code>true</code> if no prior ordering existed * between the nodes, <code>false</code>otherwise. */ ! public boolean setOrdering(Object first, Object second) { ! DigraphNode firstPONode = ! (DigraphNode)poNodes.get(first); ! DigraphNode secondPONode = ! (DigraphNode)poNodes.get(second); secondPONode.removeEdge(firstPONode); return firstPONode.addEdge(secondPONode); } /** * Removes any ordering between two nodes. * * @return true if a prior prefence existed between the nodes. */ ! public boolean unsetOrdering(Object first, Object second) { ! DigraphNode firstPONode = ! (DigraphNode)poNodes.get(first); ! DigraphNode secondPONode = ! (DigraphNode)poNodes.get(second); return firstPONode.removeEdge(secondPONode) || secondPONode.removeEdge(firstPONode); } /** * Returns <code>true</code> if an ordering exists between two * nodes. */ ! public boolean hasOrdering(Object preferred, Object other) { ! DigraphNode preferredPONode = ! (DigraphNode)poNodes.get(preferred); ! DigraphNode otherPONode = ! (DigraphNode)poNodes.get(other); return preferredPONode.hasEdge(otherPONode); } } ! class PartialOrderIterator implements Iterator { ! LinkedList zeroList = new LinkedList(); ! Map inDegrees = new HashMap(); // DigraphNode -> Integer ! public PartialOrderIterator(Iterator iter) { // Initialize scratch in-degree values, zero list while (iter.hasNext()) { ! DigraphNode node = (DigraphNode)iter.next(); int inDegree = node.getInDegree(); inDegrees.put(node, new Integer(inDegree)); // Add nodes with zero in-degree to the zero list if (inDegree == 0) { --- 125,176 ---- * between the nodes in the opposite order, it is removed. * * @return <code>true</code> if no prior ordering existed * between the nodes, <code>false</code>otherwise. */ ! public boolean setOrdering(E first, E second) { ! DigraphNode<E> firstPONode = poNodes.get(first); ! DigraphNode<E> secondPONode = poNodes.get(second); secondPONode.removeEdge(firstPONode); return firstPONode.addEdge(secondPONode); } /** * Removes any ordering between two nodes. * * @return true if a prior prefence existed between the nodes. */ ! public boolean unsetOrdering(E first, E second) { ! DigraphNode<E> firstPONode = poNodes.get(first); ! DigraphNode<E> secondPONode = poNodes.get(second); return firstPONode.removeEdge(secondPONode) || secondPONode.removeEdge(firstPONode); } /** * Returns <code>true</code> if an ordering exists between two * nodes. */ ! public boolean hasOrdering(E preferred, E other) { ! DigraphNode<E> preferredPONode = poNodes.get(preferred); ! DigraphNode<E> otherPONode = poNodes.get(other); return preferredPONode.hasEdge(otherPONode); } } ! class PartialOrderIterator<E> implements Iterator<E> { ! LinkedList<DigraphNode<E>> zeroList = new LinkedList<>(); ! Map<DigraphNode<E>, Integer> inDegrees = new HashMap<>(); ! public PartialOrderIterator(Iterator<DigraphNode<E>> iter) { // Initialize scratch in-degree values, zero list while (iter.hasNext()) { ! DigraphNode<E> node = iter.next(); int inDegree = node.getInDegree(); inDegrees.put(node, new Integer(inDegree)); // Add nodes with zero in-degree to the zero list if (inDegree == 0) {
*** 187,204 **** public boolean hasNext() { return !zeroList.isEmpty(); } ! public Object next() { ! DigraphNode first = (DigraphNode)zeroList.removeFirst(); // For each out node of the output node, decrement its in-degree ! Iterator outNodes = first.getOutNodes(); while (outNodes.hasNext()) { ! DigraphNode node = (DigraphNode)outNodes.next(); ! int inDegree = ((Integer)inDegrees.get(node)).intValue() - 1; inDegrees.put(node, new Integer(inDegree)); // If the in-degree has fallen to 0, place the node on the list if (inDegree == 0) { zeroList.add(node); --- 181,198 ---- public boolean hasNext() { return !zeroList.isEmpty(); } ! public E next() { ! DigraphNode<E> first = zeroList.removeFirst(); // For each out node of the output node, decrement its in-degree ! Iterator<DigraphNode<E>> outNodes = first.getOutNodes(); while (outNodes.hasNext()) { ! DigraphNode<E> node = outNodes.next(); ! int inDegree = inDegrees.get(node).intValue() - 1; inDegrees.put(node, new Integer(inDegree)); // If the in-degree has fallen to 0, place the node on the list if (inDegree == 0) { zeroList.add(node);