Specyfikacja - problem z Boolean (null) & Sonarem

Specyfikacja - problem z Boolean (null) & Sonarem
K8
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad rok
  • Postów:131
0

Dopiero się uczę pisać specyfikacje i mam problem z Boolean & Sonarem. Chodzi o ten fragment kodu:

private Specification<RolePrivilege> atLeastOneIsTrue()
{
    return specificationsUtil.fieldEqual(RolePrivilege_.read, Boolean.TRUE).or
            (specificationsUtil.fieldEqual(RolePrivilege_.delete, Boolean.TRUE)).or
            (specificationsUtil.fieldEqual(RolePrivilege_.update, Boolean.TRUE)).or
            (specificationsUtil.fieldEqual(RolePrivilege_.creation, Boolean.TRUE));
}

Sonar przyczepił się, że Boolean może być Nullem. Zastanawiam się jak to zmienić i jakoś polegam...
Jak należałoby to poprawnie napisać?
Dzięki!

EP
  • Rejestracja:około 5 lat
  • Ostatnio:9 miesięcy
  • Postów:89
0

Tak właściwie to po co ci te np. "Boolean.TRUE", nie możesz dać tam zwykłe "true"? Oraz czy mógłbyś pokazać bardziej stacktrace i komunikat błędu, bo osobiście nie widzę tutaj możliwości wykonania NPE na tym Boolean

EP
@jarekr000000: No wiem, dlatego poprosiłem o szczegóły błędu
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
0

Nie wiem co robisz, ale może po prostu swapnij argumenty
specificationsUtil.fieldEqual(Boolean.TRUE, RolePrivilege_.read)

ale nie wiem co to jest specificationsUtil...


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
AK
@jarekr000000: z jakiej części ekosystemu ta klasa Specification ?
jarekr000000
Nie mam pojęcia.
K8
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad rok
  • Postów:131
0

Dzięki za pomoc. Zmienione. Teraz jest problem z chaining i .or. Drugie i trzecie or mu się nie podoba. Generuje taki komunikat:
Method invocation 'or' may produce 'NullPointerException'

K8
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad rok
  • Postów:131
0

Już po problemie. Wstawione nawiasy i problem zniknął.

Poprawna wersja:
private Specification<RolePrivilege> atLeastOneIsTrue()
{
return specificationsUtil.fieldEqual(RolePrivilege_.read, Boolean.TRUE).or
((specificationsUtil.fieldEqual(RolePrivilege_.delete, Boolean.TRUE)).or
((specificationsUtil.fieldEqual(RolePrivilege_.update, Boolean.TRUE)).or
(specificationsUtil.fieldEqual(RolePrivilege_.creation, Boolean.TRUE))));
}

edytowany 1x, ostatnio: Kiko88

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.