Uploaded image for project: 'Spring Framework'
  1. Spring Framework
  2. SPR-15756

Revisit nullability annotations towards GA

    XMLWordPrintable

    Details

    • Type: Refactoring
    • Status: Closed
    • Priority: Major
    • Resolution: Complete
    • Affects Version/s: 5.0 RC2
    • Fix Version/s: 5.0 GA
    • Component/s: Core
    • Labels:
      None

      Description

      Currently @NonNullApi can be specified at a package level only. It would be nice if there were a way to do this at a type level as well. This is of interest to users migrating to using the annotated approach to handling null values who haven't converted their entire code base appropriately and want to avoid warnings.

      For example, consider a user who wants to implement WebSessionManager. If they create an implementation, like this:

      public class MyWebSessionManager implements WebSessionManager {
      	@Override
      	public Mono<WebSession> getSession(ServerWebExchange serverWebExchange) {
      		...
      	}
      }
      

      The user is given the warning:

      Not annotated method overrides method annotated with @NonNullApi....

      To properly resolve this warning, the user would currently need to place @NonNullApi at the package level. However, any other APIs within the package would also be impacted. It would be nice if the @NonNullApi (or similar annotation) could be placed on the type level.

      Obviously in the long run, it would be good for the user to expand through the entire package. However, there is some effort involved in migrating so something supporting the type level would be valuable.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              sdeleuze S├ębastien Deleuze
              Reporter:
              rwinch Rob Winch
              Last updater:
              Spring Issues Spring Issues
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Days since last comment:
                3 years, 24 weeks, 4 days ago