Skip to content

Commit d076903

Browse files
authored
consistently use javax.annotations annotations for Nullable and Nonnull (eclipse-openvsx#1600)
1 parent 7874cec commit d076903

15 files changed

Lines changed: 148 additions & 162 deletions

server/src/main/java/org/eclipse/openvsx/cache/ExpiredFileListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111

1212
import com.github.benmanes.caffeine.cache.RemovalCause;
1313
import com.github.benmanes.caffeine.cache.RemovalListener;
14-
import org.jspecify.annotations.Nullable;
1514
import org.slf4j.Logger;
1615
import org.slf4j.LoggerFactory;
1716

17+
import javax.annotation.Nullable;
1818
import java.io.IOException;
1919
import java.nio.file.Files;
2020
import java.nio.file.Path;

server/src/main/java/org/eclipse/openvsx/scanning/ExtensionScanPersistenceService.java

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
import org.eclipse.openvsx.repositories.ScannerJobRepository;
2323
import org.slf4j.Logger;
2424
import org.slf4j.LoggerFactory;
25-
import org.springframework.lang.NonNull;
26-
import org.springframework.lang.Nullable;
2725
import org.springframework.stereotype.Service;
2826

27+
import javax.annotation.Nonnull;
28+
import javax.annotation.Nullable;
2929
import java.time.LocalDateTime;
3030
import java.util.Collections;
3131
import java.util.Map;
@@ -75,14 +75,14 @@ public ExtensionScanPersistenceService(
7575
* Creates and persists a new scan record BEFORE an extension version exists.
7676
*/
7777
@Transactional(TxType.REQUIRES_NEW)
78-
@NonNull
78+
@Nonnull
7979
public ExtensionScan initializeScan(
80-
@NonNull String namespaceName,
81-
@NonNull String extensionName,
82-
@NonNull String version,
80+
@Nonnull String namespaceName,
81+
@Nonnull String extensionName,
82+
@Nonnull String version,
8383
@Nullable String targetPlatform,
8484
@Nullable String displayName,
85-
@NonNull UserData user
85+
@Nonnull UserData user
8686
) {
8787
var isUniversal = targetPlatform == null || "universal".equals(targetPlatform);
8888
if (displayName == null || displayName.isBlank()) {
@@ -141,7 +141,7 @@ private ExtensionScan initializeScanInternal(
141141
* Persists a status change. The caller is responsible for validating the transition.
142142
*/
143143
@Transactional(TxType.REQUIRES_NEW)
144-
public void updateStatus(@NonNull ExtensionScan scan, @NonNull ScanStatus newStatus) {
144+
public void updateStatus(@Nonnull ExtensionScan scan, @Nonnull ScanStatus newStatus) {
145145
scan.setStatus(newStatus);
146146
repositories.saveExtensionScan(scan);
147147
}
@@ -150,7 +150,7 @@ public void updateStatus(@NonNull ExtensionScan scan, @NonNull ScanStatus newSta
150150
* Persists a terminal status change with completion timestamp.
151151
*/
152152
@Transactional(TxType.REQUIRES_NEW)
153-
public void completeWithStatus(@NonNull ExtensionScan scan, @NonNull ScanStatus newStatus) {
153+
public void completeWithStatus(@Nonnull ExtensionScan scan, @Nonnull ScanStatus newStatus) {
154154
scan.setStatus(newStatus);
155155
scan.setCompletedAt(LocalDateTime.now());
156156
repositories.saveExtensionScan(scan);
@@ -160,7 +160,7 @@ public void completeWithStatus(@NonNull ExtensionScan scan, @NonNull ScanStatus
160160
* Persists an error status with message.
161161
*/
162162
@Transactional(TxType.REQUIRES_NEW)
163-
public void markAsErrored(@NonNull ExtensionScan scan, @Nullable String errorMessage) {
163+
public void markAsErrored(@Nonnull ExtensionScan scan, @Nullable String errorMessage) {
164164
scan.setStatus(ScanStatus.ERRORED);
165165
scan.setErrorMessage(errorMessage);
166166
scan.setCompletedAt(LocalDateTime.now());
@@ -171,7 +171,7 @@ public void markAsErrored(@NonNull ExtensionScan scan, @Nullable String errorMes
171171
* Removes a scan.
172172
*/
173173
@Transactional(TxType.REQUIRES_NEW)
174-
public void removeScan(@NonNull ExtensionScan scan) {
174+
public void removeScan(@Nonnull ExtensionScan scan) {
175175
repositories.deleteExtensionScan(scan);
176176
}
177177

@@ -180,10 +180,10 @@ public void removeScan(@NonNull ExtensionScan scan) {
180180
*/
181181
@Transactional(TxType.REQUIRES_NEW)
182182
public void recordValidationFailure(
183-
@NonNull ExtensionScan scan,
184-
@NonNull String checkType,
185-
@NonNull String ruleName,
186-
@Nullable String reason,
183+
@Nonnull ExtensionScan scan,
184+
@Nonnull String checkType,
185+
@Nonnull String ruleName,
186+
@Nullable String reason,
187187
boolean enforced
188188
) {
189189
var failure = ExtensionValidationFailure.create(checkType, ruleName, reason);
@@ -200,12 +200,12 @@ public void recordValidationFailure(
200200
*/
201201
@Transactional(TxType.REQUIRES_NEW)
202202
public void recordCheckResult(
203-
@NonNull ExtensionScan scan,
204-
@NonNull String checkType,
205-
@NonNull ScanCheckResult.CheckCategory category,
206-
@NonNull ScanCheckResult.CheckResult result,
207-
@NonNull LocalDateTime startedAt,
208-
@NonNull LocalDateTime completedAt,
203+
@Nonnull ExtensionScan scan,
204+
@Nonnull String checkType,
205+
@Nonnull ScanCheckResult.CheckCategory category,
206+
@Nonnull ScanCheckResult.CheckResult result,
207+
@Nonnull LocalDateTime startedAt,
208+
@Nonnull LocalDateTime completedAt,
209209
@Nullable Integer filesScanned,
210210
int findingsCount,
211211
@Nullable String summary,
@@ -242,9 +242,9 @@ public void recordCheckResult(
242242
*/
243243
@Transactional(TxType.REQUIRES_NEW)
244244
public void recordScannerJobResult(
245-
@NonNull String scanId,
246-
@NonNull ScannerJob job,
247-
@NonNull ScanCheckResult.CheckResult result,
245+
@Nonnull String scanId,
246+
@Nonnull ScannerJob job,
247+
@Nonnull ScanCheckResult.CheckResult result,
248248
@Nullable Integer filesScanned,
249249
int findingsCount,
250250
@Nullable String summary,
@@ -314,7 +314,7 @@ public static ThreatSaveResult clean() {
314314
* - If enforced threats exist → check FOUND (blocks publication)
315315
*/
316316
@Transactional(TxType.REQUIRES_NEW)
317-
public ThreatSaveResult saveThreats(@NonNull ScannerJob job, @NonNull Scanner.Result result, boolean scannerEnforced) {
317+
public ThreatSaveResult saveThreats(@Nonnull ScannerJob job, @Nonnull Scanner.Result result, boolean scannerEnforced) {
318318
if (result.isClean()) {
319319
logger.debug("No threats to save for scanner job {}", job.getId());
320320
return ThreatSaveResult.clean();
@@ -386,8 +386,8 @@ public record CompletedScanResult(
386386
*/
387387
@Transactional(TxType.REQUIRES_NEW)
388388
public CompletedScanResult processCompletedScan(
389-
@NonNull ScannerJob job,
390-
@NonNull Scanner.Result result,
389+
@Nonnull ScannerJob job,
390+
@Nonnull Scanner.Result result,
391391
boolean scannerEnforced
392392
) {
393393
int threatCount = 0;
@@ -435,14 +435,14 @@ public CompletedScanResult processCompletedScan(
435435
*/
436436
@Transactional(TxType.REQUIRES_NEW)
437437
public void recordThreat(
438-
@NonNull ExtensionScan scan,
439-
@NonNull String fileName,
438+
@Nonnull ExtensionScan scan,
439+
@Nonnull String fileName,
440440
@Nullable String fileHash,
441441
@Nullable String fileExtension,
442-
@NonNull String scannerType,
443-
@NonNull String ruleName,
442+
@Nonnull String scannerType,
443+
@Nonnull String ruleName,
444444
@Nullable String reason,
445-
@NonNull String severity,
445+
@Nonnull String severity,
446446
boolean enforced
447447
) {
448448
var threat = ExtensionThreat.create(

server/src/main/java/org/eclipse/openvsx/scanning/ExtensionScanService.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
package org.eclipse.openvsx.scanning;
1414

1515
import org.eclipse.openvsx.ExtensionProcessor;
16-
import org.springframework.lang.NonNull;
17-
import org.springframework.lang.Nullable;
1816
import org.eclipse.openvsx.entities.*;
1917
import org.eclipse.openvsx.repositories.ScannerJobRepository;
2018
import org.eclipse.openvsx.util.ErrorResultException;
@@ -25,6 +23,8 @@
2523
import org.slf4j.LoggerFactory;
2624
import org.springframework.stereotype.Component;
2725

26+
import javax.annotation.Nonnull;
27+
import javax.annotation.Nullable;
2828
import java.time.LocalDateTime;
2929
import java.util.List;
3030
import java.util.stream.Collectors;
@@ -75,8 +75,8 @@ public boolean isEnabled() {
7575
* Creates a scan record from ExtensionProcessor metadata.
7676
* Use this when validation runs BEFORE extension creation.
7777
*/
78-
@NonNull
79-
public ExtensionScan initializeScan(@NonNull ExtensionProcessor processor, @NonNull UserData user) {
78+
@Nonnull
79+
public ExtensionScan initializeScan(@Nonnull ExtensionProcessor processor, @Nonnull UserData user) {
8080
return initializeScan(
8181
processor.getNamespace(),
8282
processor.getExtensionName(),
@@ -114,9 +114,9 @@ private ExtensionScan initializeScan(
114114
* then records findings and manages state transitions.
115115
*/
116116
public void runValidation(
117-
@NonNull ExtensionScan scan,
118-
@NonNull TempFile extensionFile,
119-
@NonNull UserData user
117+
@Nonnull ExtensionScan scan,
118+
@Nonnull TempFile extensionFile,
119+
@Nonnull UserData user
120120
) {
121121
transitionTo(scan, ScanStatus.VALIDATING);
122122

@@ -143,7 +143,7 @@ public void runValidation(
143143

144144
// Handle required check errors - block publication
145145
if (checkResult.hasRequiredCheckError()) {
146-
var requiredError = checkResult.getRequiredErrors().get(0);
146+
var requiredError = checkResult.getRequiredErrors().getFirst();
147147
markScanAsErrored(scan, checkResult.getErrorMessage());
148148
throw new ErrorResultException(checkResult.getErrorMessage(), requiredError.exception());
149149
}
@@ -199,7 +199,7 @@ public void runValidation(
199199
* JobRunr handles parallel execution, automatic retry, and persistence.
200200
* AsyncScanCompletionService will activate extensions when all scans complete.
201201
*/
202-
public boolean submitScannerJobs(@NonNull ExtensionScan scan, @NonNull ExtensionVersion extVersion) {
202+
public boolean submitScannerJobs(@Nonnull ExtensionScan scan, @Nonnull ExtensionVersion extVersion) {
203203
if (!config.isEnabled()) {
204204
logger.debug("Scanning is disabled, skipping scanner jobs for: {}",
205205
NamingUtil.toLogFormat(extVersion));
@@ -361,7 +361,7 @@ private boolean isValidTransition(ScanStatus from, ScanStatus to) {
361361
};
362362
}
363363

364-
public void removeScan(@NonNull ExtensionScan scan) {
364+
public void removeScan(@Nonnull ExtensionScan scan) {
365365
persistenceService.removeScan(scan);
366366
}
367367

server/src/main/java/org/eclipse/openvsx/scanning/GitleaksRulesService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@
1616
import com.fasterxml.jackson.databind.ObjectMapper;
1717
import com.fasterxml.jackson.dataformat.toml.TomlMapper;
1818
import io.micrometer.core.instrument.util.NamedThreadFactory;
19-
import jakarta.annotation.PostConstruct;
20-
import jakarta.annotation.PreDestroy;
2119
import org.jobrunr.jobs.annotations.Job;
2220
import org.jobrunr.jobs.annotations.Recurring;
2321
import org.slf4j.Logger;
2422
import org.slf4j.LoggerFactory;
2523
import org.springframework.beans.factory.ObjectProvider;
2624
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
27-
import org.springframework.lang.Nullable;
2825
import org.springframework.stereotype.Service;
2926
import redis.clients.jedis.JedisCluster;
3027
import redis.clients.jedis.JedisPubSub;
3128

29+
import javax.annotation.Nullable;
30+
import javax.annotation.PostConstruct;
31+
import javax.annotation.PreDestroy;
3232
import java.io.File;
3333
import java.io.IOException;
3434
import java.net.URI;

server/src/main/java/org/eclipse/openvsx/scanning/HttpAuthHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
import org.slf4j.LoggerFactory;
1717
import org.springframework.http.HttpHeaders;
1818
import org.springframework.http.MediaType;
19-
import org.springframework.lang.Nullable;
2019
import org.springframework.util.LinkedMultiValueMap;
2120
import org.springframework.util.MultiValueMap;
2221
import org.springframework.web.client.RestTemplate;
2322

23+
import javax.annotation.Nullable;
2424
import java.nio.charset.StandardCharsets;
2525
import java.time.Instant;
2626
import java.util.Map;

server/src/main/java/org/eclipse/openvsx/scanning/HttpClientExecutor.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
import org.springframework.core.io.FileSystemResource;
2424
import org.springframework.http.*;
2525
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
26-
import org.springframework.lang.Nullable;
2726
import org.springframework.util.LinkedMultiValueMap;
2827
import org.springframework.util.MultiValueMap;
2928
import org.springframework.web.client.HttpStatusCodeException;
3029
import org.springframework.web.client.RestTemplate;
3130
import org.springframework.web.util.UriComponentsBuilder;
3231

32+
import javax.annotation.Nullable;
3333
import java.io.File;
3434
import java.util.Map;
3535
import java.util.concurrent.TimeUnit;
@@ -225,18 +225,13 @@ private HttpEntity<?> buildRequestEntity(
225225
}
226226

227227
String bodyType = bodyConfig.getType();
228-
switch (bodyType.toLowerCase()) {
229-
case "multipart":
230-
return buildMultipartEntity(bodyConfig, file, headers);
231-
case "json":
232-
return buildJsonEntity(bodyConfig, headers);
233-
case "form-urlencoded":
234-
return buildFormEntity(bodyConfig, headers);
235-
case "raw":
236-
return buildRawEntity(bodyConfig, headers);
237-
default:
238-
throw new IllegalArgumentException("Unsupported body type: " + bodyType);
239-
}
228+
return switch (bodyType.toLowerCase()) {
229+
case "multipart" -> buildMultipartEntity(bodyConfig, file, headers);
230+
case "json" -> buildJsonEntity(bodyConfig, headers);
231+
case "form-urlencoded" -> buildFormEntity(bodyConfig, headers);
232+
case "raw" -> buildRawEntity(bodyConfig, headers);
233+
default -> throw new IllegalArgumentException("Unsupported body type: " + bodyType);
234+
};
240235
}
241236

242237
/**

server/src/main/java/org/eclipse/openvsx/scanning/PublishCheck.java

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import org.eclipse.openvsx.entities.ExtensionScan;
1616
import org.eclipse.openvsx.entities.UserData;
1717
import org.eclipse.openvsx.util.TempFile;
18-
import org.springframework.lang.NonNull;
1918

19+
import javax.annotation.Nonnull;
2020
import java.util.List;
2121
import java.util.stream.Collectors;
2222

@@ -96,25 +96,13 @@ default String getUserFacingMessage(List<Failure> failures) {
9696
* etc. to access extension metadata.
9797
*/
9898
record Context(
99-
@NonNull ExtensionScan scan,
100-
@NonNull TempFile extensionFile,
101-
@NonNull UserData user
102-
) {
103-
public Context {
104-
if (scan == null) {
105-
throw new IllegalArgumentException("scan cannot be null");
106-
}
107-
if (extensionFile == null) {
108-
throw new IllegalArgumentException("extensionFile cannot be null");
109-
}
110-
if (user == null) {
111-
throw new IllegalArgumentException("user cannot be null");
112-
}
113-
}
114-
}
99+
@Nonnull ExtensionScan scan,
100+
@Nonnull TempFile extensionFile,
101+
@Nonnull UserData user
102+
) {}
115103

116104
/**
117-
* Result of a publish check execution.
105+
* Result of a publishing check execution.
118106
*/
119107
record Result(
120108
boolean passed,

0 commit comments

Comments
 (0)