Search code examples
javarestservletsjerseyjax-rs

How to register ContainerRequestFilter and pass a variable into it?


Is there any way to register ContainerRequestFilter into ResourceConfig with passing variable into its constructor?

Following is the filter code

public class TestRequestFilter implements ContainerRequestFilter{
   String operationType;

   public TestRequestFilter (){}

   public TestRequestFilter (String opType){
      this.operationType = opType;
   }
   
   @Override
   public void filter(ContainerRequestContext requestContext) {
    // TODO Auto-generated method stub
    
   }
}

In order to register this filter I used ResourceConfig as follows

public class MyApplication extends ResourceConfig {

/**
 * Register JAX-RS application components.
 */
public MyApplication () {
    register(TestRequestFilter.class);
    register(JacksonFeature.class);
    register(CustomerResource.class);
    register(Initializer.class);
    register(JerseyResource.class);
}
}

Is there any way where I could register this filter with opType constructor?


Solution

  • Create class with a single constructor, create object and register created object.

    public class TestRequestFilter implements ContainerRequestFilter{
       private String operationType;
    
       public TestRequestFilter (String opType){
          this.operationType = opType;
       }
       
       @Override
       public void filter(ContainerRequestContext requestContext) {
           //your code
       }
    }
    

    registration:

    ResourceConfig.register(new TestRequestFilter("osType"));