/** {@inheritDoc} */ @Override public boolean contains(final String id) { return container.contains(id); }
/** {@inheritDoc} */ @Override public <O> O resolve(final String id, final Class<O> clazz) { Assertion.checkNotNull(id); Assertion.checkNotNull(clazz); //----- if (container1.contains(id)) { return container1.resolve(id, clazz); } if (container2.contains(id)) { return container2.resolve(id, clazz); } throw new VSystemException("component info with id '{0}' not found.", id); }
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; } }