private <T> ModuleItem<T> getSingleItem( final Module module, final Class<T> type, final Iterable<ModuleItem<?>> items) { ModuleItem<T> result = null; for (final ModuleItem<?> item : items) { final String name = item.getName(); final boolean resolved = module.isResolved(name); if (resolved) continue; // skip resolved inputs if (!type.isAssignableFrom(item.getType())) continue; if (result != null) return null; // multiple matching items @SuppressWarnings("unchecked") final ModuleItem<T> typedItem = (ModuleItem<T>) item; result = typedItem; } return result; }
@Override public void removeOutput(final ModuleItem<?> output) { outputMap().remove(output.getName()); outputList().remove(output); }
@Override public void addOutput(final ModuleItem<?> output) { outputMap().put(output.getName(), output); outputList().add(output); }
@Override public void removeInput(final ModuleItem<?> input) { inputMap().remove(input.getName()); inputList().remove(input); }
@Override public void addInput(final ModuleItem<?> input) { inputMap().put(input.getName(), input); inputList().add(input); }