Uploaded image for project: 'RESTEasy'
  1. RESTEasy
  2. RESTEASY-353

Constructor injection does not work for Providers

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 2.0-beta-2
    • 1.2.1.GA
    • None
    • None
    • Release Notes

      The spec requires constructor injection to be applied when a new instance of a Provider is being created (see section 4.1.1) The following provider shows that this does not work in RESTEasy

      @Provider
      @Produces("text/plain")
      public class SimpleProvider implements MessageBodyWriter<String>
      {
      
         public SimpleProvider(@Context Providers providers) {
            if (providers == null)
            {
               throw new NullPointerException("providers");
            }
         }
         
         public long getSize(String t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType)
         {
            return 5;
         }
      
         public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType)
         {
            return (String.class.isAssignableFrom(type)) && mediaType.isCompatible(MediaType.TEXT_PLAIN_TYPE);
         }
      
         public void writeTo(String t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException
         {
            OutputStreamWriter writer = new OutputStreamWriter(entityStream);
            writer.write("yeah!");
            writer.flush();
         }
      }
      
      java.lang.RuntimeException: Unable to instantiate MessageBodyWriter                                                                                                                       
              at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:789)                                                                              
              at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:760)                                                                              
              at org.jboss.resteasy.spi.ResteasyDeployment.registerProvider(ResteasyDeployment.java:296)                                                                                        
              at org.jboss.resteasy.spi.ResteasyDeployment.registration(ResteasyDeployment.java:181)                                                                                            
              at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:146)                                                                                                   
              at org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap.contextInitialized(ResteasyBootstrap.java:29)                                                                      
              at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3910)                                                                                              
              at org.apache.catalina.core.StandardContext.start(StandardContext.java:4389)                                                                                                      
              at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:333)                                                                       
              at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:150)                                                                               
              at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:462)                                                                                            
              at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)                                                                                                              
              at org.jboss.web.deployers.WebModule.start(WebModule.java:97)                                                                                                                     
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                                                                                                                    
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)                                                                                                  
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)                                                                                          
              at java.lang.reflect.Method.invoke(Method.java:597)                                                                                                                               
              at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)                                                                                              
              at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)                                                                                                                    
              at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)                                                                                                                      
              at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)                                                                                                 
              at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)                                                                                                           
              at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:207)                                                                                                     
              at $Proxy38.start(Unknown Source)                                                                                                                                                 
              at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)                                                                       
              at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)                                                                       
              at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)                                                   
              at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)                                                               
              at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)                                                                
              at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)                                                                             
              at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:298)                                                                            
              at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1633)                                                                                          
              at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:935)                                                                                    
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1083)                                                                                  
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:985)                                                                                   
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:823)                                                                                            
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)                                                                                            
              at org.jboss.system.ServiceController.doChange(ServiceController.java:689)                                                                                                        
              at org.jboss.system.ServiceController.start(ServiceController.java:461)                                                                                                           
              at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)                                                                                                     
              at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99)                                                                                                     
              at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)                                                                                                     
              at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)                                                         
              at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)                                                                             
              at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179)                                                                                         
              at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1448)                                                                                          
              at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1166)                                                                              
              at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1187)                                                                              
              at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1107)                                                                                           
              at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)                                                                             
              at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1633)                                                                                          
              at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:935)                                                                                    
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1083)                                                                                  
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:985)                                                                                   
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:823)                                                                                            
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)                                                                                            
              at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:783)                                                                                            
              at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:699)                                                                                           
              at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)                                                                    
              at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:371)                                                                                            
              at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:256)                                                                                             
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)                                                                                                        
              at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)                                                                                                     
              at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)                                                                                                               
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)                                                           
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)                                                         
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)                                                                 
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)                                                                                            
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)                                                                                                
              at java.lang.Thread.run(Thread.java:619)                                                                                                                                          
      Caused by: java.lang.RuntimeException: java.lang.InstantiationException: org.jboss.resteasy.test.smoke.SimpleProvider                                                                     
              at org.jboss.resteasy.spi.ResteasyProviderFactory.addMessageBodyWriter(ResteasyProviderFactory.java:498)                                                                          
              at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:785)                                                                              
              ... 69 more                                                                                                                                                                       
      Caused by: java.lang.InstantiationException: org.jboss.resteasy.test.smoke.SimpleProvider                                                                                                 
              at java.lang.Class.newInstance0(Class.java:340)                                                                                                                                   
              at java.lang.Class.newInstance(Class.java:308)                                                                                                                                    
              at org.jboss.resteasy.spi.ResteasyProviderFactory.addMessageBodyWriter(ResteasyProviderFactory.java:494)                                                                          
              ... 70 more
      

            rhn-engineering-jharting Jozef Hartinger
            rhn-engineering-jharting Jozef Hartinger
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: