Skip to content

Commit

Permalink
Merge pull request #941 from ctapobep/master
Browse files Browse the repository at this point in the history
[FIXED JENKINS-18721] Improvement of ListView render performance
  • Loading branch information
olivergondza committed Sep 13, 2013
2 parents 259f16b + 87dd59d commit a12c22d
Showing 1 changed file with 7 additions and 15 deletions.
22 changes: 7 additions & 15 deletions core/src/main/java/hudson/model/ListView.java
Expand Up @@ -36,12 +36,7 @@
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;

Expand Down Expand Up @@ -165,7 +160,8 @@ public List<TopLevelItem> getItems() {
}

ItemGroup<? extends TopLevelItem> parent = getOwnerItemGroup();
includeItems(parent, names);
List<TopLevelItem> parentItems = new ArrayList<TopLevelItem>(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)) {
Expand All @@ -178,7 +174,7 @@ public List<TopLevelItem> getItems() {

// check the filters
Iterable<ViewJobFilter> jobFilters = getJobFilters();
List<TopLevelItem> allItems = new ArrayList<TopLevelItem>(parent.getItems());
List<TopLevelItem> allItems = new ArrayList<TopLevelItem>(parentItems);
for (ViewJobFilter jobFilter: jobFilters) {
items = jobFilter.filter(items, allItems, this);
}
Expand All @@ -193,16 +189,12 @@ public boolean contains(TopLevelItem item) {
return getItems().contains(item);
}

private void includeItems(ItemGroup<? extends TopLevelItem> parent, SortedSet<String> names) {
includeItems(parent, parent, names);
}

private void includeItems(ItemGroup<? extends TopLevelItem> root, ItemGroup<?> parent, SortedSet<String> names) {
private void includeItems(ItemGroup<? extends TopLevelItem> root, Collection<? extends Item> parentItems, SortedSet<String> 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);
Expand Down

0 comments on commit a12c22d

Please sign in to comment.