diff --git a/core/src/main/java/hudson/model/ListView.java b/core/src/main/java/hudson/model/ListView.java index 74616ebf80eaa255abf0e363b1dd26ffd1d79682..0544233a7a33bdcf4faf029c34e4de16430d2686 100644 --- a/core/src/main/java/hudson/model/ListView.java +++ b/core/src/main/java/hudson/model/ListView.java @@ -36,12 +36,7 @@ import hudson.views.ListViewColumn; import hudson.views.ViewJobFilter; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.SortedSet; -import java.util.TreeSet; +import java.util.*; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -165,12 +160,13 @@ public class ListView extends View implements Saveable { } ItemGroup parent = getOwnerItemGroup(); - includeItems(parent, names); + List parentItems = new ArrayList(parent.getItems()); + includeItems(parent, parentItems, names); Boolean statusFilter = this.statusFilter; // capture the value to isolate us from concurrent update for (TopLevelItem item : Items.getAllItems(getOwnerItemGroup(), TopLevelItem.class)) { if (!names.contains(item.getRelativeNameFrom(getOwnerItemGroup()))) continue; - // Add if no status filter or filter matches enabled/disabled status: + // Add if no status filter or filter matches enabled/disabl2ed status: if(statusFilter == null || !(item instanceof AbstractProject) || ((AbstractProject)item).isDisabled() ^ statusFilter) items.add(item); @@ -178,7 +174,7 @@ public class ListView extends View implements Saveable { // check the filters Iterable jobFilters = getJobFilters(); - List allItems = new ArrayList(parent.getItems()); + List allItems = new ArrayList(parentItems); for (ViewJobFilter jobFilter: jobFilters) { items = jobFilter.filter(items, allItems, this); } @@ -193,16 +189,12 @@ public class ListView extends View implements Saveable { return getItems().contains(item); } - private void includeItems(ItemGroup parent, SortedSet names) { - includeItems(parent, parent, names); - } - - private void includeItems(ItemGroup root, ItemGroup parent, SortedSet names) { + private void includeItems(ItemGroup root, Collection parentItems, SortedSet names) { if (includePattern != null) { - for (Item item : parent.getItems()) { + for (Item item : parentItems) { if (recurse && item instanceof ItemGroup) { ItemGroup ig = (ItemGroup) item; - includeItems(root, ig, names); + includeItems(root, ig.getItems(), names); } if (item instanceof TopLevelItem) { String itemName = item.getRelativeNameFrom(root);