Skip to content

Refine JSpecify annotations #46926

@mhalbritter

Description

@mhalbritter

Continuation of #46587.

High

  • Add nullability to org.springframework.boot.json.JsonWriter (it's currently @NullUnmarked). Fixed in 0623275
  • Review if org.springframework.boot.metrics.autoconfigure.export.properties.PropertiesConfigAdapter.Getter is fine for us. Alternative: Rewrite with if.
  • Update PropertyMapper to better support nullability #47024 Take another look at org.springframework.boot.context.properties.PropertyMapper, especially alwaysApplyingWhenNonNull and whenNonNull (draft is in this branch)
  • Run IntelliJ IDEA null checks and fix issues
  • Check if org.springframework.boot.actuate.endpoint.SanitizableData#key can really be null. org.springframework.boot.actuate.endpoint.SanitizableData#getLowerCaseKey suggests so, but all the callers pass non-nullable strings.
  • Review org.springframework.boot.context.config.ConfigDataLocation#of API. It's not possible to add a contract !null -> !null which makes it hard for users of that class. See Make ConfigDataLocation.of non-nullable #47221.

Medium

  • Review org.springframework.boot.hibernate.SpringJtaPlatform#locateTransactionManager and org.springframework.boot.hibernate.SpringJtaPlatform#locateUserTransaction
  • Review Mono.from(null) in org.springframework.boot.webflux.actuate.endpoint.web.AbstractWebFluxEndpointHandlerMapping.ReactiveWebOperationAdapter#handleResult
  • Review Mono.error(getError(request))) in org.springframework.boot.webflux.autoconfigure.error.DefaultErrorWebExceptionHandler#renderErrorView
  • Review org.springframework.boot.ResourceBanner#createNullDefaultSources. Eventually a MapPropertySource from a map containing null values is created, which shouldn't be possible according to the annotations on MapPropertySource.
  • Review org.springframework.boot.context.properties.source.MapConfigurationPropertySource#put. It puts a null key in this.source, which is then used with MapPropertySource, which doesn't accept null keys (at least according to the annotations).
  • Review org.springframework.boot.test.json.JsonContentAssert#compare(java.lang.CharSequence, org.skyscreamer.jsonassert.JSONCompareMode) when passing null as first parameter
  • Review map.from(this.properties::getLocale).to(configurer::setLocale); in org.springframework.boot.groovy.template.autoconfigure.GroovyTemplateAutoConfiguration.GroovyMarkupConfiguration#groovyMarkupConfigurer

Low

To decide

  • Do we want to null-check buildSrc?
  • Do we want to null-check spring-boot-configuration-metadata?
  • Do we want to null-check spring-boot-configuration-metadata-changelog-generator?
  • Do we want to null-check / add annotations to spring-boot-docs?

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions