У меня есть веб-сервис Jax-RS, который я документирую с помощью Swagger. Теперь я хочу проверить параметры из аннотации @ApiOperation каждого метода, чтобы сделать некоторую фильтрацию.
@GET
@ApiOperation(value = "a description", response = String.class, hidden=true)
public static Response get(){}
Я создал ApiAuthorizationFilterImpl в соответствии с этим примером:
Я перезаписал метод isOperationAllowed:
public boolean isOperationAllowed(Operation operation, ApiDescription api, Map<String, List<String>> params, Map<String, String> cookies, Map<String, List<String>> headers) {
System.out.println("params: "+params.keySet()); //<--params is empty
}
Теперь, когда я пытаюсь получить доступ к параметрам, он пуст. Напротив, я могу распечатать параметры из operation.parameters(), но я также не могу получить к ним доступ, так как я получаю список Scala с параметрами.
Фильтр, как правило, имеет доступ при запуске Swagger-UI, поэтому он, кажется, правильно передается в моем web.xml.
Это глупая ошибка с моей стороны или как я могу получить доступ к параметрам?
В качестве обходного пути я также не против доступа к параметрам из аннотации @ApiModelProperty.
Здесь пример кода для доступа к параметрам Scala внутри метода isOperationAllowed:
@Override
public boolean isOperationAllowed( Operation operation, ApiDescription api, Map< String , List< String >> params, Map< String , String > cookies, Map< String , List< String >> headers ) {
scala.collection.immutable.List< Parameter > paramList = operation.parameters();
for ( int i = 0; i < paramList.length(); i++ ) {
Parameter myparam = paramList.apply( i );
if ( myparam.paramAccess().isDefined() && myparam.paramAccess().get().equals( "private" ) ) {
return false;
}
else {
return true;
}
}
}
Мой класс REST аннотируется следующим образом:
@POST
@ApiOperation( value = "create" )
@ApiImplicitParam( access = "private" )
public Response create( ... ) { ... }
Я думаю, что мой вопрос немного неточен, поэтому я его закрою. Я сделал ошибку, пытаясь получить доступ к атрибутам @ApiOperation, но вместо этого прочитал @ApiParams.
Чтобы уточнить мои фактические потребности, я открыл отдельный вопрос https://stackoverflow.com/questions/24868665/accessing-attribute-hidden-of-apioperation-annotation-in-swagger.