Skip to content

Commit

Permalink
Properly handle scenario where no objects are found, and improve fail…
Browse files Browse the repository at this point in the history
…ure logging.
  • Loading branch information
israelcolomer committed Nov 22, 2016
1 parent ba1529c commit 6db2638
Showing 1 changed file with 13 additions and 7 deletions.
Expand Up @@ -5,6 +5,8 @@
import foundation.stack.datamill.configuration.impl.Classes;
import foundation.stack.datamill.reflection.impl.TypeSwitch;
import foundation.stack.datamill.values.Value;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rx.functions.Action1;

import java.lang.reflect.Constructor;
Expand Down Expand Up @@ -126,6 +128,7 @@ protected Object defaultCase(Value value, Void __) {

private final Multimap<Class<?>, Object> members = HashMultimap.create();
private final Map<String, Object> named = new HashMap<>();
private static final Logger logger = LoggerFactory.getLogger(Wiring.class);

private void add(Class<?> clazz, Object addition) {
members.put(clazz, addition);
Expand Down Expand Up @@ -305,15 +308,16 @@ private <T> T constructWithConstructor(Class<T> clazz, Constructor<?> constructo
Parameter[] parameters = constructor.getParameters();
Object[] values = new Object[parameters.length];

boolean unsatisfied = false;
List<Object> missingDependencies = new ArrayList<>();
for (int i = 0; i < parameters.length; i++) {
values[i] = getValueForParameter(parameters[i]);
if (values[i] == null) {
unsatisfied = true;
missingDependencies.add(parameters[i]);
}
}

if (unsatisfied) {
if (!missingDependencies.isEmpty()) {
logger.error("Could not build class {} as the following dependencies were not found {}", clazz, missingDependencies);
return null;
}

Expand Down Expand Up @@ -402,8 +406,9 @@ private Object getObjectOfType(Class<?> type) {
if (values.size() == 1) {
return values.iterator().next();
}

throw new IllegalStateException("Multiple objects in graph match type " + type.getName());
else if (values.size() > 1) {
throw new IllegalStateException("Multiple objects in graph match type " + type.getName());
}
}

return null;
Expand All @@ -427,8 +432,9 @@ private Object getValueOfType(Class<?> type) {
if (casted.size() == 1) {
return casted.iterator().next();
}

throw new IllegalStateException("Multiple objects in graph match type " + type.getName());
else if(casted.size() > 1) {
throw new IllegalStateException("Multiple objects in graph match type " + type.getName());
}
}

return null;
Expand Down

0 comments on commit 6db2638

Please sign in to comment.