Specyfikacja - problem z Boolean (null) & Sonarem

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!

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

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...

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'

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))));
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1