Вызов одного сервлетного фильтра из другого сервлетного фильтра - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть первый фильтр сервлетов

@FilterClass(AuthorizationWrapperFilterImpl.class)
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@APIAnnotationDocumentation(
    name = "AUTHORIZATION",
    template = "[[authorization]]"
)
public @interface AuthorizationFilterWrapper {
  AuthorizationEnvironment environmet();
}

Реализация этого

public class AuthorizationWrapperFilterImpl extends APIFilter<AuthorizationFilterWrapper> {
  @Override
  public boolean onFilterRequest(RequestContext ctx, AuthorizationFilterWrapper value) throws Exception { 
    //some code  
}

 @Override
  public void onFilterResponse(RequestContext ctx, AuthorizationFilterWrapper value) throws Exception {

  }

  @Override
  public void onResponseException(RequestContext ctx,   AuthorizationFilterWrapper authorizationFilterWrapper, Exception invocationException) throws Exception {

  }
}

AuthorizationWrapperFilterImpl вызывается из класса PublicAPIImpl

public class PublicAPIImpl extends PublicAPI { }

Есть еще один сервлет PublicAPIFilter , который я хочу вызвать из AuthorizationWrapperFilterImpl .

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@APIAnnotationDocumentation(
    name = "AUTHORIZATION",
    template = "[[authorization]]"
)
public @interface PublicAPIAuthorization {
  SessionAuthorization authorization();
}

Реализация этого

public class PublicAPIFilter extends APIFilter<PublicAPIAuthorization> {
   @Override
  public boolean onFilterRequest(RequestContext ctx, PublicAPIAuthorization value) throws Exception {
  //some logic
 }

@Override
  public void onFilterResponse(RequestContext ctx, PublicAPIAuthorization value) throws Exception {
    // no-op.
  }

  @Override
  public void onResponseException(RequestContext ctx, PublicAPIAuthorization 
  publicAPIAuthorization, Exception invocationException) throws Exception {
    // no-op.
  }
}

Я не могу внести какие-либо изменения в web. xml или изменить код в PublicAPIFilter классе, так как он обрабатывается какой-то другой командой.

...