From 403200041e41fbae1d534a1b67d72b6227b5e02a Mon Sep 17 00:00:00 2001 From: "andrzej@threerings.net" Date: Thu, 28 Aug 2008 22:51:56 +0000 Subject: [PATCH] Added prune method to remove collected observers from list. git-svn-id: https://samskivert.googlecode.com/svn/trunk@2373 6335cc39-0255-0410-8fd6-9bcaacd3b74c --- src/java/com/samskivert/util/WeakObserverList.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/java/com/samskivert/util/WeakObserverList.java b/src/java/com/samskivert/util/WeakObserverList.java index 2ac12495..e6a9c817 100644 --- a/src/java/com/samskivert/util/WeakObserverList.java +++ b/src/java/com/samskivert/util/WeakObserverList.java @@ -178,6 +178,18 @@ public class WeakObserverList extends AbstractList _wrappedList.apply(_derefOp); } + /** + * Removes all garbage-collected observers from the list. + */ + public void prune () + { + for (int ii = _wrappedList.size() - 1; ii >= 0; ii--) { + if (_wrappedList.get(ii).get() == null) { + _wrappedList.remove(ii); + } + } + } + /** * An operation that resolves a reference and applies a wrapped op. */