Commit 5ef21f7
committed
refactor: migrate nullability annotations from SpotBugs to JSpecify
Replaces legacy JSR-305/SpotBugs annotations with the modern JSpecify
standard across the framework. This resolves longstanding JPMS split-package
warnings (javax.annotation), lightens the dependency tree, and modernizes
null-safety contracts.
Core & Global Changes:
- Removed `spotbugs-annotations` and `jsr305` dependencies entirely.
- Added `org.jspecify:jspecify` as the unified nullability standard.
- Swapped `@ReturnValuesAreNonnullByDefault` for `@NullMarked` in packages.
- Cleaned up redundant `@NonNull` annotations. JSpecify's `@NullMarked`
applies a non-null default to the entire scope (returns, parameters,
and fields), making explicit non-null declarations unnecessary.
jooby-apt (Annotation Processing):
- Added support for Type-Use annotations.
- Processors now correctly check both the element declaration AND the
underlying return/parameter types (`asType().getAnnotationMirrors()`)
to resolve nullability, fixing the visibility gap between legacy
declaration annotations and modern type-use annotations.
jooby-openapi (ASM Bytecode Parsing):
- Overhauled parameter annotation extraction to gather type annotations
(`visibleTypeAnnotations` & `invisibleTypeAnnotations`) alongside
standard parameter arrays.
- Hardened nullability detection: replaced hardcoded JetBrains/SpotBugs
descriptors with flexible substring matching ("Nullable", "NonNull",
"NotNull"). The OpenAPI generator is now fully library-agnostic and
will correctly parse JSpecify, JetBrains, Lombok, or SpotBugs annotations.
- fix #39061 parent 10a2417 commit 5ef21f7
488 files changed
Lines changed: 3037 additions & 3425 deletions
File tree
- docs/src/main/java/io/jooby/adoc
- jooby
- src
- main/java
- io/jooby
- annotation
- exception
- handler
- internal
- handler
- output
- reflect
- output
- problem
- rpc/grpc
- validation
- value
- test/java/io/jooby
- modules
- jooby-apt/src
- main/java/io/jooby/internal/apt
- test/java
- source
- tests
- i1807
- i1814
- i2325
- i2405
- i2408
- i3455
- i3460
- i3507
- i3864
- jooby-avaje-inject
- src/main/java
- io/jooby/avaje/inject
- jooby-avaje-jsonb/src/main/java
- io/jooby/avaje/jsonb
- jooby-avaje-validator/src/main/java
- io/jooby/avaje/validator
- jooby-awssdk-v1/src/main/java/io/jooby/awssdkv1
- jooby-awssdk-v2/src/main/java
- io/jooby/awssdkv2
- jooby-caffeine/src/main/java
- io/jooby/caffeine
- jooby-camel
- src/main/java/io/jooby/camel
- jooby-cli
- src/main/java/io/jooby
- cli
- internal/cli
- jooby-commons-email/src/main/java/io/jooby/commons/mail
- jooby-conscrypt/src/main/java
- io/jooby/conscrypt
- jooby-db-scheduler/src/main/java
- io/jooby/dbscheduler
- jooby-ebean/src/main/java
- io/jooby/ebean
- jooby-flyway/src/main/java/io/jooby/flyway
- jooby-freemarker/src/main/java
- io/jooby/freemarker
- jooby-gradle-plugin/src/main/java/io/jooby/gradle
- jooby-graphiql/src/main/java
- io/jooby/graphiql
- jooby-graphql/src/main/java
- io/jooby
- graphql
- internal/graphql
- jooby-grpc/src/main/java
- io/jooby
- grpc
- internal/grpc
- jooby-gson/src/main/java
- io/jooby/gson
- jooby-guice/src/main/java
- io/jooby/guice
- jooby-handlebars/src/main/java
- io/jooby
- handlebars
- internal/handlebars
- jooby-hibernate-validator/src/main/java
- io/jooby/hibernate/validator
- jooby-hibernate/src/main/java
- io/jooby/hibernate
- jooby-hikari/src/main/java
- io/jooby/hikari
- jooby-jackson3/src/main/java
- io/jooby/jackson3
- jooby-jackson/src/main/java
- io/jooby/jackson
- jooby-jasypt/src/main/java/io/jooby/jasypt
- jooby-javadoc/src/test/java/io/jooby/javadoc/input
- jooby-jdbi/src/main/java
- io/jooby/jdbi
- jooby-jetty/src/main/java
- io/jooby
- internal/jetty
- jetty
- jooby-jsonrpc-avaje-jsonb/src/main/java
- io/jooby/jsonrpc/avaje/jsonb
- jooby-jsonrpc-jackson2/src/main/java
- io/jooby/jsonrpc/jackson2
- jooby-jsonrpc-jackson3/src/main/java
- io/jooby/jsonrpc/jackson3
- jooby-jsonrpc/src/main/java
- io/jooby/jsonrpc
- jooby-jstachio/src/main/java
- io/jooby/jstachio
- jooby-jte/src/main/java
- io/jooby
- internal/jte
- jte
- jooby-jwt/src/main/java/io/jooby/jwt
- jooby-kafka/src/main/java/io/jooby/kafka
- jooby-kotlin/src/main/kotlin/io/jooby/kt
- jooby-langchain4j/src
- main/java/io/jooby
- internal/langchain4j
- langchain4j
- test/java/io/jooby/langchain4j
- jooby-log4j/src/main/java
- io/jooby/log4j
- jooby-logback/src/main/java
- io/jooby/logback
- jooby-maven-plugin/src/main/java/io/jooby/maven
- jooby-mcp-jackson2/src/main/java/io/jooby/mcp/jackson2
- jooby-mcp-jackson3/src/main/java/io/jooby/mcp/jackson3
- jooby-mcp/src/main/java/io/jooby
- internal/mcp
- mcp
- jooby-metrics/src/main/java
- io/jooby/metrics
- jooby-mutiny
- src/main/java
- io/jooby/mutiny
- jooby-netty/src/main/java
- io/jooby
- internal/netty
- netty
- jooby-openapi/src
- main/java
- io/jooby
- internal/openapi
- asciidoc
- display
- openapi
- test
- java
- examples
- issues
- i2542
- i3412
- kotlin/kt/i3746
- jooby-opentelemetry/src/main/java
- io/jooby/opentelemetry
- jooby-pac4j/src/main/java
- io/jooby
- internal/pac4j
- pac4j
- jooby-pebble/src/main/java
- io/jooby/pebble
- jooby-quartz/src/main/java/io/jooby
- internal/quartz
- quartz
- jooby-reactor
- src/main/java
- io/jooby/reactor
- jooby-redis/src/main/java
- io/jooby/redis
- jooby-rocker/src/main/java/io/jooby
- internal
- rocker
- jooby-rxjava3
- src/main/java
- io/jooby/rxjava3
- jooby-test/src/main/java
- io/jooby/test
- jooby-thymeleaf/src/main/java
- io/jooby
- internal/thymeleaf
- thymeleaf
- jooby-trpc-avaje-jsonb/src/main/java
- io/jooby/trpc/avaje/jsonb
- jooby-trpc-jackson2/src/main/java
- io/jooby/trpc/jackson2
- jooby-trpc-jackson3/src/main/java
- io/jooby/trpc/jackson3
- jooby-trpc/src/main/java
- io/jooby/trpc
- jooby-undertow/src/main/java
- io/jooby
- internal/undertow
- undertow
- jooby-vertx-mysql-client/src/main/java/io/jooby/vertx/mysqlclient
- jooby-vertx-pg-client/src/main/java/io/jooby/vertx/pgclient
- jooby-vertx-sql-client/src/main/java/io/jooby
- internal/vertx/sqlclient
- vertx/sqlclient
- jooby-vertx/src/main/java
- io/jooby
- internal/vertx
- vertx
- jooby-whoops/src/main/java/io/jooby
- internal/whoops
- whoops
- jooby-yasson/src/main/java
- io/jooby/yasson
- tests/src/test/java/io/jooby
- i1786
- i2325
- i2352
- i2613
- i3813
- i3814
- i3863
- i3868
- junit
- test
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
12 | 11 | | |
13 | 12 | | |
14 | 13 | | |
| |||
145 | 144 | | |
146 | 145 | | |
147 | 146 | | |
148 | | - | |
149 | 147 | | |
150 | 148 | | |
151 | 149 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
18 | | - | |
| 17 | + | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | 12 | | |
15 | 13 | | |
16 | 14 | | |
| |||
26 | 24 | | |
27 | 25 | | |
28 | 26 | | |
29 | | - | |
| 27 | + | |
30 | 28 | | |
31 | 29 | | |
32 | 30 | | |
| |||
36 | 34 | | |
37 | 35 | | |
38 | 36 | | |
39 | | - | |
| 37 | + | |
40 | 38 | | |
41 | 39 | | |
42 | 40 | | |
| |||
47 | 45 | | |
48 | 46 | | |
49 | 47 | | |
50 | | - | |
| 48 | + | |
51 | 49 | | |
52 | 50 | | |
53 | 51 | | |
| |||
57 | 55 | | |
58 | 56 | | |
59 | 57 | | |
60 | | - | |
| 58 | + | |
61 | 59 | | |
62 | 60 | | |
63 | 61 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
18 | | - | |
| 17 | + | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
| 42 | + | |
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | | - | |
| 102 | + | |
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
119 | | - | |
| 119 | + | |
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| |||
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
130 | | - | |
| 130 | + | |
131 | 131 | | |
132 | 132 | | |
133 | 133 | | |
| |||
136 | 136 | | |
137 | 137 | | |
138 | 138 | | |
139 | | - | |
| 139 | + | |
140 | 140 | | |
141 | 141 | | |
142 | 142 | | |
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
152 | | - | |
| 152 | + | |
153 | 153 | | |
154 | 154 | | |
155 | 155 | | |
| |||
161 | 161 | | |
162 | 162 | | |
163 | 163 | | |
164 | | - | |
| 164 | + | |
165 | 165 | | |
166 | 166 | | |
167 | 167 | | |
| |||
172 | 172 | | |
173 | 173 | | |
174 | 174 | | |
175 | | - | |
| 175 | + | |
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
| |||
183 | 183 | | |
184 | 184 | | |
185 | 185 | | |
186 | | - | |
| 186 | + | |
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
12 | | - | |
| 11 | + | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
| 47 | + | |
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
132 | | - | |
| 132 | + | |
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| |||
141 | 141 | | |
142 | 142 | | |
143 | 143 | | |
144 | | - | |
| 144 | + | |
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
| |||
157 | 157 | | |
158 | 158 | | |
159 | 159 | | |
160 | | - | |
| 160 | + | |
161 | 161 | | |
162 | 162 | | |
163 | 163 | | |
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
173 | | - | |
| 173 | + | |
174 | 174 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | 12 | | |
15 | 13 | | |
16 | 14 | | |
| |||
28 | 26 | | |
29 | 27 | | |
30 | 28 | | |
31 | | - | |
| 29 | + | |
32 | 30 | | |
33 | 31 | | |
34 | 32 | | |
| |||
40 | 38 | | |
41 | 39 | | |
42 | 40 | | |
43 | | - | |
| 41 | + | |
44 | 42 | | |
45 | 43 | | |
46 | 44 | | |
| |||
0 commit comments