Updated Branches: refs/heads/wicket-6.x 27fb900bf -> e30c3b9a8
WICKET-5482 Wicket-guice doesn't support @javax.inject.Named annotations (cherry picked from commit 8c17040d8a0e1a96069f9d91d116444e51385a40) Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e30c3b9a Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e30c3b9a Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e30c3b9a Branch: refs/heads/wicket-6.x Commit: e30c3b9a8cf928ce3094405504ff40b2928fc792 Parents: 3c53734 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Sun Feb 2 10:05:32 2014 +0100 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Sun Feb 2 10:06:56 2014 +0100 ---------------------------------------------------------------------- .../wicket/guice/GuiceFieldValueFactory.java | 5 ++- .../apache/wicket/guice/GuiceInjectorTest.java | 39 ++++++++++++++++++++ .../wicket/guice/JavaxInjectTestComponent.java | 21 +++++++++++ .../org/apache/wicket/guice/TestComponent.java | 20 ++++++++++ .../wicket/guice/TestComponentInterface.java | 4 ++ 5 files changed, 88 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/e30c3b9a/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceFieldValueFactory.java ---------------------------------------------------------------------- diff --git a/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceFieldValueFactory.java b/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceFieldValueFactory.java index d2b68ac..ed137f5 100644 --- a/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceFieldValueFactory.java +++ b/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceFieldValueFactory.java @@ -20,6 +20,8 @@ import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Modifier; +import javax.inject.Qualifier; + import com.google.inject.BindingAnnotation; import com.google.inject.Inject; import org.apache.wicket.WicketRuntimeException; @@ -120,7 +122,8 @@ public class GuiceFieldValueFactory implements IFieldValueFactory // Work out if we have a BindingAnnotation on this parameter. for (Annotation annotation : annotations) { - if (annotation.annotationType().getAnnotation(BindingAnnotation.class) != null) + if (annotation.annotationType().getAnnotation(BindingAnnotation.class) != null || + annotation.annotationType().getAnnotation(Qualifier.class) != null) { if (bindingAnnotation != null) { http://git-wip-us.apache.org/repos/asf/wicket/blob/e30c3b9a/wicket-guice/src/test/java/org/apache/wicket/guice/GuiceInjectorTest.java ---------------------------------------------------------------------- diff --git a/wicket-guice/src/test/java/org/apache/wicket/guice/GuiceInjectorTest.java b/wicket-guice/src/test/java/org/apache/wicket/guice/GuiceInjectorTest.java index f0c0573..26e31f1 100644 --- a/wicket-guice/src/test/java/org/apache/wicket/guice/GuiceInjectorTest.java +++ b/wicket-guice/src/test/java/org/apache/wicket/guice/GuiceInjectorTest.java @@ -16,13 +16,17 @@ */ package org.apache.wicket.guice; +import java.lang.annotation.Annotation; import java.util.HashMap; import java.util.Map; +import javax.inject.Named; + import com.google.inject.Binder; import com.google.inject.Module; import com.google.inject.Provider; import com.google.inject.TypeLiteral; +import com.google.inject.name.Names; import org.apache.wicket.Session; import org.apache.wicket.ThreadContext; import org.apache.wicket.mock.MockApplication; @@ -31,6 +35,7 @@ import org.apache.wicket.protocol.http.WebSession; import org.apache.wicket.protocol.http.mock.MockServletContext; import org.apache.wicket.request.Url; import org.apache.wicket.core.util.lang.WicketObjects; +import org.apache.wicket.util.lang.Args; import org.junit.Assert; import org.junit.Test; @@ -83,6 +88,12 @@ public class GuiceInjectorTest extends Assert return strings; } }); + + binder.bind(String.class).annotatedWith(Names.named("named1")).toInstance("NAMED_1"); + binder.bind(String.class).annotatedWith(Names.named("named2")).toInstance("NAMED_2"); + + binder.bind(String.class).annotatedWith(new Jsr330Named("named1")).toInstance("NAMED_1"); + binder.bind(String.class).annotatedWith(new Jsr330Named("named2")).toInstance("NAMED_2"); } }); @@ -125,6 +136,9 @@ public class GuiceInjectorTest extends Assert assertEquals(ITestService.RESULT, component.getInjectedTypeLiteralField().get(ITestService.RESULT)); + + assertEquals("NAMED_1", component.getNamed1()); + assertEquals("NAMED_2", component.getNamed2()); } protected TestNoComponentInterface newTestNoComponent() @@ -136,4 +150,29 @@ public class GuiceInjectorTest extends Assert { return new TestComponent(id); } + + /** + * Helper class to make binding of an instance of javax.inject.Named less verbose + */ + private static class Jsr330Named implements Named + { + private final String name; + + private Jsr330Named(String name) + { + this.name = name; + } + + @Override + public String value() + { + return name; + } + + @Override + public Class<? extends Annotation> annotationType() + { + return Named.class; + } + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/e30c3b9a/wicket-guice/src/test/java/org/apache/wicket/guice/JavaxInjectTestComponent.java ---------------------------------------------------------------------- diff --git a/wicket-guice/src/test/java/org/apache/wicket/guice/JavaxInjectTestComponent.java b/wicket-guice/src/test/java/org/apache/wicket/guice/JavaxInjectTestComponent.java index 7afd71e..5792be5 100644 --- a/wicket-guice/src/test/java/org/apache/wicket/guice/JavaxInjectTestComponent.java +++ b/wicket-guice/src/test/java/org/apache/wicket/guice/JavaxInjectTestComponent.java @@ -19,6 +19,7 @@ package org.apache.wicket.guice; import java.util.Map; import javax.inject.Inject; +import javax.inject.Named; import com.google.inject.Provider; import org.apache.wicket.Component; @@ -46,6 +47,14 @@ public class JavaxInjectTestComponent extends Component implements TestComponent @Inject private Map<String, String> injectedTypeLiteralField; + @Inject + @Named("named1") + private String named1; + + @Inject + @Named("named2") + private String named2; + private final JavaxInjectTestNoComponent noComponent; /** @@ -107,6 +116,18 @@ public class JavaxInjectTestComponent extends Component implements TestComponent return null; } + @Override + public String getNamed1() + { + return named1; + } + + @Override + public String getNamed2() + { + return named2; + } + /** * @return injectedTypeLiteralField */ http://git-wip-us.apache.org/repos/asf/wicket/blob/e30c3b9a/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponent.java ---------------------------------------------------------------------- diff --git a/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponent.java b/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponent.java index 6d065fc..01e5b70 100644 --- a/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponent.java +++ b/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponent.java @@ -50,6 +50,14 @@ public class TestComponent extends Component implements TestComponentInterface @Inject private Map<String, String> injectedTypeLiteralField; + @Inject() + @Named("named1") + private String named1; + + @Inject() + @Named("named2") + private String named2; + private final TestNoComponent noComponent; /** @@ -111,6 +119,18 @@ public class TestComponent extends Component implements TestComponentInterface return injectedOptionalField; } + @Override + public String getNamed1() + { + return named1; + } + + @Override + public String getNamed2() + { + return named2; + } + /** * @return injectedTypeLiteralField */ http://git-wip-us.apache.org/repos/asf/wicket/blob/e30c3b9a/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponentInterface.java ---------------------------------------------------------------------- diff --git a/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponentInterface.java b/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponentInterface.java index 5bc5be9..c7fb85b 100644 --- a/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponentInterface.java +++ b/wicket-guice/src/test/java/org/apache/wicket/guice/TestComponentInterface.java @@ -27,6 +27,10 @@ public interface TestComponentInterface String getInjectedOptionalField(); + String getNamed1(); + + String getNamed2(); + ITestService getInjectedFieldRed(); ITestService getInjectedFieldBlue();
