public boolean hasMultipleRequirementsFrom(final HasFilterOutcomes producingComponent) { int count = 0; for (final FilterOutcome outcome : _outcomes) { final HasFilterOutcomes source = outcome.getSource(); if (producingComponent.equals(source)) { count++; } } return count > 1; }
public Set<FilterOutcome> getOutcomesFrom(final HasFilterOutcomes producingComponent) { final Set<FilterOutcome> result = new LinkedHashSet<>(); for (final FilterOutcome outcome : _outcomes) { final HasFilterOutcomes source = outcome.getSource(); if (producingComponent.equals(source)) { result.add(outcome); } } return result; }
private FilterOutcome findFilterOutcome(final FilterOutcome originalFilterOutcome, final Map<ComponentJob, ComponentBuilder> componentBuilders) { final HasFilterOutcomes source = originalFilterOutcome.getSource(); final ComponentBuilder builder = componentBuilders.get(source); if (builder == null) { throw new IllegalStateException( "Could not find builder corresponding to " + source + " in builder map: " + componentBuilders); } final Enum<?> category = originalFilterOutcome.getCategory(); final FilterComponentBuilder<?, ?> filterJobBuilder = (FilterComponentBuilder<?, ?>) builder; return filterJobBuilder.getFilterOutcome(category); }
public boolean validateRequirementCandidate(final FilterOutcome requirement) { if (requirement == null) { return true; } final HasFilterOutcomes source = requirement.getSource(); if (source == this) { return false; } if (source instanceof HasComponentRequirement) { final ComponentRequirement componentRequirement = ((HasComponentRequirement) source).getComponentRequirement(); if (componentRequirement != null) { final Collection<FilterOutcome> requirements = componentRequirement.getProcessingDependencies(); for (final FilterOutcome transitiveRequirement : requirements) { final boolean transitiveValidation = validateRequirementCandidate(transitiveRequirement); if (!transitiveValidation) { return false; } } } } return true; }