У меня есть первый фильтр сервлетов
@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 классе, так как он обрабатывается какой-то другой командой.