@Override public Collection<ResolutionRule> transform(final Collection<ResolutionRule> rules) { final Collection<ResolutionRule> result = new ArrayList<ResolutionRule>(rules.size()); for (ResolutionRule rule : rules) { final String function = rule.getFunction().getFunction().getFunctionDefinition().getShortName(); final Action action = _functionTransformations.get(function); if (action == null) { s_logger.debug("Function {} has no transformation rules", function); result.add(rule); } else { s_logger.debug("Applying transformation rules for function {}", function); action.apply(rule, result); } } return result; }
@Override protected void apply( final ResolutionRule originalRule, final Collection<ResolutionRule> output) { ParameterizedFunction function = originalRule.getFunction(); if (_parameters != null) { function = new ParameterizedFunction(originalRule.getFunction().getFunction(), _parameters); } final ComputationTargetFilter computationTargetFilter; if (_computationTargetFilter != null) { computationTargetFilter = _computationTargetFilter; } else { computationTargetFilter = originalRule.getComputationTargetFilter(); } int priority = originalRule.getPriority(); if (_priorityAdjustment != null) { priority += _priorityAdjustment; } final ResolutionRule replacement = new ResolutionRule(function, computationTargetFilter, priority); s_logger.debug("Publishing {} in place of {}", replacement, originalRule); output.add(replacement); }