private @Nonnull Cause trim(@Nonnull Cause c, int depth, Set<String> traversed) { if (!(c instanceof UpstreamCause)) { return c; } UpstreamCause uc = (UpstreamCause) c; List<Cause> cs = new ArrayList<Cause>(); if (depth > 0) { if (traversed.add(uc.upstreamUrl + uc.upstreamBuild)) { for (Cause c2 : uc.upstreamCauses) { cs.add(trim(c2, depth - 1, traversed)); } } } else if (traversed.size() < MAX_LEAF) { cs.add(new DeeplyNestedUpstreamCause()); } return new UpstreamCause(uc.upstreamProject, uc.upstreamBuild, uc.upstreamUrl, cs); }
public UpstreamCause(Run<?, ?> up) { upstreamBuild = up.getNumber(); upstreamProject = up.getParent().getFullName(); upstreamUrl = up.getParent().getUrl(); upstreamCauses = new ArrayList<Cause>(); Set<String> traversed = new HashSet<String>(); for (Cause c : up.getCauses()) { upstreamCauses.add(trim(c, MAX_DEPTH, traversed)); } }
private @Nonnull Cause trim(@Nonnull Cause c, int depth, Set<String> traversed) { if (!(c instanceof UpstreamCause)) { return c; } UpstreamCause uc = (UpstreamCause) c; List<Cause> cs = new ArrayList<Cause>(); if (depth > 0) { if (traversed.add(uc.upstreamUrl + uc.upstreamBuild)) { for (Cause c2 : uc.upstreamCauses) { cs.add(trim(c2, depth - 1, traversed)); } } } else if (traversed.size() < MAX_LEAF) { cs.add(new DeeplyNestedUpstreamCause()); } return new UpstreamCause(uc.upstreamProject, uc.upstreamBuild, uc.upstreamUrl, cs); }
public UpstreamCause(Run<?, ?> up) { upstreamBuild = up.getNumber(); upstreamProject = up.getParent().getFullName(); upstreamUrl = up.getParent().getUrl(); upstreamCauses = new ArrayList<Cause>(); Set<String> traversed = new HashSet<String>(); for (Cause c : up.getCauses()) { upstreamCauses.add(trim(c, MAX_DEPTH, traversed)); } }