提交 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> {
@Override
public synchronized boolean remove(Object o) {
removeComponent(legacyInstances,o);
boolean removed = removeComponent(legacyInstances, o);
if(extensions!=null) {
List<ExtensionComponent<T>> r = new ArrayList<ExtensionComponent<T>>(extensions);
removeComponent(r,o);
removed |= removeComponent(r,o);
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();) {
ExtensionComponent<T> c = itr.next();
if (c.getInstance().equals(t)) {
collection.remove(c);
return;
return collection.remove(c);
}
}
return false;
}
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册