[ https://issues.apache.org/jira/browse/SLING-4377?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Konrad Windszus updated SLING-4377: ----------------------------------- Description: Since consumers of the Sling API always have to keep in mind whether a null-check is necessary it would be good to add JSR 305 annotations to the API. See also http://www.mail-archive.com/dev@sling.apache.org/msg42199.html. At least Eclipse as well as Findbugs are supporting those and Oak Solr is using those already (https://issues.apache.org/jira/browse/OAK-2303). Only the following 2 annotations should be used: # {{@Nonnull}}, for return values which are not supposed to be {{null}} or parameters which must not be {{null}}. # {{@CheckForNull}}, for return values wich may be null {{null}}. Those are the only ones being supported by both Eclipse and Findbugs (compare with http://sourceforge.net/p/findbugs/bugs/1355/) {{@Nullable}} is basically ignored by Findbugs (http://findbugs.sourceforge.net/manual/annotations.html) and should therefore not be used. The package annotation for the default handling should also not be used (because either {{@Nullable}} or {{@CheckForNull}} is ignored by Eclipse then. was: Since consumers of the Sling API always have to keep in mind whether a null-check is necessary it would be good to add JSR 305 annotations to the API. See also http://www.mail-archive.com/dev@sling.apache.org/msg42199.html. At least Eclipse as well as Findbugs are supporting those and Oak Solr is using those already (https://issues.apache.org/jira/browse/OAK-2303). Only the following 3 annotations should be used: # {{@Nonnull}}, for return values which are not supposed to be {{null}}, the parameters are usually covered by the {{@ParametersAreNonNullByDefault}} annotation. # {{@CheckForNull}}, for return values wich may be null {{null}}} # {{@Nullable}}, for parameter which may be {{null}}, overwriting the {{@ParametersAreNonNullByDefault}} annotation on package/class level # {{@ParametersAreNonNullByDefault}}, should only be used o package or class level. Those are the only ones being supported by both Eclipse and Findbugs. Nullable is basically ignored by Findbugs (http://findbugs.sourceforge.net/manual/annotations.html) and should therefore not be used. Eclipse can be configured so it can deal with CheckForNull as well. Also Solr is only using {{@Nonnull}} and {{@CheckForNull}}. > Add JSR305 annotations to Sling API > ----------------------------------- > > Key: SLING-4377 > URL: https://issues.apache.org/jira/browse/SLING-4377 > Project: Sling > Issue Type: Improvement > Components: API > Reporter: Konrad Windszus > Assignee: Konrad Windszus > > Since consumers of the Sling API always have to keep in mind whether a > null-check is necessary it would be good to add JSR 305 annotations to the > API. > See also http://www.mail-archive.com/dev@sling.apache.org/msg42199.html. > At least Eclipse as well as Findbugs are supporting those and Oak Solr is > using those already (https://issues.apache.org/jira/browse/OAK-2303). > Only the following 2 annotations should be used: > # {{@Nonnull}}, for return values which are not supposed to be {{null}} or > parameters which must not be {{null}}. > # {{@CheckForNull}}, for return values wich may be null {{null}}. > Those are the only ones being supported by both Eclipse and Findbugs (compare > with http://sourceforge.net/p/findbugs/bugs/1355/) > {{@Nullable}} is basically ignored by Findbugs > (http://findbugs.sourceforge.net/manual/annotations.html) and should > therefore not be used. The package annotation for the default handling should > also not be used (because either {{@Nullable}} or {{@CheckForNull}} is > ignored by Eclipse then. -- This message was sent by Atlassian JIRA (v6.3.4#6332)