From 4152cbc71cf787fb1711e7832ecaf6bafe756dba Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Mon, 1 Jan 2018 15:46:13 +0100 Subject: [PATCH] Uses factory's type to detect Initilizable interfaces --- .../xwork2/inject/ContainerBuilder.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/opensymphony/xwork2/inject/ContainerBuilder.java b/core/src/main/java/com/opensymphony/xwork2/inject/ContainerBuilder.java index 4fbae8ee2..e62d01314 100644 --- a/core/src/main/java/com/opensymphony/xwork2/inject/ContainerBuilder.java +++ b/core/src/main/java/com/opensymphony/xwork2/inject/ContainerBuilder.java @@ -57,6 +57,11 @@ public final class ContainerBuilder { public Container create(InternalContext context) { return context.getContainer(); } + + @Override + public Class type() { + return Container.class; + } }; private static final InternalFactory LOGGER_FACTORY = @@ -66,6 +71,11 @@ public final class ContainerBuilder { return member == null ? Logger.getAnonymousLogger() : Logger.getLogger(member.getDeclaringClass().getName()); } + + @Override + public Class 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 type() { + return scopedFactory.type(); + } }; } @@ -145,6 +160,11 @@ public final class ContainerBuilder { } } + @Override + public Class type() { + return factory.type(); + } + @Override public String toString() { return new LinkedHashMap() {{ @@ -231,6 +251,11 @@ public final class ContainerBuilder { return (T) constructor.construct(context, type); } + @Override + public Class type() { + return implementation; + } + @Override public String toString() { return new LinkedHashMap() {{ @@ -515,6 +540,11 @@ public final class ContainerBuilder { return value; } + @Override + public Class type() { + return (Class) value.getClass(); + } + @Override public String toString() { return new LinkedHashMap() {