Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring EL и перегруженные методы / 3 сообщений из 3, страница 1 из 1
19.09.2017, 11:05
    #39523137
13-й Пилигрим
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring EL и перегруженные методы
Есть некий сервис с методами помеченными как @PreAuthorize
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@PreAuthorize("principal.somePrincipalMethod(#request.property1, #request.property2, 'stringA', 'stringB')")
public SomeResponse someWebServiceMethod1(SomeRequest request) {
    ...
}
@PreAuthorize("principal.somePrincipalMethod(#request.property1, 'stringA', 'stringB', 'stringC')")
public SomeResponse someWebServiceMethod2(SomeRequest request) {
    ...
}
public class SomeRequest {
    Long property1;
    Long property2;
}


И есть 2 перегруженных метода в классе, реализующем UserDetails
Код: java
1.
2.
3.
4.
5.
6.
public boolean somePrincipalMethod(Long longParam1, Long longParam2, String... stringParams) {
    return true;
}
public boolean somePrincipalMethod(Long longParam, String... stringParams) {
    return true;
}


Когда вызываю
Код: java
1.
someWebServiceMethod1(new SomeRequest(1L, 2L))


срабатывает
Код: java
1.
somePrincipalMethod(1L, {"2", "stringA", "stringB"})


а не
Код: java
1.
somePrincipalMethod(1L, 2L, {"stringA", "stringB"})


Как быть?
...
Рейтинг: 0 / 0
19.09.2017, 11:28
    #39523156
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring EL и перегруженные методы
13-й ПилигримКак быть?
Засабмитить багу. Раскопать исходники и исправить.
...
Рейтинг: 0 / 0
19.09.2017, 11:39
    #39523164
13-й Пилигрим
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring EL и перегруженные методы
Blazkowicz13-й ПилигримКак быть?
Засабмитить багу. Раскопать исходники и исправить.
Не вполне уверен, что баг, а не фича.
Пока вот такой workaround:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@PreAuthorize("principal.somePrincipalMethod(#request.property1, #request.property2, {'stringA', 'stringB'})")
public SomeResponse someWebServiceMethod1(SomeRequest request) {
    ...
}
@PreAuthorize("principal.somePrincipalMethod(#request.property1, {'stringA', 'stringB', 'stringC'})")
public SomeResponse someWebServiceMethod2(SomeRequest request) {
    ...
}


и vararg's убрать
Код: java
1.
2.
3.
4.
5.
6.
public boolean somePrincipalMethod(Long longParam1, Long longParam2, String[] stringParams) {
    return true;
}
public boolean somePrincipalMethod(Long longParam, String[] stringParams) {
    return true;
}


Вроде, работает.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring EL и перегруженные методы / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]