diff --git a/pom.xml b/pom.xml
index 0da6045a..80913a12 100644
--- a/pom.xml
+++ b/pom.xml
@@ -194,9 +194,9 @@ under the License.
plexus-xml
- com.google.code.findbugs
- jsr305
- 3.0.2
+ org.jspecify
+ jspecify
+ 1.0.0
compile
diff --git a/src/main/java/org/apache/maven/buildcache/CacheContext.java b/src/main/java/org/apache/maven/buildcache/CacheContext.java
index 613f75a0..e25b8ac3 100644
--- a/src/main/java/org/apache/maven/buildcache/CacheContext.java
+++ b/src/main/java/org/apache/maven/buildcache/CacheContext.java
@@ -21,6 +21,7 @@
import org.apache.maven.buildcache.xml.build.ProjectsInputInfo;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.project.MavenProject;
+import org.jspecify.annotations.NonNull;
import static java.util.Objects.requireNonNull;
@@ -39,14 +40,17 @@ public CacheContext(MavenProject project, ProjectsInputInfo inputInfo, MavenSess
this.session = requireNonNull(session);
}
+ @NonNull
public MavenProject getProject() {
return project;
}
+ @NonNull
public ProjectsInputInfo getInputInfo() {
return inputInfo;
}
+ @NonNull
public MavenSession getSession() {
return session;
}
diff --git a/src/main/java/org/apache/maven/buildcache/CacheControllerImpl.java b/src/main/java/org/apache/maven/buildcache/CacheControllerImpl.java
index 4c573282..c68a05af 100644
--- a/src/main/java/org/apache/maven/buildcache/CacheControllerImpl.java
+++ b/src/main/java/org/apache/maven/buildcache/CacheControllerImpl.java
@@ -18,7 +18,6 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
@@ -94,6 +93,7 @@
import org.apache.maven.project.MavenProjectHelper;
import org.codehaus.plexus.util.ReflectionUtils;
import org.eclipse.aether.RepositorySystem;
+import org.jspecify.annotations.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -186,7 +186,7 @@ public CacheControllerImpl(
}
@Override
- @Nonnull
+ @NonNull
public CacheResult findCachedBuild(
MavenSession session, MavenProject project, List mojoExecutions, boolean skipCache) {
final LifecyclePhasesHelper lifecyclePhasesHelper = providerLifecyclePhasesHelper.get();
diff --git a/src/main/java/org/apache/maven/buildcache/CacheRepository.java b/src/main/java/org/apache/maven/buildcache/CacheRepository.java
index 6a9a2934..d9408c59 100644
--- a/src/main/java/org/apache/maven/buildcache/CacheRepository.java
+++ b/src/main/java/org/apache/maven/buildcache/CacheRepository.java
@@ -18,8 +18,6 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
-
import java.io.IOException;
import java.util.Optional;
@@ -27,13 +25,14 @@
import org.apache.maven.buildcache.xml.Build;
import org.apache.maven.buildcache.xml.report.CacheReport;
import org.apache.maven.execution.MavenSession;
+import org.jspecify.annotations.NonNull;
/**
* Cache repository.
*/
public interface CacheRepository {
- @Nonnull
+ @NonNull
Optional findBuild(CacheContext context) throws IOException;
void saveBuildInfo(CacheResult cacheResult, Build build) throws IOException;
diff --git a/src/main/java/org/apache/maven/buildcache/CacheResult.java b/src/main/java/org/apache/maven/buildcache/CacheResult.java
index 6c1b5b2f..3f4da427 100644
--- a/src/main/java/org/apache/maven/buildcache/CacheResult.java
+++ b/src/main/java/org/apache/maven/buildcache/CacheResult.java
@@ -20,6 +20,8 @@
import org.apache.maven.buildcache.xml.Build;
import org.apache.maven.buildcache.xml.CacheSource;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
import static java.util.Objects.requireNonNull;
@@ -32,7 +34,7 @@ public class CacheResult {
private final Build build;
private final CacheContext context;
- private CacheResult(RestoreStatus status, Build build, CacheContext context) {
+ private CacheResult(RestoreStatus status, @Nullable Build build, @Nullable CacheContext context) {
this.status = requireNonNull(status);
this.build = build;
this.context = context;
@@ -88,14 +90,17 @@ public boolean isSuccess() {
return status == RestoreStatus.SUCCESS;
}
+ @Nullable
public Build getBuildInfo() {
return build;
}
+ @Nullable
public CacheSource getSource() {
return build != null ? build.getSource() : null;
}
+ @Nullable
public CacheContext getContext() {
return context;
}
@@ -104,6 +109,7 @@ public boolean isPartialSuccess() {
return status == RestoreStatus.PARTIAL;
}
+ @NonNull
public RestoreStatus getStatus() {
return status;
}
diff --git a/src/main/java/org/apache/maven/buildcache/CacheUtils.java b/src/main/java/org/apache/maven/buildcache/CacheUtils.java
index df3bb495..5476215f 100644
--- a/src/main/java/org/apache/maven/buildcache/CacheUtils.java
+++ b/src/main/java/org/apache/maven/buildcache/CacheUtils.java
@@ -51,6 +51,7 @@
import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
+import org.jspecify.annotations.Nullable;
import org.slf4j.Logger;
import static org.apache.maven.artifact.Artifact.LATEST_VERSION;
@@ -69,10 +70,11 @@ public static boolean isPom(Dependency dependency) {
return dependency.getType().equals("pom");
}
- public static boolean isSnapshot(String version) {
+ public static boolean isSnapshot(@Nullable String version) {
return version != null && (version.endsWith(SNAPSHOT_VERSION) || version.endsWith(LATEST_VERSION));
}
+ @Nullable
public static String normalizedName(Artifact artifact) {
if (artifact.getFile() == null) {
return null;
@@ -241,7 +243,7 @@ public static void unzip(Path zip, Path out, boolean preservePermissions) throws
}
public static void debugPrintCollection(
- Logger logger, Collection values, String heading, String elementCaption) {
+ Logger logger, @Nullable Collection values, @Nullable String heading, @Nullable String elementCaption) {
if (logger.isDebugEnabled() && values != null && !values.isEmpty()) {
final int size = values.size();
int i = 0;
diff --git a/src/main/java/org/apache/maven/buildcache/DefaultPluginScanConfig.java b/src/main/java/org/apache/maven/buildcache/DefaultPluginScanConfig.java
index e2663864..483b1934 100644
--- a/src/main/java/org/apache/maven/buildcache/DefaultPluginScanConfig.java
+++ b/src/main/java/org/apache/maven/buildcache/DefaultPluginScanConfig.java
@@ -18,9 +18,8 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
-
import org.apache.maven.buildcache.xml.config.DirScanConfig;
+import org.jspecify.annotations.NonNull;
/**
* DefaultPluginScanConfig
@@ -38,12 +37,12 @@ public boolean accept(String propertyName) {
}
@Override
- @Nonnull
+ @NonNull
public PluginScanConfig mergeWith(PluginScanConfig overrideSource) {
return overrideSource;
}
- @Nonnull
+ @NonNull
@Override
public ScanConfigProperties getTagScanProperties(String tagName) {
return new ScanConfigProperties(true, "*");
diff --git a/src/main/java/org/apache/maven/buildcache/LifecyclePhasesHelper.java b/src/main/java/org/apache/maven/buildcache/LifecyclePhasesHelper.java
index c37facc4..4c78117c 100644
--- a/src/main/java/org/apache/maven/buildcache/LifecyclePhasesHelper.java
+++ b/src/main/java/org/apache/maven/buildcache/LifecyclePhasesHelper.java
@@ -18,7 +18,6 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
@@ -40,6 +39,7 @@
import org.apache.maven.lifecycle.Lifecycle;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
+import org.jspecify.annotations.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -103,7 +103,7 @@ public void forkedProjectFailed(ExecutionEvent event) {
forkedProjectToOrigin.remove(event.getProject(), event.getMojoExecution());
}
- @Nonnull
+ @NonNull
public String resolveHighestLifecyclePhase(MavenProject project, List mojoExecutions) {
return resolveMojoExecutionLifecyclePhase(project, CacheUtils.getLast(mojoExecutions));
}
diff --git a/src/main/java/org/apache/maven/buildcache/LocalCacheRepository.java b/src/main/java/org/apache/maven/buildcache/LocalCacheRepository.java
index 3117455c..52139d6e 100644
--- a/src/main/java/org/apache/maven/buildcache/LocalCacheRepository.java
+++ b/src/main/java/org/apache/maven/buildcache/LocalCacheRepository.java
@@ -18,8 +18,6 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
-
import java.io.IOException;
import java.nio.file.Path;
import java.util.Optional;
@@ -29,6 +27,7 @@
import org.apache.maven.buildcache.xml.build.Artifact;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Dependency;
+import org.jspecify.annotations.NonNull;
/**
* Local cache repository.
@@ -41,9 +40,9 @@ public interface LocalCacheRepository extends CacheRepository {
void clearCache(CacheContext context);
- @Nonnull
+ @NonNull
Optional findBestMatchingBuild(MavenSession session, Dependency dependency) throws IOException;
- @Nonnull
+ @NonNull
Optional findLocalBuild(CacheContext context) throws IOException;
}
diff --git a/src/main/java/org/apache/maven/buildcache/LocalCacheRepositoryImpl.java b/src/main/java/org/apache/maven/buildcache/LocalCacheRepositoryImpl.java
index dee0cf2d..f9f01c58 100644
--- a/src/main/java/org/apache/maven/buildcache/LocalCacheRepositoryImpl.java
+++ b/src/main/java/org/apache/maven/buildcache/LocalCacheRepositoryImpl.java
@@ -18,7 +18,6 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
import javax.inject.Inject;
import javax.inject.Named;
@@ -57,6 +56,7 @@
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
+import org.jspecify.annotations.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -100,7 +100,7 @@ public LocalCacheRepositoryImpl(
this.cacheConfig = cacheConfig;
}
- @Nonnull
+ @NonNull
@Override
public Optional findLocalBuild(CacheContext context) throws IOException {
Path localBuildInfoPath = localBuildPath(context, BUILDINFO_XML, false);
@@ -119,7 +119,7 @@ public Optional findLocalBuild(CacheContext context) throws IOException {
return Optional.empty();
}
- @Nonnull
+ @NonNull
@Override
public Optional findBuild(CacheContext context) throws IOException {
Path buildInfoPath = remoteBuildPath(context, BUILDINFO_XML);
@@ -218,13 +218,13 @@ public void clearCache(CacheContext context) {
}
}
- @Nonnull
+ @NonNull
@Override
public Optional findBestMatchingBuild(MavenSession session, Dependency dependency) {
return bestBuildCache.computeIfAbsent(Pair.of(session, dependency), this::findBestMatchingBuildImpl);
}
- @Nonnull
+ @NonNull
private Optional findBestMatchingBuildImpl(Pair dependencySession) {
try {
final MavenSession session = dependencySession.getLeft();
diff --git a/src/main/java/org/apache/maven/buildcache/PluginScanConfig.java b/src/main/java/org/apache/maven/buildcache/PluginScanConfig.java
index 80e94ab3..8c0d301a 100644
--- a/src/main/java/org/apache/maven/buildcache/PluginScanConfig.java
+++ b/src/main/java/org/apache/maven/buildcache/PluginScanConfig.java
@@ -18,9 +18,9 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
-
import org.apache.maven.buildcache.xml.config.DirScanConfig;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
/**
* PluginScanConfig
@@ -33,8 +33,9 @@ public interface PluginScanConfig {
PluginScanConfig mergeWith(PluginScanConfig overrideSource);
- @Nonnull
+ @NonNull
ScanConfigProperties getTagScanProperties(String tagName);
+ @Nullable
DirScanConfig dto();
}
diff --git a/src/main/java/org/apache/maven/buildcache/PluginScanConfigImpl.java b/src/main/java/org/apache/maven/buildcache/PluginScanConfigImpl.java
index 04206ff8..c0f0b5d1 100644
--- a/src/main/java/org/apache/maven/buildcache/PluginScanConfigImpl.java
+++ b/src/main/java/org/apache/maven/buildcache/PluginScanConfigImpl.java
@@ -18,14 +18,14 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
-
import java.util.List;
import org.apache.commons.lang3.Strings;
import org.apache.maven.buildcache.xml.config.DirScanConfig;
import org.apache.maven.buildcache.xml.config.TagExclude;
import org.apache.maven.buildcache.xml.config.TagScanConfig;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
/**
* PluginScanConfigImpl
@@ -34,17 +34,20 @@ public class PluginScanConfigImpl implements PluginScanConfig {
private final DirScanConfig dto;
- public PluginScanConfigImpl(DirScanConfig scanConfig) {
+ public PluginScanConfigImpl(@Nullable DirScanConfig scanConfig) {
this.dto = scanConfig;
}
@Override
public boolean isSkip() {
- return Strings.CS.equals(dto.getMode(), "skip");
+ return dto != null && Strings.CS.equals(dto.getMode(), "skip");
}
@Override
public boolean accept(String tagName) {
+ if (dto == null) {
+ return false;
+ }
// include or exclude is a choice element, could be only obe property set
//noinspection ConstantConditions
@@ -65,7 +68,7 @@ private boolean contains(List excludes, String tagName) {
return false;
}
- @Nonnull
+ @NonNull
@Override
public PluginScanConfig mergeWith(final PluginScanConfig overrideConfig) {
if (dto == null) {
@@ -97,17 +100,19 @@ public PluginScanConfig mergeWith(final PluginScanConfig overrideConfig) {
return new PluginScanConfigImpl(merged);
}
- @Nonnull
+ @NonNull
public ScanConfigProperties getTagScanProperties(String tagName) {
ScanConfigProperties scanProperties = findTagScanProperties(tagName);
return scanProperties != null ? scanProperties : defaultScanConfig();
}
+ @Nullable
@Override
public DirScanConfig dto() {
return dto;
}
+ @Nullable
private ScanConfigProperties findTagScanProperties(String tagName) {
ScanConfigProperties scanConfigProperties = findConfigByName(tagName, dto.getIncludes());
if (scanConfigProperties == null) {
@@ -116,6 +121,7 @@ private ScanConfigProperties findTagScanProperties(String tagName) {
return scanConfigProperties;
}
+ @Nullable
private ScanConfigProperties findConfigByName(String tagName, List configs) {
if (configs == null) {
return null;
diff --git a/src/main/java/org/apache/maven/buildcache/RemoteCacheRepository.java b/src/main/java/org/apache/maven/buildcache/RemoteCacheRepository.java
index b2fafc50..e727c673 100644
--- a/src/main/java/org/apache/maven/buildcache/RemoteCacheRepository.java
+++ b/src/main/java/org/apache/maven/buildcache/RemoteCacheRepository.java
@@ -18,8 +18,6 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
-
import java.io.IOException;
import java.nio.file.Path;
import java.util.Optional;
@@ -27,6 +25,8 @@
import org.apache.maven.buildcache.xml.Build;
import org.apache.maven.buildcache.xml.build.Artifact;
import org.apache.maven.project.MavenProject;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
/**
* Remote cache repository.
@@ -43,9 +43,9 @@ public interface RemoteCacheRepository extends CacheRepository {
*/
boolean getArtifactContent(CacheContext context, Artifact artifact, Path target) throws IOException;
- @Nonnull
+ @Nullable
String getResourceUrl(CacheContext context, String filename);
- @Nonnull
+ @NonNull
Optional findBaselineBuild(MavenProject project);
}
diff --git a/src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryImpl.java b/src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryImpl.java
index 8d884cd7..408e567a 100644
--- a/src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryImpl.java
+++ b/src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryImpl.java
@@ -18,7 +18,6 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
import javax.inject.Inject;
import javax.inject.Named;
@@ -55,6 +54,8 @@
import org.eclipse.aether.spi.connector.transport.PutTask;
import org.eclipse.aether.spi.connector.transport.Transporter;
import org.eclipse.aether.spi.connector.transport.TransporterProvider;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -105,7 +106,7 @@ public void close() throws IOException {
}
}
- @Nonnull
+ @NonNull
@Override
public Optional findBuild(CacheContext context) throws IOException {
final String resourceUrl = getResourceUrl(context, BUILDINFO_XML);
@@ -147,8 +148,8 @@ public void saveArtifactFile(CacheResult cacheResult, org.apache.maven.artifact.
*
* @return null or content
*/
- @Nonnull
- public Optional getResourceContent(String url) {
+ @NonNull
+ public Optional getResourceContent(@Nullable String url) {
String fullUrl = getFullUrl(url);
try {
LOGGER.info("Downloading {}", fullUrl);
@@ -201,7 +202,7 @@ private void logNotFound(String fullUrl, Exception e) {
}
}
- public boolean getResourceContent(String url, Path target) {
+ public boolean getResourceContent(@Nullable String url, Path target) {
try {
LOGGER.info("Downloading {}", getFullUrl(url));
GetTask task = new GetTask(new URI(url)).setDataFile(target.toFile());
@@ -213,7 +214,7 @@ public boolean getResourceContent(String url, Path target) {
}
}
- @Nonnull
+ @Nullable
@Override
public String getResourceUrl(CacheContext context, String filename) {
return getResourceUrl(
@@ -228,7 +229,7 @@ private String getResourceUrl(String filename, String groupId, String artifactId
+ filename;
}
- private void putToRemoteCache(byte[] bytes, String url) throws IOException {
+ private void putToRemoteCache(byte[] bytes, @Nullable String url) throws IOException {
Path tmp = Files.createTempFile("mbce-", ".tmp");
try {
Files.write(tmp, bytes);
@@ -243,7 +244,7 @@ private void putToRemoteCache(byte[] bytes, String url) throws IOException {
}
}
- private void putToRemoteCache(File file, String url) throws IOException {
+ private void putToRemoteCache(File file, @Nullable String url) throws IOException {
try {
PutTask put = new PutTask(new URI(url));
put.setDataFile(file);
@@ -256,7 +257,7 @@ private void putToRemoteCache(File file, String url) throws IOException {
private final AtomicReference cacheReportSupplier = new AtomicReference<>();
- @Nonnull
+ @NonNull
@Override
public Optional findBaselineBuild(MavenProject project) {
Optional> cachedProjectsHolder = findCacheInfo().map(CacheReport::getProjects);
@@ -313,7 +314,7 @@ private Optional findCacheInfo() {
return report;
}
- private String getFullUrl(String url) {
+ private String getFullUrl(@Nullable String url) {
return cacheConfig.getUrl() + "/" + url;
}
}
diff --git a/src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryNoOp.java b/src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryNoOp.java
index e66d0e52..7d52ac9e 100644
--- a/src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryNoOp.java
+++ b/src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryNoOp.java
@@ -18,7 +18,6 @@
*/
package org.apache.maven.buildcache;
-import javax.annotation.Nonnull;
import javax.inject.Named;
import java.io.IOException;
@@ -31,12 +30,14 @@
import org.apache.maven.buildcache.xml.report.CacheReport;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.project.MavenProject;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
@SessionScoped
@Named("noop")
public class RemoteCacheRepositoryNoOp implements RemoteCacheRepository {
- @Nonnull
+ @NonNull
@Override
public Optional findBuild(CacheContext context) throws IOException {
return Optional.empty();
@@ -58,12 +59,13 @@ public boolean getArtifactContent(
return false;
}
+ @Nullable
@Override
public String getResourceUrl(CacheContext context, String filename) {
return null;
}
- @Nonnull
+ @NonNull
@Override
public Optional findBaselineBuild(MavenProject project) {
return Optional.empty();
diff --git a/src/main/java/org/apache/maven/buildcache/ScanConfigProperties.java b/src/main/java/org/apache/maven/buildcache/ScanConfigProperties.java
index d7d07a13..578180a8 100644
--- a/src/main/java/org/apache/maven/buildcache/ScanConfigProperties.java
+++ b/src/main/java/org/apache/maven/buildcache/ScanConfigProperties.java
@@ -18,6 +18,8 @@
*/
package org.apache.maven.buildcache;
+import org.jspecify.annotations.Nullable;
+
/**
* ScanConfigProperties
*/
@@ -26,7 +28,7 @@ public class ScanConfigProperties {
private final boolean recursive;
private final String glob;
- public ScanConfigProperties(boolean recursive, String glob) {
+ public ScanConfigProperties(boolean recursive, @Nullable String glob) {
this.recursive = recursive;
this.glob = glob;
}
@@ -35,6 +37,7 @@ public boolean isRecursive() {
return recursive;
}
+ @Nullable
public String getGlob() {
return glob;
}
diff --git a/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java b/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java
index 4f05eb36..1512b0bf 100644
--- a/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java
+++ b/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java
@@ -18,8 +18,6 @@
*/
package org.apache.maven.buildcache.checksum;
-import javax.annotation.Nonnull;
-
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
@@ -90,6 +88,7 @@
import org.eclipse.aether.resolution.ArtifactRequest;
import org.eclipse.aether.resolution.ArtifactResolutionException;
import org.eclipse.aether.resolution.ArtifactResult;
+import org.jspecify.annotations.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -819,7 +818,7 @@ private SortedMap getMutableDependenciesHashes(String keyPrefix,
return result;
}
- @Nonnull
+ @NonNull
private DigestItem resolveArtifact(final Dependency dependency)
throws IOException, ArtifactResolutionException, InvalidVersionSpecificationException {
diff --git a/src/main/java/org/apache/maven/buildcache/checksum/WalkKey.java b/src/main/java/org/apache/maven/buildcache/checksum/WalkKey.java
index 5dc94635..5f57492a 100644
--- a/src/main/java/org/apache/maven/buildcache/checksum/WalkKey.java
+++ b/src/main/java/org/apache/maven/buildcache/checksum/WalkKey.java
@@ -20,6 +20,8 @@
import java.nio.file.Path;
+import org.jspecify.annotations.Nullable;
+
/**
* WalkKey
*/
@@ -36,7 +38,7 @@ public WalkKey(Path normalized, String glob, boolean recursive) {
}
@Override
- public boolean equals(Object o) {
+ public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
}
diff --git a/src/main/java/org/apache/maven/buildcache/xml/CacheConfig.java b/src/main/java/org/apache/maven/buildcache/xml/CacheConfig.java
index 452dcfb7..b74b2903 100644
--- a/src/main/java/org/apache/maven/buildcache/xml/CacheConfig.java
+++ b/src/main/java/org/apache/maven/buildcache/xml/CacheConfig.java
@@ -18,9 +18,6 @@
*/
package org.apache.maven.buildcache.xml;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
import java.util.List;
import java.util.regex.Pattern;
@@ -35,27 +32,29 @@
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginExecution;
import org.apache.maven.plugin.MojoExecution;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
/**
* A java interface to the information configured in the maven-build-cache-config.xml file
*/
public interface CacheConfig {
- @Nonnull
+ @NonNull
CacheState initialize();
- @Nonnull
+ @NonNull
List getTrackedProperties(MojoExecution mojoExecution);
boolean isLogAllProperties(MojoExecution mojoExecution);
- @Nonnull
+ @NonNull
List getLoggedProperties(MojoExecution mojoExecution);
- @Nonnull
+ @NonNull
List getNologProperties(MojoExecution mojoExecution);
- @Nonnull
+ @NonNull
List getEffectivePomExcludeProperties(Plugin plugin);
boolean isPluginDependenciesExcluded(Plugin plugin);
@@ -67,25 +66,26 @@ public interface CacheConfig {
String getDefaultGlob();
- @Nonnull
+ @NonNull
List getGlobalIncludePaths();
- @Nonnull
+ @NonNull
List getGlobalExcludePaths();
- @Nonnull
+ @NonNull
PluginScanConfig getPluginDirScanConfig(Plugin plugin);
- @Nonnull
+ @NonNull
PluginScanConfig getExecutionDirScanConfig(Plugin plugin, PluginExecution exec);
- @Nonnull
+ @NonNull
HashFactory getHashFactory();
boolean isForcedExecution(MojoExecution execution);
String getId();
+ @Nullable
String getUrl();
String getTransport();
@@ -104,6 +104,7 @@ public interface CacheConfig {
int getMaxLocalBuildsCached();
+ @Nullable
String getLocalRepositoryLocation();
List getAttachedOutputs();
@@ -116,11 +117,12 @@ public interface CacheConfig {
boolean canIgnore(MojoExecution mojoExecution);
- @Nonnull
+ @NonNull
List getExcludePatterns();
boolean isBaselineDiffEnabled();
+ @Nullable
String getBaselineCacheUrl();
/**
@@ -143,6 +145,7 @@ public interface CacheConfig {
*/
boolean isRestoreOnDiskArtifacts();
+ @Nullable
String getAlwaysRunPlugins();
/**
diff --git a/src/main/java/org/apache/maven/buildcache/xml/CacheConfigImpl.java b/src/main/java/org/apache/maven/buildcache/xml/CacheConfigImpl.java
index 7d7b91ef..daed66be 100644
--- a/src/main/java/org/apache/maven/buildcache/xml/CacheConfigImpl.java
+++ b/src/main/java/org/apache/maven/buildcache/xml/CacheConfigImpl.java
@@ -18,8 +18,6 @@
*/
package org.apache.maven.buildcache.xml;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
@@ -68,6 +66,8 @@
import org.apache.maven.model.PluginExecution;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.rtinfo.RuntimeInformation;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -132,7 +132,7 @@ public CacheConfigImpl(XmlService xmlService, Provider providerSes
this.rtInfo = rtInfo;
}
- @Nonnull
+ @NonNull
@Override
public CacheState initialize() {
if (state == null) {
@@ -225,7 +225,7 @@ private void fillWithDefaults(CacheConfig cacheConfig) {
}
}
- @Nonnull
+ @NonNull
@Override
public List getTrackedProperties(MojoExecution mojoExecution) {
checkInitializedState();
@@ -248,6 +248,7 @@ public boolean isLogAllProperties(MojoExecution mojoExecution) {
&& cacheConfig.getExecutionControl().getReconcile().isLogAllProperties();
}
+ @Nullable
private GoalReconciliation findReconciliationConfig(MojoExecution mojoExecution) {
if (cacheConfig.getExecutionControl() == null) {
return null;
@@ -272,7 +273,7 @@ private GoalReconciliation findReconciliationConfig(MojoExecution mojoExecution)
return null;
}
- @Nonnull
+ @NonNull
@Override
public List getLoggedProperties(MojoExecution mojoExecution) {
checkInitializedState();
@@ -285,7 +286,7 @@ public List getLoggedProperties(MojoExecution mojoExecution) {
}
}
- @Nonnull
+ @NonNull
@Override
public List getNologProperties(MojoExecution mojoExecution) {
checkInitializedState();
@@ -297,7 +298,7 @@ public List getNologProperties(MojoExecution mojoExecution) {
}
}
- @Nonnull
+ @NonNull
@Override
public List getEffectivePomExcludeProperties(Plugin plugin) {
checkInitializedState();
@@ -327,6 +328,7 @@ public MultiModule getMultiModule() {
return cacheConfig.getConfiguration().getMultiModule();
}
+ @Nullable
private PluginConfigurationScan findPluginScanConfig(Plugin plugin) {
if (cacheConfig.getInput() == null) {
return null;
@@ -348,7 +350,7 @@ private boolean isPluginMatch(Plugin plugin, CoordinatesBase pluginConfig) {
|| Strings.CS.equals(pluginConfig.getGroupId(), plugin.getGroupId()));
}
- @Nonnull
+ @NonNull
@Override
public PluginScanConfig getPluginDirScanConfig(Plugin plugin) {
checkInitializedState();
@@ -360,7 +362,7 @@ public PluginScanConfig getPluginDirScanConfig(Plugin plugin) {
return new PluginScanConfigImpl(pluginConfig.getDirScan());
}
- @Nonnull
+ @NonNull
@Override
public PluginScanConfig getExecutionDirScanConfig(Plugin plugin, PluginExecution exec) {
checkInitializedState();
@@ -377,6 +379,7 @@ public PluginScanConfig getExecutionDirScanConfig(Plugin plugin, PluginExecution
return new DefaultPluginScanConfig();
}
+ @Nullable
private ExecutionConfigurationScan findExecutionScanConfig(
PluginExecution execution, List scanConfigs) {
for (ExecutionConfigurationScan executionScanConfig : scanConfigs) {
@@ -399,21 +402,21 @@ public String getDefaultGlob() {
return StringUtils.trim(cacheConfig.getInput().getGlobal().getGlob());
}
- @Nonnull
+ @NonNull
@Override
public List getGlobalIncludePaths() {
checkInitializedState();
return cacheConfig.getInput().getGlobal().getIncludes();
}
- @Nonnull
+ @NonNull
@Override
public List getGlobalExcludePaths() {
checkInitializedState();
return cacheConfig.getInput().getGlobal().getExcludes();
}
- @Nonnull
+ @NonNull
@Override
public HashFactory getHashFactory() {
checkInitializedState();
@@ -507,6 +510,7 @@ public boolean isBaselineDiffEnabled() {
return getProperty(BASELINE_BUILD_URL_PROPERTY_NAME, null) != null;
}
+ @Nullable
@Override
public String getBaselineCacheUrl() {
return getProperty(BASELINE_BUILD_URL_PROPERTY_NAME, null);
@@ -527,6 +531,7 @@ public boolean isRestoreOnDiskArtifacts() {
return getProperty(RESTORE_ON_DISK_ARTIFACTS_PROPERTY_NAME, true);
}
+ @Nullable
@Override
public String getAlwaysRunPlugins() {
return getProperty(ALWAYS_RUN_PLUGINS, null);
@@ -553,6 +558,7 @@ public String getId() {
return getProperty(REMOTE_SERVER_ID_PROPERTY_NAME, getRemote().getId());
}
+ @Nullable
@Override
public String getUrl() {
checkInitializedState();
@@ -571,6 +577,7 @@ public int getMaxLocalBuildsCached() {
return getLocal().getMaxBuildsCached();
}
+ @Nullable
@Override
public String getLocalRepositoryLocation() {
checkInitializedState();
@@ -613,7 +620,7 @@ public boolean calculateProjectVersionChecksum() {
}
}
- @Nonnull
+ @NonNull
@Override
public List getExcludePatterns() {
checkInitializedState();
@@ -649,7 +656,8 @@ private void checkInitializedState() {
}
}
- private String getProperty(String key, String defaultValue) {
+ @Nullable
+ private String getProperty(String key, @Nullable String defaultValue) {
MavenSession session = providerSession.get();
String value = session.getUserProperties().getProperty(key);
if (value == null) {
diff --git a/src/main/java/org/apache/maven/buildcache/xml/DtoUtils.java b/src/main/java/org/apache/maven/buildcache/xml/DtoUtils.java
index 3c8b3a7c..171fd0a0 100644
--- a/src/main/java/org/apache/maven/buildcache/xml/DtoUtils.java
+++ b/src/main/java/org/apache/maven/buildcache/xml/DtoUtils.java
@@ -18,8 +18,6 @@
*/
package org.apache.maven.buildcache.xml;
-import javax.annotation.Nonnull;
-
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
@@ -31,6 +29,8 @@
import org.apache.maven.buildcache.xml.build.PropertyValue;
import org.apache.maven.buildcache.xml.config.TrackedProperty;
import org.apache.maven.model.Dependency;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -109,7 +109,11 @@ public static Dependency createDependency(Artifact artifact) {
}
public static void addProperty(
- CompletedExecution execution, String propertyName, Object value, String baseDirPath, boolean tracked) {
+ CompletedExecution execution,
+ String propertyName,
+ @Nullable Object value,
+ String baseDirPath,
+ boolean tracked) {
final PropertyValue valueType = new PropertyValue();
valueType.setName(propertyName);
if (value != null && value.getClass().isArray()) {
@@ -129,7 +133,7 @@ public static void addProperty(
* @return true if all tracked properties are listed in the cache record
*/
public static boolean containsAllProperties(
- @Nonnull CompletedExecution cachedExecution, List trackedProperties) {
+ @NonNull CompletedExecution cachedExecution, @Nullable List trackedProperties) {
if (trackedProperties == null || trackedProperties.isEmpty()) {
return true;
}
diff --git a/src/test/java/org/apache/maven/buildcache/util/LogFileUtils.java b/src/test/java/org/apache/maven/buildcache/util/LogFileUtils.java
index 6a819480..7d570bb3 100644
--- a/src/test/java/org/apache/maven/buildcache/util/LogFileUtils.java
+++ b/src/test/java/org/apache/maven/buildcache/util/LogFileUtils.java
@@ -25,6 +25,7 @@
import org.apache.maven.it.VerificationException;
import org.apache.maven.it.Verifier;
+import org.jspecify.annotations.Nullable;
/**
* Utils to inspect the generated log file
@@ -42,6 +43,7 @@ private LogFileUtils() {
* @return the first matching string or null
* @throws VerificationException
*/
+ @Nullable
public static String findFirstLineContainingTextsInLogs(final Verifier verifier, final String... texts)
throws VerificationException {
List lines = verifier.loadFile(verifier.getBasedir(), verifier.getLogFileName(), false);