提交 2771d233 编写于 作者: J Jesse Glick

ExtensionList.remove was unconditionally returning true, against Collection contract.

上级 728caf4d
...@@ -176,23 +176,23 @@ public class ExtensionList<T> extends AbstractList<T> { ...@@ -176,23 +176,23 @@ public class ExtensionList<T> extends AbstractList<T> {
@Override @Override
public synchronized boolean remove(Object o) { public synchronized boolean remove(Object o) {
removeComponent(legacyInstances,o); boolean removed = removeComponent(legacyInstances, o);
if(extensions!=null) { if(extensions!=null) {
List<ExtensionComponent<T>> r = new ArrayList<ExtensionComponent<T>>(extensions); List<ExtensionComponent<T>> r = new ArrayList<ExtensionComponent<T>>(extensions);
removeComponent(r,o); removed |= removeComponent(r,o);
extensions = sort(r); extensions = sort(r);
} }
return true; return removed;
} }
private <T> void removeComponent(Collection<ExtensionComponent<T>> collection, Object t) { private <T> boolean removeComponent(Collection<ExtensionComponent<T>> collection, Object t) {
for (Iterator<ExtensionComponent<T>> itr = collection.iterator(); itr.hasNext();) { for (Iterator<ExtensionComponent<T>> itr = collection.iterator(); itr.hasNext();) {
ExtensionComponent<T> c = itr.next(); ExtensionComponent<T> c = itr.next();
if (c.getInstance().equals(t)) { if (c.getInstance().equals(t)) {
collection.remove(c); return collection.remove(c);
return;
} }
} }
return false;
} }
@Override @Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册