[
https://issues.apache.org/jira/browse/WICKET-7145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17923364#comment-17923364
]
ASF GitHub Bot commented on WICKET-7145:
----------------------------------------
theigl commented on PR #1093:
URL: https://github.com/apache/wicket/pull/1093#issuecomment-2631517598
> > JSpecify is intended to be the defacto standard and Spring Framework
[recently
migrated](https://github.com/spring-projects/spring-framework/issues/28797) all
their annotations to it.
>
> If JSpecify's approach becomes the standard, it will be in an updated
release of the jakarta.annotation API. I do not see any reason to bring in a
non-standard dependency when the standardized Jakarta-based solution is
sufficient.
The whole nullability discussion has been going on for years. There are
findbugs annotations, checker framework annotations, jetbrains, nullaway,
javax/jakarta and many more. All of them have their advantages and
disadvantages. JSpecify is an attempt (by Google, Facebook, Uber, etc) to
standardize these annotations and define their exact **semantics**.
The jakarta.annotation package is simply not enough. There is no way using
only these annotations to define the default nullability of a
module/package/class. What does it mean now when a parameter is **not
annotated**? Does it mean it is nullable? Or is its nullability unspecified?
JSpecify solves these ambiguities.
Having said that, annotating with jakarta.annotation is probably still
better than nothing, though I would have preferred annotating with `@Nullable`
instead.
> Developer experience improvement: nullability
> ---------------------------------------------
>
> Key: WICKET-7145
> URL: https://issues.apache.org/jira/browse/WICKET-7145
> Project: Wicket
> Issue Type: Improvement
> Components: wicket
> Affects Versions: 10.4.0
> Reporter: Johan Stuyts
> Priority: Minor
> Attachments: WICKET-7145.patch
>
>
> Knowing whether a variable can be {{null}} or not, improves the developer
> experience. A first step is to add {{@Nonnull}} to parameters that are
> checked for {{{}null{}}}.
> The patch adds {{@Nonull }}to those parameters. The following has been done:
> * The annotation has been added to base and sub types, and to some overloads.
> * Conditional nullability has been taken into account.
> ** In some methods in {{Files}} the client may pass values for other
> parameters that allows the non-{{{}null{}}} parameter to be {{{}null{}}}. It
> is assumed that clients do not do this. If a client checks if the
> non-{{{}null{}}} parameter may be {{{}null{}}}, the client can better skip
> the call.
> In some hierarchies the handling of {{null}} is inconsistent. The contract of
> the base method has to be tightened, or the implementations need to be
> changed to support {{{}null{}}}:
> * {{{}org.apache.wicket.request.Response.encodeURL{}}}: the annotations has
> only be added to the implementations in {{ServletWebResponse}} and
> {{{}WebSocketResponse{}}}.
> * {{{}org.apache.wicket.request.http.WebResponse.encodeRedirectURL{}}}: the
> same holds true as above.
> *
> {{{}org.apache.wicket.request.mapper.parameter.IPageParametersEncoder.encodePageParameters{}}}:
> the annotation has only be added to the implementation in
> {{{}UrlPathPageParametersEncoder{}}}.
> In addition bugs were found and fixed:
> * The order of the parameters to {{Checks.notNull(...)}} in
> {{{}OriginResourceIsolationPolicy{}}}.
> * The order of parameters to {{assertNull(...)}} in {{BaseWicketTester}} and
> {{{}WicketTesterTest{}}}.
> The patch is quite big, but the changes are small and simple. The changes can
> be viewed here:
> https://github.com/apache/wicket/compare/master...jstuyts:wicket:add-non-null-to-parameters
--
This message was sent by Atlassian Jira
(v8.20.10#820010)