Created
April 5, 2013 18:04
-
-
Save hertzsprung/5321342 to your computer and use it in GitHub Desktop.
Attempting to nest custom providers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Apr 05, 2013 7:02:41 PM com.sun.jersey.test.framework.spi.container.grizzly2.GrizzlyTestContainerFactory$GrizzlyTestContainer <init> | |
INFO: Creating low level grizzly2 container configured at the base URI http://localhost:9998/ | |
Apr 05, 2013 7:02:41 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate | |
INFO: Initiating Jersey application, version 'Jersey: 1.17.1 02/28/2013 12:47 PM' | |
Apr 05, 2013 7:02:43 PM com.sun.jersey.spi.inject.Errors processErrorMessages | |
SEVERE: The following errors and warnings have been detected with resource and/or provider classes: | |
SEVERE: Missing dependency for field: private NestedProvidersTest$Child NestedProvidersTest$ParentProvider.child | |
com.sun.jersey.test.framework.spi.container.TestContainerException: com.sun.jersey.spi.inject.Errors$ErrorMessagesException | |
at com.sun.jersey.test.framework.spi.container.grizzly2.GrizzlyTestContainerFactory$GrizzlyTestContainer.<init>(GrizzlyTestContainerFactory.java:106) | |
at com.sun.jersey.test.framework.spi.container.grizzly2.GrizzlyTestContainerFactory.create(GrizzlyTestContainerFactory.java:77) | |
at com.sun.jersey.test.framework.JerseyTest.getContainer(JerseyTest.java:345) | |
at com.sun.jersey.test.framework.JerseyTest.<init>(JerseyTest.java:220) | |
at NestedProvidersTest.<init>(NestedProvidersTest.java:22) | |
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) | |
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) | |
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) | |
at java.lang.reflect.Constructor.newInstance(Constructor.java:525) | |
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:195) | |
at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:244) | |
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) | |
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:241) | |
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) | |
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) | |
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) | |
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) | |
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) | |
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) | |
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) | |
at org.junit.runners.ParentRunner.run(ParentRunner.java:309) | |
at org.junit.runner.JUnitCore.run(JUnitCore.java:160) | |
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) | |
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195) | |
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63) | |
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) | |
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) | |
Caused by: com.sun.jersey.spi.inject.Errors$ErrorMessagesException | |
at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) | |
at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136) | |
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) | |
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770) | |
at com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:172) | |
at com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:134) | |
at com.sun.jersey.test.framework.spi.container.grizzly2.GrizzlyTestContainerFactory$GrizzlyTestContainer.<init>(GrizzlyTestContainerFactory.java:102) | |
... 29 more | |
Process finished with exit code 255 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.sun.jersey.api.core.DefaultResourceConfig; | |
import com.sun.jersey.core.spi.component.ComponentContext; | |
import com.sun.jersey.spi.inject.Injectable; | |
import com.sun.jersey.spi.inject.PerRequestTypeInjectableProvider; | |
import com.sun.jersey.test.framework.JerseyTest; | |
import com.sun.jersey.test.framework.LowLevelAppDescriptor; | |
import com.sun.jersey.test.framework.spi.container.TestContainerException; | |
import org.junit.Test; | |
import javax.ws.rs.GET; | |
import javax.ws.rs.Path; | |
import javax.ws.rs.core.Context; | |
import javax.ws.rs.ext.Provider; | |
public class NestedProvidersTest extends JerseyTest { | |
static { | |
System.setProperty("jersey.test.containerFactory", "com.sun.jersey.test.framework.spi.container.grizzly2.GrizzlyTestContainerFactory"); | |
System.setProperty("enableLogging", "true"); | |
} | |
public NestedProvidersTest() throws TestContainerException { | |
super(new LowLevelAppDescriptor.Builder(new DefaultResourceConfig(Resource.class, ParentProvider.class, ChildProvider.class)).build()); | |
} | |
@Test | |
public void test() { | |
resource().path("/").get(String.class); | |
} | |
@Path("/") | |
public static class Resource { | |
@Context private Parent parent; | |
@GET | |
public String get() { | |
return "hello"; | |
} | |
} | |
public interface Parent {} | |
public interface Child {} | |
@Provider | |
public static class ParentProvider extends PerRequestTypeInjectableProvider<Context, Parent> { | |
@Context private Child child; | |
public ParentProvider() { | |
super(Parent.class); | |
} | |
@Override | |
public Injectable<Parent> getInjectable(ComponentContext ic, Context context) { | |
return new Injectable<Parent>() { | |
@Override | |
public Parent getValue() { | |
return new Parent(){}; | |
} | |
}; | |
} | |
} | |
@Provider | |
public static class ChildProvider extends PerRequestTypeInjectableProvider<Context, Child> { | |
public ChildProvider() { | |
super(Child.class); | |
} | |
@Override | |
public Injectable<Child> getInjectable(ComponentContext ic, Context context) { | |
return new Injectable<Child>() { | |
@Override | |
public Child getValue() { | |
return new Child(){}; | |
} | |
}; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment