2828import org .junit .jupiter .api .Test ;
2929
3030import javax .inject .Inject ;
31+ import javax .inject .Named ;
3132import javax .ws .rs .GET ;
3233import javax .ws .rs .Path ;
3334import javax .ws .rs .Produces ;
@@ -52,13 +53,15 @@ public class ResourceInjectionIT {
5253 static final BQRuntime app = Bootique .app ("-s" )
5354 .autoLoadModules ()
5455 .module (b -> b .bind (InjectedService .class ).toInstance (service ))
56+ .module (b -> b .bind (InjectedService .class , "namedService" ).toInstance (service ))
5557 .module (b -> b .bind (UnInjectedResource .class ).toProviderInstance (() -> new UnInjectedResource (service )))
5658 .module (b -> JerseyModule .extend (b )
5759 .addFeature (ctx -> {
5860 ctx .property (TEST_PROPERTY , "x" );
5961 return false ;
6062 })
6163 .addResource (FieldInjectedResource .class )
64+ .addResource (NamedFieldInjectedResource .class )
6265 .addResource (ConstructorInjectedResource .class )
6366 .addResource (UnInjectedResource .class ))
6467 .module (jetty .moduleReplacingConnectors ())
@@ -83,6 +86,20 @@ public void testFieldInjected() {
8386 r2 .close ();
8487 }
8588
89+ @ Test
90+ public void testNamedFieldInjected () {
91+
92+ Response r1 = jetty .getTarget ().path ("nf" ).request ().get ();
93+ assertEquals (Status .OK .getStatusCode (), r1 .getStatus ());
94+ assertEquals ("nf_1_x" , r1 .readEntity (String .class ));
95+ r1 .close ();
96+
97+ Response r2 = jetty .getTarget ().path ("nf" ).request ().get ();
98+ assertEquals (Status .OK .getStatusCode (), r2 .getStatus ());
99+ assertEquals ("nf_2_x" , r2 .readEntity (String .class ));
100+ r2 .close ();
101+ }
102+
86103 @ Test
87104 public void testConstructorInjected () {
88105
@@ -127,6 +144,23 @@ public String get() {
127144 }
128145 }
129146
147+ @ Path ("/nf" )
148+ @ Produces (MediaType .TEXT_PLAIN )
149+ public static class NamedFieldInjectedResource {
150+
151+ @ Inject
152+ @ Named ("namedService" )
153+ private InjectedService service ;
154+
155+ @ Context
156+ private Configuration config ;
157+
158+ @ GET
159+ public String get () {
160+ return "nf_" + service .getNext () + "_" + config .getProperty (TEST_PROPERTY );
161+ }
162+ }
163+
130164 @ Path ("/c" )
131165 @ Produces (MediaType .TEXT_PLAIN )
132166 public static class ConstructorInjectedResource {
0 commit comments