Skip to content

Commit

Permalink
[FIXED JENKINS-20415] Lack of type safety in JENKINS-20143 fix someti…
Browse files Browse the repository at this point in the history
…mes caused CCEs.

(cherry picked from commit bdbac28)

Conflicts:
	changelog.html
  • Loading branch information
jglick authored and olivergondza committed Dec 9, 2013
1 parent d95e164 commit 4f3a9d6
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
10 changes: 4 additions & 6 deletions core/src/main/java/hudson/model/ListView.java
Expand Up @@ -186,14 +186,12 @@ public List<TopLevelItem> getItems() {
}

private List<TopLevelItem> expand(Collection<TopLevelItem> items, List<TopLevelItem> allItems) {
for (Item item : items) {
for (TopLevelItem item : items) {
if (item instanceof ItemGroup) {
ItemGroup<TopLevelItem> ig = (ItemGroup<TopLevelItem>) item;
expand(ig.getItems(), allItems);
}
if (item instanceof TopLevelItem) {
allItems.add((TopLevelItem) item);
ItemGroup<? extends Item> ig = (ItemGroup<? extends Item>) item;
expand(Util.filter(ig.getItems(), TopLevelItem.class), allItems);
}
allItems.add(item);
}
return allItems;
}
Expand Down
17 changes: 17 additions & 0 deletions test/src/test/java/hudson/model/ListViewTest.java
Expand Up @@ -40,6 +40,10 @@

import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import hudson.matrix.AxisList;
import hudson.matrix.MatrixProject;
import hudson.matrix.TextAxis;
import java.util.Collections;

public class ListViewTest {

Expand Down Expand Up @@ -95,4 +99,17 @@ private void checkLinkFromItemExistsAndIsValid(Item item, ItemGroup ig, Item top
webClient.getPage(top, link.getHrefAttribute());
}

@Bug(20415)
@Test public void nonTopLevelItemGroup() throws Exception {
MatrixProject mp = j.createMatrixProject();
mp.setAxes(new AxisList(new TextAxis("axis", "one", "two")));
assertEquals(2, mp.getItems().size());
ListView v = new ListView("v");
j.jenkins.addView(v);
v.setIncludeRegex(".*");
v.setRecurse(true);
// Note: did not manage to reproduce CCE until I changed expand to use ‘for (TopLevelItem item : items)’ rather than ‘for (Item item : items)’; perhaps a compiler-specific issue?
assertEquals(Collections.singletonList(mp), v.getItems());
}

}

0 comments on commit 4f3a9d6

Please sign in to comment.