/** {@inheritDoc} */ @Override public Set<String> keySet() { return container.keySet(); }
ComponentDualContainer(final Container container1, final Container container2) { Assertion.checkNotNull(container1); Assertion.checkNotNull(container2); //----- this.container1 = container1; this.container2 = container2; ids = new LinkedHashSet<>(); ids.addAll(container1.keySet()); ids.addAll(container2.keySet()); Assertion.checkArgument(ids.size() == container1.keySet().size() + container2.keySet().size(), "Ambiguité : il y a des ids en doublon"); }
private static Object getInjected(final Container container, final DIDependency dependency) { if (dependency.isOption()) { if (container.contains(dependency.getName())) { //On récupère la valeur et on la transforme en option. //ex : <param name="opt-port" value="a value that can be null or not"> return Optional.ofNullable(container.resolve(dependency.getName(), dependency.getType())); } // return Optional.empty(); } else if (dependency.isList()) { //on récupère la liste des objets du type concerné final List<Object> list = new ArrayList<>(); for (final String id : container.keySet()) { //On prend tous les objets ayant l'identifiant requis final boolean match = id.equals(dependency.getName()) || id.startsWith(dependency.getName() + '#'); if (match) { final Object injected = container.resolve(id, Object.class); Assertion.checkArgument(dependency.getType().isAssignableFrom(injected.getClass()), "type of {0} is incorrect ; expected : {1}", id, dependency.getType().getName()); list.add(injected); } } return Collections.unmodifiableList(list); } //----- final Object value = container.resolve(dependency.getName(), dependency.getType()); Assertion.checkNotNull(value); //----- return value; } }