package com.comphenix.xp.expressions; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import com.comphenix.xp.Action; import com.comphenix.xp.extra.ServiceProvider; public class ParameterProvider<TTarget> extends ServiceProvider<ParameterService<TTarget>> { public ParameterProvider(String defaultName) { super(defaultName); } /** * Retrieves every registered parameter. * @param action - the triggering action. * @param target - whatever is the target of this action. * @return Every registered named parameter. */ public Collection<NamedParameter> getParameters(Action action, TTarget target) { Collection<NamedParameter> result = new ArrayList<NamedParameter>(); // Retrieve the named parameters in every registered service for (ParameterService<TTarget> service : getRegisteredServices()) { Collection<NamedParameter> sublist = service.getParameters(action, target); if (sublist != null && !sublist.isEmpty()) { result.addAll(sublist); } } return result; } /** * Retrieves the name of every registered parameter. * @return The name of every registered parameter. */ public String[] getParameterNames() { Collection<String> result = new ArrayList<String>(); // Retrieve the named parameters in every registered service for (ParameterService<TTarget> service : getRegisteredServices()) { String[] sublist = service.getParameterNames(); if (sublist != null && sublist.length > 0) { result.addAll(Arrays.asList(sublist)); } } return result.toArray(new String[result.size()]); } }