@Override public Collection<? extends Action> getProjectActions(AbstractProject<?, ?> project) { ArrayList<TestflightBuildAction> actions = new ArrayList<TestflightBuildAction>(); RunList<? extends AbstractBuild<?, ?>> builds = project.getBuilds(); Collection predicated = CollectionUtils.select( builds, new Predicate() { public boolean evaluate(Object o) { Result result = ((AbstractBuild<?, ?>) o).getResult(); if (result == null) return false; // currently running builds can have a null result return result.isBetterOrEqualTo(Result.SUCCESS); } }); ArrayList<AbstractBuild<?, ?>> filteredList = new ArrayList<AbstractBuild<?, ?>>(predicated); Collections.reverse(filteredList); for (AbstractBuild<?, ?> build : filteredList) { List<TestflightBuildAction> testflightActions = build.getActions(TestflightBuildAction.class); if (testflightActions != null && testflightActions.size() > 0) { for (TestflightBuildAction action : testflightActions) { actions.add(new TestflightBuildAction(action)); } break; } } return actions; }