2015-02-05 9:59 GMT+01:00 Konrad Windszus <[email protected]>:

> I created https://issues.apache.org/jira/browse/SLING-4377 <
> https://issues.apache.org/jira/browse/SLING-4377> to track that.
> But I just faced another problem:
> I can make Eclipse only understand one type of nullable annotation: So
> either @Nullable or @CheckForNull.
> The problem now is, that I would need to rely on both for Findbugs if I
> also want to leverage the @ParametersAreNonNullByDefault. I opened the bug
> https://sourceforge.net/p/findbugs/bugs/1355/ <
> https://sourceforge.net/p/findbugs/bugs/1355/> about this different
> behaviour between Eclipse and Windbags
>
> In Oak Solr this was solved by not using the class/package annotation
> @ParametersAreNonNullByDefault. But that way writing the annotations is
> quite verbose, because in most of the cases, parameters are not supposed to
> be null!
> I would need to annotate all of those with @NonNull (because @Nullable is
> the default then!)
>

actually it's like that for Oak generally, not just for Oak Solr; apart
from that the side effect of what you noticed is, in my experience, not so
negative: meaning that your IDE (Eclipse, IDEA do it IIRC) will suggest you
to add the relevant annotations also to the implementors of a certain API
to avoid seeing "warnings", which in the end leads to a better awareness of
the contract to who's writing such an API implementation ending up with
annotating also the implementation methods with the right one
(@CheckForNull or @Nullable).

My 2 cents,
Tommaso


>
> Do you have any other idea how to deal with that except for limiting
> oneself to only @CheckForNull and @NonNull?
>
> Thanks a lot for any input on that
> Konrad
>
>
> > On 02 Feb 2015, at 09:10, Konrad Windszus <[email protected]> wrote:
> >
> > Indeed Eclipse supports configurable annotations. You can find the
> information at
> http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fpreferences%2Fjava%2Fcompiler%2Fref-preferences-errors-warnings.htm&anchor=null_annotation_names
> <
> http://help.eclipse.org/juno/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/preferences/java/compiler/ref-preferences-errors-warnings.htm&anchor=null_annotation_names>.
> Therefore it will probably make sense to use the JSR305 annotations.
> > I will create a feature branch where I will add those annotations for
> Sling API as well as Sling Models and Sling Validation.
> > Thanks for your input.
> >
> >> On 30 Jan 2015, at 13:59, Robert Munteanu <[email protected] <mailto:
> [email protected]>> wrote:
> >>
> >> On Fri, Jan 30, 2015 at 2:55 PM, Konrad Windszus <[email protected]
> <mailto:[email protected]>> wrote:
> >>> The question for me is whether we should rely on the dormant standard
> (which did never release anything officially) 305, because that is not
> supported by Eclipse or whether we should use something else?
> >>> Any ideas, opinions on that?
> >>> What is your experience with the JSR305 javax.annotation support in
> major IDEs (see also
> http://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i-use
> <
> http://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i-use>
> <
> http://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i-use
> <
> http://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i-use
> >>)?
> >>
> >> AFAIR for Eclipse you can configure the annotation types to use ( see
> >> [1] ) . But of course we'd need to validate this before starting
> >> conversions.
> >>
> >> Robert
> >>
> >>
> >> [1]:
> http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-using_null_annotations.htm
> <
> http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-using_null_annotations.htm
> >
> >>
> >>> Konrad
> >>>
> >>>> On 30 Jan 2015, at 13:37, Robert Munteanu <[email protected]
> <mailto:[email protected]>> wrote:
> >>>>
> >>>> On Fri, Jan 30, 2015 at 2:15 PM, Konrad Windszus <[email protected]
> <mailto:[email protected]>> wrote:
> >>>>> What about adding annotations like
> https://code.google.com/p/jsr-305/source/browse/trunk/ri/src/main/java/javax/annotation/CheckForNull.java
> <
> https://code.google.com/p/jsr-305/source/browse/trunk/ri/src/main/java/javax/annotation/CheckForNull.java>
> <
> https://code.google.com/p/jsr-305/source/browse/trunk/ri/src/main/java/javax/annotation/CheckForNull.java
> <
> https://code.google.com/p/jsr-305/source/browse/trunk/ri/src/main/java/javax/annotation/CheckForNull.java>>
> to the Sling API?
> >>>>
> >>>> +1
> >>>>
> >>>> I wonder if there is a static analyser which can fail the build when
> >>>> violations are found, e.g. immediately dereferencing the result of a
> >>>> method which is @Nullable.
> >>>>
> >>>> Robert
> >>>
> >>
> >>
> >>
> >> --
> >> Sent from my (old) computer
> >
>
>

Reply via email to