Uses factory's type to detect Initilizable interfaces

This commit is contained in:
Lukasz Lenart
2018-01-01 15:46:13 +01:00
parent dd8ba56425
commit 4152cbc71c
@@ -57,6 +57,11 @@ public final class ContainerBuilder {
public Container create(InternalContext context) {
return context.getContainer();
}
@Override
public Class<? extends Container> type() {
return Container.class;
}
};
private static final InternalFactory<Logger> LOGGER_FACTORY =
@@ -66,6 +71,11 @@ public final class ContainerBuilder {
return member == null ? Logger.getAnonymousLogger()
: Logger.getLogger(member.getDeclaringClass().getName());
}
@Override
public Class<? extends Logger> type() {
return Logger.class;
}
};
/**
@@ -92,7 +102,7 @@ public final class ContainerBuilder {
if (scope == Scope.SINGLETON) {
singletonFactories.add(createCallableFactory(key, scopedFactory));
}
if (Initializable.class.isAssignableFrom(key.getType())) {
if (Initializable.class.isAssignableFrom(factory.type())) {
initializableFactories.add(createCallableFactory(key, scopedFactory));
}
return this;
@@ -108,6 +118,11 @@ public final class ContainerBuilder {
context.setExternalContext(null);
}
}
@Override
public Class<? extends T> type() {
return scopedFactory.type();
}
};
}
@@ -145,6 +160,11 @@ public final class ContainerBuilder {
}
}
@Override
public Class<? extends T> type() {
return factory.type();
}
@Override
public String toString() {
return new LinkedHashMap<String, Object>() {{
@@ -231,6 +251,11 @@ public final class ContainerBuilder {
return (T) constructor.construct(context, type);
}
@Override
public Class<? extends T> type() {
return implementation;
}
@Override
public String toString() {
return new LinkedHashMap<String, Object>() {{
@@ -515,6 +540,11 @@ public final class ContainerBuilder {
return value;
}
@Override
public Class<? extends T> type() {
return (Class<? extends T>) value.getClass();
}
@Override
public String toString() {
return new LinkedHashMap<String, Object>() {