From fe9e2e9e4859fe06a3ffb0a84b6e33bf120a2403 Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Wed, 4 Jun 2025 13:45:55 +0200 Subject: [PATCH] Add @nullable annotations throughout the codebase --- .../apache/maven/api/services/Sources.java | 2 + .../api/services/xml/XmlReaderRequest.java | 1 + .../org/apache/maven/api/xml/XmlNode.java | 2 + compat/maven-artifact/pom.xml | 4 ++ .../artifact/versioning/VersionRange.java | 3 + .../org/apache/maven/cli/ResolveFile.java | 4 ++ .../maven/cli/logging/Slf4jStdoutLogger.java | 2 + .../maven/cli/props/MavenProperties.java | 4 ++ .../building/DefaultModelBuildingResult.java | 4 ++ .../maven/model/building/FileModelSource.java | 2 + .../building/ModelBuildingException.java | 2 + .../BuildTimestampValueSource.java | 2 + .../interpolation/ObjectBasedValueSource.java | 2 + .../PathTranslatingPostProcessor.java | 2 + .../StringSearchModelInterpolator.java | 2 + .../UrlNormalizingPostProcessor.java | 2 + .../interpolation/reflection/ClassMap.java | 3 + .../reflection/ReflectionValueExtractor.java | 3 + ...ProfileActivationFilePathInterpolator.java | 6 ++ .../building/DefaultModelBuilderTest.java | 3 + .../plugin/descriptor/PluginDescriptor.java | 3 + .../internal/DefaultModelCache.java | 2 + ...ionManagementArtifactRelocationSource.java | 2 + ...serPropertiesArtifactRelocationSource.java | 2 + .../invoker/mvnenc/ConsolePasswordPrompt.java | 3 + .../BuiltinShellCommandRegistryFactory.java | 2 + .../maven/cling/logging/Slf4jLogger.java | 2 + .../maven/cling/props/MavenProperties.java | 4 ++ .../java/org/apache/maven/ReactorReader.java | 2 + .../org/apache/maven/RepositoryUtils.java | 5 ++ .../maven/bridge/MavenRepositorySystem.java | 16 ++++-- .../EnhancedConfigurationConverter.java | 2 + .../DefaultMavenExecutionRequest.java | 2 + .../DefaultMavenExecutionResult.java | 2 + .../apache/maven/execution/MavenSession.java | 3 + .../maven/execution/ReactorManager.java | 3 + .../internal/aether/TypeRegistryAdapter.java | 2 + .../org/apache/maven/internal/impl/Graph.java | 3 + .../impl/TransformedArtifact.java | 3 +- .../impl/TransformedArtifactHandler.java | 2 + .../maven/lifecycle/DefaultLifecycles.java | 2 + .../maven/lifecycle/MavenExecutionPlan.java | 2 + .../DefaultLifecyclePluginAnalyzer.java | 2 + .../mapping/DefaultLifecycleMapping.java | 3 + .../maven/lifecycle/mapping/Lifecycle.java | 3 + .../lifecycle/mapping/LifecyclePhase.java | 3 + .../plugin/DefaultBuildPluginManager.java | 2 + .../plugin/DefaultExtensionRealmCache.java | 2 + .../maven/plugin/DefaultPluginRealmCache.java | 2 + .../PluginParameterExpressionEvaluator.java | 2 + .../PluginParameterExpressionEvaluatorV4.java | 2 + .../project/DefaultProjectRealmCache.java | 2 + .../java/org/apache/maven/project/Graph.java | 3 + .../maven/project/ReactorModelPool.java | 3 + .../project/artifact/PluginArtifact.java | 4 ++ .../project/artifact/ProjectArtifact.java | 4 ++ .../apache/maven/settings/SettingsUtils.java | 2 + .../java/org/apache/maven/SimpleLookup.java | 2 + .../test/java/org/apache/maven/di/DiTest.java | 6 ++ .../internal/impl/TestArtifactHandler.java | 2 + .../MojoExecutionXPathContainer.java | 2 + .../internal/stub/BuildPluginManagerStub.java | 3 + .../internal/stub/CompletionServiceStub.java | 4 ++ .../internal/stub/MojoExecutorStub.java | 2 + .../stub/PluginPrefixResolverStub.java | 2 + .../stub/PluginVersionResolverStub.java | 2 + .../EmptyLifecycleBindingsInjector.java | 2 + .../maven/project/harness/PomTestWrapper.java | 2 + .../harness/Xpp3DomPointerFactory.java | 8 ++- .../main/java/org/apache/maven/di/Key.java | 3 +- .../apache/maven/di/impl/ReflectionUtils.java | 9 ++- .../java/org/apache/maven/di/impl/Types.java | 3 +- .../maven/di/impl/InjectorImplTest.java | 4 ++ .../maven/impl/DefaultArtifactResolver.java | 1 + .../impl/DefaultJavaToolchainFactory.java | 2 + .../maven/impl/DefaultModelUrlNormalizer.java | 2 + .../maven/impl/DefaultModelVersionParser.java | 5 ++ .../apache/maven/impl/RequestTraceHelper.java | 3 + .../maven/impl/cache/SoftIdentityMap.java | 3 + .../maven/impl/model/DefaultModelBuilder.java | 3 + .../impl/model/DefaultModelValidator.java | 1 + .../DefaultProfileActivationContext.java | 5 ++ .../maven/impl/model/reflection/ClassMap.java | 3 + .../reflection/ReflectionValueExtractor.java | 3 + ...ionManagementArtifactRelocationSource.java | 2 + ...serPropertiesArtifactRelocationSource.java | 2 + .../maven/impl/standalone/ApiRunner.java | 2 + .../maven/slf4j/MavenLoggerFactory.java | 3 + .../api/plugin/testing/stubs/ProjectStub.java | 4 ++ .../api/plugin/testing/stubs/SessionStub.java | 56 ++++++++++++++++++- .../maven/internal/xml/XmlNodeImpl.java | 3 + .../its/extensions/IdeWorkspaceReader.java | 2 + .../plexus/util/xml/pull/MXSerializer.java | 10 ++++ .../its/mng5958/AbstractLifecycleMapping.java | 3 + .../toolchain/CoreItToolchainFactory.java | 3 + src/mdo/java/WrapperProperties.java | 4 ++ 96 files changed, 330 insertions(+), 14 deletions(-) diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/services/Sources.java b/api/maven-api-core/src/main/java/org/apache/maven/api/services/Sources.java index 4acab6006a34..969152d4cca3 100644 --- a/api/maven-api-core/src/main/java/org/apache/maven/api/services/Sources.java +++ b/api/maven-api-core/src/main/java/org/apache/maven/api/services/Sources.java @@ -175,11 +175,13 @@ static class ResolvedPathSource extends PathSource implements ModelSource { } @Override + @Nullable public Path getPath() { return null; } @Override + @Nullable public Source resolve(String relative) { return null; } diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/services/xml/XmlReaderRequest.java b/api/maven-api-core/src/main/java/org/apache/maven/api/services/xml/XmlReaderRequest.java index d261345f7083..4ac85e22ffc0 100644 --- a/api/maven-api-core/src/main/java/org/apache/maven/api/services/xml/XmlReaderRequest.java +++ b/api/maven-api-core/src/main/java/org/apache/maven/api/services/xml/XmlReaderRequest.java @@ -207,6 +207,7 @@ public Path getRootDirectory() { } @Override + @Nullable public URL getURL() { return null; } diff --git a/api/maven-api-xml/src/main/java/org/apache/maven/api/xml/XmlNode.java b/api/maven-api-xml/src/main/java/org/apache/maven/api/xml/XmlNode.java index 54a6c3443bfc..20a115aea6d8 100644 --- a/api/maven-api-xml/src/main/java/org/apache/maven/api/xml/XmlNode.java +++ b/api/maven-api-xml/src/main/java/org/apache/maven/api/xml/XmlNode.java @@ -473,11 +473,13 @@ private record Impl( } @Override + @Nullable public String attribute(@Nonnull String name) { return attributes.get(name); } @Override + @Nullable public XmlNode child(String name) { if (name != null) { ListIterator it = children.listIterator(children.size()); diff --git a/compat/maven-artifact/pom.xml b/compat/maven-artifact/pom.xml index 4457c79f8c30..4f1459986190 100644 --- a/compat/maven-artifact/pom.xml +++ b/compat/maven-artifact/pom.xml @@ -41,6 +41,10 @@ under the License. junit-jupiter-params test + + org.apache.maven + maven-api-annotations + diff --git a/compat/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java b/compat/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java index 3f8cd985c5d5..bc531a31061e 100644 --- a/compat/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java +++ b/compat/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java @@ -26,6 +26,7 @@ import java.util.Objects; import java.util.WeakHashMap; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.DefaultArtifact; @@ -92,6 +93,7 @@ public VersionRange cloneOf() { * @return a new {@link VersionRange} object that represents the spec * @throws InvalidVersionSpecificationException if invalid version specification */ + @Nullable public static VersionRange createFromVersionSpec(String spec) throws InvalidVersionSpecificationException { if (spec == null) { return null; @@ -202,6 +204,7 @@ private static Restriction parseRestriction(String spec) throws InvalidVersionSp return restriction; } + @Nullable public static VersionRange createFromVersion(String version) { if (DefaultArtifact.empty(version)) { return null; diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/ResolveFile.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/ResolveFile.java index 16942d0b0056..4a0e47ccd807 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/ResolveFile.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/ResolveFile.java @@ -21,11 +21,15 @@ import java.io.File; import java.nio.file.Paths; +import org.apache.maven.api.annotations.Nullable; + /** * Resolve relative file path against the given base directory */ @Deprecated public class ResolveFile { + + @Nullable public static File resolveFile(File file, String baseDirectory) { if (file == null) { return null; diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jStdoutLogger.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jStdoutLogger.java index 7433436dcb72..66f430803c63 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jStdoutLogger.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/logging/Slf4jStdoutLogger.java @@ -20,6 +20,7 @@ import java.io.PrintStream; +import org.apache.maven.api.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.Marker; @@ -61,6 +62,7 @@ public void error(String msg, Throwable t) { // // Don't need any of this // + @Nullable public String getName() { return null; } diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenProperties.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenProperties.java index 606eb65b5c10..317950fca6d7 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenProperties.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenProperties.java @@ -44,6 +44,7 @@ import java.util.Set; import java.util.function.UnaryOperator; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.impl.model.DefaultInterpolator; /** @@ -272,6 +273,7 @@ void putAllSubstituted(Map m) { storage.putAll(m); } + @Nullable public String put(String key, List commentLines, List valueLines) { commentLines = new ArrayList<>(commentLines); valueLines = new ArrayList<>(valueLines); @@ -305,6 +307,7 @@ public String put(String key, List commentLines, List valueLines return storage.put(key, property[1]); } + @Nullable public String put(String key, List commentLines, String value) { commentLines = new ArrayList<>(commentLines); this.layout.put(key, new Layout(commentLines, null)); @@ -843,6 +846,7 @@ public PropertiesReader(Reader reader, boolean maybeTyped) { * * @throws IOException in case of an I/O error */ + @Nullable public String readProperty() throws IOException { commentLines.clear(); valueLines.clear(); diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingResult.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingResult.java index 8f5669bf4d4e..1f5bb36b5cef 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingResult.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingResult.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.Objects; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.Model; import org.apache.maven.model.Profile; @@ -81,11 +82,13 @@ public DefaultModelBuildingResult addModelId(String modelId) { } @Override + @Nullable public Model getRawModel() { return rawModels.get(modelIds.get(0)); } @Override + @Nullable public Model getRawModel(String modelId) { return rawModels.get(modelId); } @@ -100,6 +103,7 @@ public DefaultModelBuildingResult setRawModel(String modelId, Model rawModel) { } @Override + @Nullable public List getActivePomProfiles(String modelId) { return activePomProfiles.get(modelId); } diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/FileModelSource.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/FileModelSource.java index f1a4e150495f..bd112783dd9f 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/FileModelSource.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/FileModelSource.java @@ -23,6 +23,7 @@ import java.nio.file.Files; import java.nio.file.Path; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.building.FileSource; /** @@ -58,6 +59,7 @@ public File getPomFile() { } @Override + @Nullable public ModelSource2 getRelatedSource(String relPath) { relPath = relPath.replace('\\', File.separatorChar).replace('/', File.separatorChar); diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java index 540d89100277..b624d1064d75 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java @@ -23,6 +23,7 @@ import java.util.Collections; import java.util.List; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.Model; /** @@ -87,6 +88,7 @@ public ModelBuildingResult getResult() { * * @return The erroneous model or {@code null} if not available. */ + @Nullable public Model getModel() { if (result == null) { return null; diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/BuildTimestampValueSource.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/BuildTimestampValueSource.java index c6ff41d63bfc..911ad56edf69 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/BuildTimestampValueSource.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/BuildTimestampValueSource.java @@ -21,6 +21,7 @@ import java.util.Date; import java.util.Properties; +import org.apache.maven.api.annotations.Nullable; import org.codehaus.plexus.interpolation.AbstractValueSource; /** @@ -36,6 +37,7 @@ class BuildTimestampValueSource extends AbstractValueSource { } @Override + @Nullable public Object getValue(String expression) { if ("build.timestamp".equals(expression) || "maven.build.timestamp".equals(expression)) { return mavenBuildTimestamp.formattedTimestamp(); diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ObjectBasedValueSource.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ObjectBasedValueSource.java index 406703071c74..3b83e47fc3e7 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ObjectBasedValueSource.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ObjectBasedValueSource.java @@ -34,6 +34,7 @@ * limitations under the License. */ +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.interpolation.reflection.ReflectionValueExtractor; import org.codehaus.plexus.interpolation.AbstractValueSource; @@ -71,6 +72,7 @@ public ObjectBasedValueSource(Object root) { *

NOTE: The object-graph navigation actually takes place via the * {@link ReflectionValueExtractor} class.

*/ + @Nullable public Object getValue(String expression) { if (expression == null || expression.trim().isEmpty()) { return null; diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/PathTranslatingPostProcessor.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/PathTranslatingPostProcessor.java index 4c943d69a0d0..9b4b210801f6 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/PathTranslatingPostProcessor.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/PathTranslatingPostProcessor.java @@ -22,6 +22,7 @@ import java.util.Collection; import java.util.List; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.path.PathTranslator; import org.codehaus.plexus.interpolation.InterpolationPostProcessor; import org.codehaus.plexus.interpolation.util.ValueSourceUtils; @@ -50,6 +51,7 @@ class PathTranslatingPostProcessor implements InterpolationPostProcessor { } @Override + @Nullable public Object execute(String expression, Object value) { if (value != null) { expression = ValueSourceUtils.trimPrefix(expression, expressionPrefixes, true); diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java index 52d912ca8d72..3a9260420ed4 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java @@ -30,6 +30,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.InputLocation; import org.apache.maven.model.Model; import org.apache.maven.model.building.ModelBuildingRequest; @@ -124,6 +125,7 @@ private static final class InterpolateObjectAction { this.problems = problems; } + @Nullable public Object run() { while (!interpolationTargets.isEmpty()) { Object obj = interpolationTargets.removeFirst(); diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/UrlNormalizingPostProcessor.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/UrlNormalizingPostProcessor.java index 7c7d6ce09e34..1b549c26b291 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/UrlNormalizingPostProcessor.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/UrlNormalizingPostProcessor.java @@ -21,6 +21,7 @@ import java.util.HashSet; import java.util.Set; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.path.UrlNormalizer; import org.codehaus.plexus.interpolation.InterpolationPostProcessor; @@ -52,6 +53,7 @@ class UrlNormalizingPostProcessor implements InterpolationPostProcessor { } @Override + @Nullable public Object execute(String expression, Object value) { if (value != null && URL_EXPRESSIONS.contains(expression)) { return normalizer.normalize(value.toString()); diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/reflection/ClassMap.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/reflection/ClassMap.java index 6f86ff2bd9e1..5805d20d1f91 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/reflection/ClassMap.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/reflection/ClassMap.java @@ -23,6 +23,8 @@ import java.util.Hashtable; import java.util.Map; +import org.apache.maven.api.annotations.Nullable; + /** * A cache of introspection information for a specific class instance. * Keys {@link Method} objects by a concatenation of the @@ -81,6 +83,7 @@ Class getCachedClass() { * @return The found method. * @throws MethodMap.AmbiguousException in case of duplicate methods. */ + @Nullable public Method findMethod(String name, Object... params) throws MethodMap.AmbiguousException { String methodKey = makeMethodKey(name, params); Object cacheEntry = methodCache.get(methodKey); diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/reflection/ReflectionValueExtractor.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/reflection/ReflectionValueExtractor.java index e44d2df2d1b5..983b47ea2903 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/reflection/ReflectionValueExtractor.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/reflection/ReflectionValueExtractor.java @@ -82,6 +82,7 @@ public int skipChar() { return idx < expression.length() ? expression.charAt(idx++) : EOF; } + @Nullable public String nextToken(char delimiter) { int start = idx; @@ -97,6 +98,7 @@ public String nextToken(char delimiter) { return expression.substring(start, idx++); } + @Nullable public String nextPropertyName() { final int start = idx; @@ -162,6 +164,7 @@ public static Object evaluate(@Nonnull String expression, @Nullable Object root) * @return the object defined by the expression * @throws IntrospectionException if any */ + @Nullable public static Object evaluate(@Nonnull String expression, @Nullable Object root, boolean trimRootToken) throws IntrospectionException { Object value = root; diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/path/ProfileActivationFilePathInterpolator.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/path/ProfileActivationFilePathInterpolator.java index d1f896774ce2..778a07860ef3 100644 --- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/path/ProfileActivationFilePathInterpolator.java +++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/path/ProfileActivationFilePathInterpolator.java @@ -25,6 +25,7 @@ import java.io.File; import java.nio.file.Path; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.ActivationFile; import org.apache.maven.model.profile.ProfileActivationContext; import org.apache.maven.model.root.RootLocator; @@ -64,6 +65,7 @@ public ProfileActivationFilePathInterpolator setRootLocator(RootLocator rootLoca * * @return absolute path or {@code null} if the input was {@code null} */ + @Nullable public String interpolate(String path, ProfileActivationContext context) throws InterpolationException { if (path == null) { return null; @@ -75,7 +77,9 @@ public String interpolate(String path, ProfileActivationContext context) throws if (basedir != null) { interpolator.addValueSource(new AbstractValueSource(false) { + @Override + @Nullable public Object getValue(String expression) { if ("basedir".equals(expression) || "project.basedir".equals(expression)) { return basedir.getAbsolutePath(); @@ -88,7 +92,9 @@ public Object getValue(String expression) { } interpolator.addValueSource(new AbstractValueSource(false) { + @Override + @Nullable public Object getValue(String expression) { if ("project.rootDirectory".equals(expression)) { Path base = basedir != null ? basedir.toPath() : null; diff --git a/compat/maven-model-builder/src/test/java/org/apache/maven/model/building/DefaultModelBuilderTest.java b/compat/maven-model-builder/src/test/java/org/apache/maven/model/building/DefaultModelBuilderTest.java index 92b45cf465b5..3a51f3c0a6b4 100644 --- a/compat/maven-model-builder/src/test/java/org/apache/maven/model/building/DefaultModelBuilderTest.java +++ b/compat/maven-model-builder/src/test/java/org/apache/maven/model/building/DefaultModelBuilderTest.java @@ -18,6 +18,7 @@ */ package org.apache.maven.model.building; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.Dependency; import org.apache.maven.model.Parent; import org.apache.maven.model.Repository; @@ -111,11 +112,13 @@ public ModelSource resolveModel(String groupId, String artifactId, String versio } @Override + @Nullable public ModelSource resolveModel(Parent parent) throws UnresolvableModelException { return null; } @Override + @Nullable public ModelSource resolveModel(Dependency dependency) throws UnresolvableModelException { return null; } diff --git a/compat/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java b/compat/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java index a5232989e4d6..757dc9c9e0ea 100644 --- a/compat/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java +++ b/compat/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java @@ -35,6 +35,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.plugin.descriptor.lifecycle.Lifecycle; import org.apache.maven.api.plugin.descriptor.lifecycle.LifecycleConfiguration; import org.apache.maven.artifact.Artifact; @@ -320,6 +321,7 @@ public int hashCode() { return 10 + getId().hashCode(); } + @Nullable public MojoDescriptor getMojo(String goal) { if (getMojos() == null) { return null; // no mojo in this POM @@ -415,6 +417,7 @@ public void setPluginArtifact(Artifact pluginArtifact) { this.pluginArtifact = pluginArtifact; } + @Nullable public Lifecycle getLifecycleMapping(String lifecycleId) throws IOException, XMLStreamException { return getLifecycleMappings().get(lifecycleId); } diff --git a/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java b/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java index 78d54a2aa6d4..83b12fc843e4 100644 --- a/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java +++ b/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java @@ -18,6 +18,7 @@ */ package org.apache.maven.repository.internal; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.building.ModelCache; import org.eclipse.aether.RepositoryCache; import org.eclipse.aether.RepositorySystemSession; @@ -34,6 +35,7 @@ class DefaultModelCache implements ModelCache { private final RepositoryCache cache; + @Nullable public static ModelCache newInstance(RepositorySystemSession session) { if (session.getCache() == null) { return null; diff --git a/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/relocation/DistributionManagementArtifactRelocationSource.java b/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/relocation/DistributionManagementArtifactRelocationSource.java index 7121855f3055..6da4a815bed5 100644 --- a/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/relocation/DistributionManagementArtifactRelocationSource.java +++ b/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/relocation/DistributionManagementArtifactRelocationSource.java @@ -21,6 +21,7 @@ import javax.inject.Named; import javax.inject.Singleton; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.DistributionManagement; import org.apache.maven.model.Model; import org.apache.maven.model.Relocation; @@ -51,6 +52,7 @@ public final class DistributionManagementArtifactRelocationSource implements Mav private static final Logger LOGGER = LoggerFactory.getLogger(DistributionManagementArtifactRelocationSource.class); @Override + @Nullable public Artifact relocatedTarget( RepositorySystemSession session, ArtifactDescriptorResult artifactDescriptorResult, Model model) { DistributionManagement distMgmt = model.getDistributionManagement(); diff --git a/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/relocation/UserPropertiesArtifactRelocationSource.java b/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/relocation/UserPropertiesArtifactRelocationSource.java index 37a7c3b416bf..d6ab95fff0b6 100644 --- a/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/relocation/UserPropertiesArtifactRelocationSource.java +++ b/compat/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/relocation/UserPropertiesArtifactRelocationSource.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.model.Model; import org.apache.maven.repository.internal.MavenArtifactRelocationSource; import org.apache.maven.repository.internal.RelocatedArtifact; @@ -59,6 +60,7 @@ public final class UserPropertiesArtifactRelocationSource implements MavenArtifa private static final Artifact SENTINEL = new DefaultArtifact("org.apache.maven.banned:user-relocation:1.0"); @Override + @Nullable public Artifact relocatedTarget( RepositorySystemSession session, ArtifactDescriptorResult artifactDescriptorResult, Model model) throws ArtifactDescriptorException { diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnenc/ConsolePasswordPrompt.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnenc/ConsolePasswordPrompt.java index 95a8cab0a580..8ebd642e1da7 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnenc/ConsolePasswordPrompt.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnenc/ConsolePasswordPrompt.java @@ -22,6 +22,7 @@ import java.util.Map; import java.util.Optional; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.di.Inject; import org.apache.maven.api.di.Named; import org.apache.maven.api.di.Singleton; @@ -58,6 +59,7 @@ public Optional configTemplate() { } @Override + @Nullable public String handle(String config) throws SecDispatcherException { if (NAME.equals(config)) { try { @@ -70,6 +72,7 @@ public String handle(String config) throws SecDispatcherException { } @Override + @Nullable public SecDispatcher.ValidationResponse validateConfiguration(String config) { if (NAME.equals(config)) { return new SecDispatcher.ValidationResponse(getClass().getSimpleName(), true, Map.of(), List.of()); diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/builtin/BuiltinShellCommandRegistryFactory.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/builtin/BuiltinShellCommandRegistryFactory.java index 54fa219bd2bf..d8da76a0d3ba 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/builtin/BuiltinShellCommandRegistryFactory.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/builtin/BuiltinShellCommandRegistryFactory.java @@ -31,6 +31,7 @@ import java.util.stream.Stream; import org.apache.maven.api.Lifecycle; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.cli.InvokerException; import org.apache.maven.api.cli.ParserRequest; import org.apache.maven.api.di.Named; @@ -121,6 +122,7 @@ public List commandInfo(String command) { } @Override + @Nullable public CmdDesc commandDescription(List args) { return null; } diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/logging/Slf4jLogger.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/logging/Slf4jLogger.java index 5332b9ca920f..efa06e8eaa3b 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/logging/Slf4jLogger.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/logging/Slf4jLogger.java @@ -18,6 +18,7 @@ */ package org.apache.maven.cling.logging; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.logging.ProjectBuildLogAppender; import org.codehaus.plexus.logging.Logger; @@ -140,6 +141,7 @@ public void setThreshold(int threshold) {} * Warning: ignored (always return null). */ @Override + @Nullable public Logger getChildLogger(String name) { return null; } diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenProperties.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenProperties.java index da01bf6a9650..5be925011fe7 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenProperties.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenProperties.java @@ -44,6 +44,7 @@ import java.util.Set; import java.util.function.UnaryOperator; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.impl.model.DefaultInterpolator; /** @@ -271,6 +272,7 @@ void putAllSubstituted(Map m) { storage.putAll(m); } + @Nullable public String put(String key, List commentLines, List valueLines) { commentLines = new ArrayList<>(commentLines); valueLines = new ArrayList<>(valueLines); @@ -304,6 +306,7 @@ public String put(String key, List commentLines, List valueLines return storage.put(key, property[1]); } + @Nullable public String put(String key, List commentLines, String value) { commentLines = new ArrayList<>(commentLines); this.layout.put(key, new Layout(commentLines, null)); @@ -842,6 +845,7 @@ public PropertiesReader(Reader reader, boolean maybeTyped) { * * @throws IOException in case of an I/O error */ + @Nullable public String readProperty() throws IOException { commentLines.clear(); valueLines.clear(); diff --git a/impl/maven-core/src/main/java/org/apache/maven/ReactorReader.java b/impl/maven-core/src/main/java/org/apache/maven/ReactorReader.java index 1c242712ba49..9e8e5d116947 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/ReactorReader.java +++ b/impl/maven-core/src/main/java/org/apache/maven/ReactorReader.java @@ -43,6 +43,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.model.Model; import org.apache.maven.api.services.Lookup; import org.apache.maven.eventspy.EventSpy; @@ -97,6 +98,7 @@ public WorkspaceRepository getRepository() { return repository; } + @Nullable public File findArtifact(Artifact artifact) { MavenProject project = getProject(artifact); diff --git a/impl/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java b/impl/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java index a093e4d90933..5968f93e6fec 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java +++ b/impl/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java @@ -29,6 +29,7 @@ import java.util.Optional; import java.util.stream.Collectors; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.DefaultArtifactHandler; import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; @@ -69,6 +70,7 @@ private static String nullify(String string) { return (string == null || string.isEmpty()) ? null : string; } + @Nullable public static org.apache.maven.artifact.Artifact toArtifact(Dependency dependency) { if (dependency == null) { return null; @@ -81,6 +83,7 @@ public static org.apache.maven.artifact.Artifact toArtifact(Dependency dependenc return result; } + @Nullable public static org.apache.maven.artifact.Artifact toArtifact(Artifact artifact) { if (artifact == null) { return null; @@ -132,6 +135,7 @@ public static void toArtifacts( } } + @Nullable public static Artifact toArtifact(org.apache.maven.artifact.Artifact artifact) { if (artifact == null) { return null; @@ -161,6 +165,7 @@ public static Artifact toArtifact(org.apache.maven.artifact.Artifact artifact) { return result; } + @Nullable public static Dependency toDependency( org.apache.maven.artifact.Artifact artifact, Collection exclusions) { if (artifact == null) { diff --git a/impl/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java b/impl/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java index 1617b19c3714..de9715002011 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java +++ b/impl/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java @@ -36,6 +36,7 @@ import java.util.Set; import org.apache.maven.RepositoryUtils; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.InvalidRepositoryException; @@ -54,6 +55,7 @@ import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.model.Dependency; import org.apache.maven.model.Plugin; +import org.apache.maven.model.Repository; import org.apache.maven.repository.Proxy; import org.apache.maven.settings.Mirror; import org.eclipse.aether.RepositorySystemSession; @@ -97,6 +99,7 @@ public Artifact createProjectArtifact(String groupId, String artifactId, String } // DefaultProjectBuilder + @Nullable public Artifact createDependencyArtifact(Dependency d) { if (d.getVersion() == null) { return null; @@ -130,6 +133,7 @@ public Artifact createDependencyArtifact(Dependency d) { } // DefaultProjectBuilder + @Nullable public Artifact createExtensionArtifact(String groupId, String artifactId, String version) { VersionRange versionRange; try { @@ -147,6 +151,7 @@ public Artifact createParentArtifact(String groupId, String artifactId, String v } // DefaultProjectBuilder + @Nullable public Artifact createPluginArtifact(Plugin plugin) { VersionRange versionRange; try { @@ -296,9 +301,8 @@ private ArtifactRepositoryLayout getLayout(String id) { // Taken from LegacyRepositorySystem // - public static org.apache.maven.model.Repository fromSettingsRepository( - org.apache.maven.settings.Repository settingsRepository) { - org.apache.maven.model.Repository modelRepository = new org.apache.maven.model.Repository(); + public static Repository fromSettingsRepository(org.apache.maven.settings.Repository settingsRepository) { + Repository modelRepository = new Repository(); modelRepository.setId(settingsRepository.getId()); modelRepository.setLayout(settingsRepository.getLayout()); modelRepository.setName(settingsRepository.getName()); @@ -324,8 +328,8 @@ public static ArtifactRepository buildArtifactRepository(org.apache.maven.settin return buildArtifactRepository(fromSettingsRepository(repo)); } - public static ArtifactRepository buildArtifactRepository(org.apache.maven.model.Repository repo) - throws InvalidRepositoryException { + @Nullable + public static ArtifactRepository buildArtifactRepository(Repository repo) throws InvalidRepositoryException { if (repo != null) { String id = repo.getId(); @@ -600,6 +604,7 @@ public Set getRepoIds(List repositories) { * @return corresponding effective repositories * @since 3.6.1 */ + @Nullable public List getEffectiveRepositories(List repositories) { if (repositories == null) { return null; @@ -692,6 +697,7 @@ public ArtifactRepository createLocalRepository(File localRepository) throws Inv private static final String EXTERNAL_HTTP_WILDCARD = "external:http:*"; + @Nullable public static Mirror getMirror(ArtifactRepository repository, List mirrors) { String repoId = repository.getId(); diff --git a/impl/maven-core/src/main/java/org/apache/maven/configuration/internal/EnhancedConfigurationConverter.java b/impl/maven-core/src/main/java/org/apache/maven/configuration/internal/EnhancedConfigurationConverter.java index 0aff600e7591..24b1d5ed267b 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/configuration/internal/EnhancedConfigurationConverter.java +++ b/impl/maven-core/src/main/java/org/apache/maven/configuration/internal/EnhancedConfigurationConverter.java @@ -18,6 +18,7 @@ */ package org.apache.maven.configuration.internal; +import org.apache.maven.api.annotations.Nullable; import org.codehaus.plexus.component.configurator.ComponentConfigurationException; import org.codehaus.plexus.component.configurator.ConfigurationListener; import org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter; @@ -66,6 +67,7 @@ protected Object fromExpression( } } + @Nullable public Object fromConfiguration( final ConverterLookup lookup, final PlexusConfiguration configuration, diff --git a/impl/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java b/impl/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java index eedfe23016a6..40396bada48d 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java +++ b/impl/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java @@ -30,6 +30,7 @@ import java.util.Properties; import org.apache.maven.api.MonotonicClock; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.eventspy.internal.EventSpyDispatcher; import org.apache.maven.model.Profile; @@ -221,6 +222,7 @@ public static MavenExecutionRequest copy(MavenExecutionRequest original) { } @Override + @Nullable public String getBaseDirectory() { if (basedir == null) { return null; diff --git a/impl/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java b/impl/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java index 580dddeea516..b834f89cbadd 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java +++ b/impl/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.project.DependencyResolutionResult; import org.apache.maven.project.MavenProject; @@ -86,6 +87,7 @@ public boolean hasExceptions() { return !getExceptions().isEmpty(); } + @Nullable public BuildSummary getBuildSummary(MavenProject project) { return buildSummaries.get(project); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java b/impl/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java index 400e1653cc31..cf0dd5ae1fcd 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java +++ b/impl/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java @@ -31,6 +31,7 @@ import java.util.stream.Collectors; import org.apache.maven.api.Session; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.RepositoryCache; import org.apache.maven.impl.SettingsUtilsV4; @@ -445,11 +446,13 @@ public List getSortedProjects() { // Used by Tycho and will break users and force them to upgrade to Maven 3.1 so we should really leave // this here, possibly indefinitely. // + @Nullable public RepositoryCache getRepositoryCache() { return null; } @Deprecated + @Nullable public EventDispatcher getEventDispatcher() { return null; } diff --git a/impl/maven-core/src/main/java/org/apache/maven/execution/ReactorManager.java b/impl/maven-core/src/main/java/org/apache/maven/execution/ReactorManager.java index bc02255c4f67..09f5c4dfdc9c 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/execution/ReactorManager.java +++ b/impl/maven-core/src/main/java/org/apache/maven/execution/ReactorManager.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.project.CycleDetectedException; @@ -156,10 +157,12 @@ public void registerBuildSuccess(MavenProject project, Duration time) { buildSuccessesByProject.put(getProjectKey(project), new BuildSuccess(project, time)); } + @Nullable public BuildFailure getBuildFailure(MavenProject project) { return buildFailuresByProject.get(getProjectKey(project)); } + @Nullable public BuildSuccess getBuildSuccess(MavenProject project) { return buildSuccessesByProject.get(getProjectKey(project)); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/aether/TypeRegistryAdapter.java b/impl/maven-core/src/main/java/org/apache/maven/internal/aether/TypeRegistryAdapter.java index 96e65dfcea84..c713b190f92f 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/aether/TypeRegistryAdapter.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/aether/TypeRegistryAdapter.java @@ -20,6 +20,7 @@ import org.apache.maven.api.PathType; import org.apache.maven.api.Type; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.services.TypeRegistry; import org.apache.maven.impl.resolver.type.DefaultType; import org.eclipse.aether.artifact.ArtifactType; @@ -35,6 +36,7 @@ class TypeRegistryAdapter implements ArtifactTypeRegistry { } @Override + @Nullable public ArtifactType get(String typeId) { Type type = typeRegistry.require(typeId); if (type instanceof ArtifactType artifactType) { diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/impl/Graph.java b/impl/maven-core/src/main/java/org/apache/maven/internal/impl/Graph.java index 1f6cef3f0b13..953d45fb7e40 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/impl/Graph.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/impl/Graph.java @@ -27,6 +27,8 @@ import java.util.List; import java.util.Map; +import org.apache.maven.api.annotations.Nullable; + class Graph { private enum DfsState { VISITING, @@ -35,6 +37,7 @@ private enum DfsState { final Map vertices = new LinkedHashMap<>(); + @Nullable public Vertex getVertex(String id) { return vertices.get(id); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifact.java b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifact.java index e928e6101896..210ed7a986e2 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifact.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifact.java @@ -31,6 +31,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Supplier; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.services.ModelBuilderException; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.internal.transformation.TransformationFailedException; @@ -90,7 +91,7 @@ public void setFile(File file) { } @Override - public synchronized File getFile() { + public synchronized @Nullable File getFile() { try { String state = mayUpdate(); if (state == null) { diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifactHandler.java b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifactHandler.java index 64087c262d47..5f6212291f26 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifactHandler.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifactHandler.java @@ -18,6 +18,7 @@ */ package org.apache.maven.internal.transformation.impl; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.handler.ArtifactHandler; import static java.util.Objects.requireNonNull; @@ -42,6 +43,7 @@ public String getClassifier() { } @Override + @Nullable public String getDirectory() { return null; } diff --git a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java index f85a9bc51d05..40436a7a174f 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java +++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java @@ -30,6 +30,7 @@ import java.util.Objects; import java.util.stream.Collectors; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.services.LifecycleRegistry; import org.apache.maven.api.services.Lookup; import org.apache.maven.api.services.LookupException; @@ -85,6 +86,7 @@ public DefaultLifecycles(LifecycleRegistry registry, Lookup lookup) { * @param phase * @return */ + @Nullable public Lifecycle get(String phase) { return getPhaseToLifecycleMap().get(phase); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java index e0f26f8b35fd..5871efbb1a92 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java +++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java @@ -28,6 +28,7 @@ import java.util.Map; import java.util.Set; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.lifecycle.internal.ExecutionPlanItem; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.MojoExecution; @@ -106,6 +107,7 @@ public Iterator iterator() { * The execution plan item * @return The ExecutionPlanItem or null if none can be found */ + @Nullable public ExecutionPlanItem findLastInPhase(String requestedPhase) { return lastMojoExecutionForAllPhases.get(requestedPhase); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java index 6066febf3337..3fa7de6d252a 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java +++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java @@ -28,6 +28,7 @@ import java.util.Map; import java.util.Set; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.services.Lookup; import org.apache.maven.api.xml.XmlNode; import org.apache.maven.internal.impl.DefaultLifecycleRegistry; @@ -78,6 +79,7 @@ public DefaultLifecyclePluginAnalyzer(Lookup lookup, DefaultLifecycles defaultLi // from the plugin.xml inside a plugin. @Override + @Nullable public Set getPluginsBoundByDefaultToAllLifecycles(String packaging) { if (logger.isDebugEnabled()) { logger.debug("Looking up lifecycle mappings for packaging " + packaging + " from " diff --git a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/DefaultLifecycleMapping.java b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/DefaultLifecycleMapping.java index 859430902622..14eb9c69bdd3 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/DefaultLifecycleMapping.java +++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/DefaultLifecycleMapping.java @@ -23,6 +23,8 @@ import java.util.List; import java.util.Map; +import org.apache.maven.api.annotations.Nullable; + import static java.util.function.Function.identity; import static java.util.stream.Collectors.toMap; @@ -99,6 +101,7 @@ public Map getLifecycles() { @Deprecated @Override + @Nullable public List getOptionalMojos(String lifecycle) { return null; } diff --git a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/Lifecycle.java b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/Lifecycle.java index 8b6387f4f69b..c5db1d218695 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/Lifecycle.java +++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/Lifecycle.java @@ -22,6 +22,8 @@ import java.util.LinkedHashMap; import java.util.Map; +import org.apache.maven.api.annotations.Nullable; + /** * Lifecycle definition for a packaging (multiple packagings share the same lifecycle id = usually "default"). */ @@ -69,6 +71,7 @@ public void setLifecyclePhases(Map lifecyclePhases) { } @Deprecated + @Nullable public Map getPhases() { Map lphases = getLifecyclePhases(); if (lphases == null) { diff --git a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/LifecyclePhase.java b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/LifecyclePhase.java index 7cc65939b074..0e67684fd01c 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/LifecyclePhase.java +++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/mapping/LifecyclePhase.java @@ -28,6 +28,8 @@ import java.util.function.Function; import java.util.stream.Collectors; +import org.apache.maven.api.annotations.Nullable; + /** * Mojo (goals) bindings to a lifecycle phase. * @@ -74,6 +76,7 @@ public String toString() { } @Deprecated + @Nullable public static Map toLegacyMap(Map lifecyclePhases) { if (lifecyclePhases == null) { return null; diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java index 6d9c76100d8e..3c9830902b21 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java @@ -27,6 +27,7 @@ import java.util.List; import org.apache.maven.api.Project; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.services.MavenException; import org.apache.maven.execution.MavenSession; import org.apache.maven.execution.MojoExecutionEvent; @@ -246,6 +247,7 @@ public void execute() throws MojoExecutionException { public void setLog(Log log) {} @Override + @Nullable public Log getLog() { return null; } diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java index 2fad875c99c6..f0434c052a37 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java @@ -28,6 +28,7 @@ import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.Artifact; import org.apache.maven.project.ExtensionDescriptor; import org.apache.maven.project.MavenProject; @@ -108,6 +109,7 @@ public Key createKey(List extensionArtifacts) { return new CacheKey(extensionArtifacts); } + @Nullable public CacheRecord get(Key key) { return cache.get(key); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java index 62fd05332413..91e6cbcdd226 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java @@ -29,6 +29,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.maven.RepositoryUtils; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.Artifact; import org.apache.maven.model.Plugin; import org.apache.maven.project.MavenProject; @@ -143,6 +144,7 @@ public Key createKey( return new CacheKey(plugin, parentRealm, foreignImports, dependencyFilter, repositories, session); } + @Nullable public CacheRecord get(Key key) { return cache.get(key); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java index 0c089a67ee92..a7c7b23f5391 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java @@ -22,6 +22,7 @@ import java.nio.file.Path; import java.util.Properties; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.execution.MavenSession; import org.apache.maven.impl.model.reflection.ReflectionValueExtractor; import org.apache.maven.plugin.descriptor.MojoDescriptor; @@ -127,6 +128,7 @@ public Object evaluate(String expr) throws ExpressionEvaluationException { @Override @SuppressWarnings("checkstyle:methodlength") + @Nullable public Object evaluate(String expr, Class type) throws ExpressionEvaluationException { Object value = null; diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorV4.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorV4.java index 3264fce446ae..bb9ab7e6605d 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorV4.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorV4.java @@ -27,6 +27,7 @@ import org.apache.maven.api.MojoExecution; import org.apache.maven.api.Project; import org.apache.maven.api.Session; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.impl.model.reflection.ReflectionValueExtractor; import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; import org.codehaus.plexus.component.configurator.expression.TypeAwareExpressionEvaluator; @@ -97,6 +98,7 @@ public Object evaluate(String expr) throws ExpressionEvaluationException { @Override @SuppressWarnings("checkstyle:methodlength") + @Nullable public Object evaluate(String expr, Class type) throws ExpressionEvaluationException { Object value = null; diff --git a/impl/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java b/impl/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java index 613367bc26b7..b1de9889864c 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java +++ b/impl/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java @@ -27,6 +27,7 @@ import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; +import org.apache.maven.api.annotations.Nullable; import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.classworlds.realm.NoSuchRealmException; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable; @@ -85,6 +86,7 @@ public Key createKey(List extensionRealms) { return new CacheKey(extensionRealms); } + @Nullable public CacheRecord get(Key key) { return cache.get(key); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/project/Graph.java b/impl/maven-core/src/main/java/org/apache/maven/project/Graph.java index 6baae1e00c98..1e21c8dd1129 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/project/Graph.java +++ b/impl/maven-core/src/main/java/org/apache/maven/project/Graph.java @@ -27,6 +27,8 @@ import java.util.List; import java.util.Map; +import org.apache.maven.api.annotations.Nullable; + class Graph { private enum DfsState { VISITING, @@ -35,6 +37,7 @@ private enum DfsState { final Map vertices = new LinkedHashMap<>(); + @Nullable public Vertex getVertex(String id) { return vertices.get(id); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/project/ReactorModelPool.java b/impl/maven-core/src/main/java/org/apache/maven/project/ReactorModelPool.java index f4383692526c..8ac34f87557d 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/project/ReactorModelPool.java +++ b/impl/maven-core/src/main/java/org/apache/maven/project/ReactorModelPool.java @@ -22,6 +22,8 @@ import java.util.HashMap; import java.util.Map; +import org.apache.maven.api.annotations.Nullable; + /** * Holds all POM files that are known to the reactor. This allows the project builder to resolve imported POMs from the * reactor when building another project's effective model. @@ -30,6 +32,7 @@ class ReactorModelPool { private final Map pomFiles = new HashMap<>(); + @Nullable public File get(String groupId, String artifactId, String version) { return pomFiles.get(new CacheKey(groupId, artifactId, version)); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/project/artifact/PluginArtifact.java b/impl/maven-core/src/main/java/org/apache/maven/project/artifact/PluginArtifact.java index 18c3442d0635..a30834c66845 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/project/artifact/PluginArtifact.java +++ b/impl/maven-core/src/main/java/org/apache/maven/project/artifact/PluginArtifact.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.List; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.handler.ArtifactHandler; @@ -57,12 +58,15 @@ public List getManagedDependencies() { // TODO: this is duplicate of MavenPluginArtifactHandlerProvider provided one static class PluginArtifactHandler implements ArtifactHandler { + @Override + @Nullable public String getClassifier() { return null; } @Override + @Nullable public String getDirectory() { return null; } diff --git a/impl/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java b/impl/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java index c040fc93446e..2ec7d80ed6d3 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java +++ b/impl/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.List; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.model.Dependency; @@ -62,12 +63,15 @@ public List getManagedDependencies() { // TODO: this is duplicate of PomArtifactHandlerProvider provided one static class PomArtifactHandler implements ArtifactHandler { + @Override + @Nullable public String getClassifier() { return null; } @Override + @Nullable public String getDirectory() { return null; } diff --git a/impl/maven-core/src/main/java/org/apache/maven/settings/SettingsUtils.java b/impl/maven-core/src/main/java/org/apache/maven/settings/SettingsUtils.java index e2ef69ff7294..2b2c0ec095b3 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/settings/SettingsUtils.java +++ b/impl/maven-core/src/main/java/org/apache/maven/settings/SettingsUtils.java @@ -18,6 +18,7 @@ */ package org.apache.maven.settings; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.impl.SettingsUtilsV4; /** @@ -62,6 +63,7 @@ public static org.apache.maven.model.Profile convertFromSettingsProfile(Profile * @param settings could be null * @return a new instance of settings or null if settings was null. */ + @Nullable public static Settings copySettings(Settings settings) { if (settings == null) { return null; diff --git a/impl/maven-core/src/test/java/org/apache/maven/SimpleLookup.java b/impl/maven-core/src/test/java/org/apache/maven/SimpleLookup.java index 79370b9982ac..4ed1b57435a5 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/SimpleLookup.java +++ b/impl/maven-core/src/test/java/org/apache/maven/SimpleLookup.java @@ -22,6 +22,7 @@ import java.util.Map; import java.util.Optional; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.services.Lookup; import org.apache.maven.api.services.LookupException; @@ -42,6 +43,7 @@ public T lookup(Class type) { } @Override + @Nullable public T lookup(Class type, String name) { return null; } diff --git a/impl/maven-core/src/test/java/org/apache/maven/di/DiTest.java b/impl/maven-core/src/test/java/org/apache/maven/di/DiTest.java index 2b3a0a861cb3..04c55fcd1ee6 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/di/DiTest.java +++ b/impl/maven-core/src/test/java/org/apache/maven/di/DiTest.java @@ -30,6 +30,7 @@ import com.google.inject.Binding; import com.google.inject.Injector; import com.google.inject.TypeLiteral; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.model.Model; import org.apache.maven.api.services.Source; import org.apache.maven.api.spi.ModelParser; @@ -121,6 +122,7 @@ public Optional locate(Path dir) { } @Override + @Nullable public Model parse(Source source, Map options) throws ModelParserException { return null; } @@ -193,6 +195,7 @@ public Optional locate(Path dir) { } @Override + @Nullable public Model parse(Source source, Map options) throws ModelParserException { return null; } @@ -264,6 +267,7 @@ public Optional locate(Path dir) { } @Override + @Nullable public Model parse(Source source, Map options) throws ModelParserException { return null; } @@ -344,6 +348,7 @@ public Optional locate(Path dir) { } @Override + @Nullable public Model parse(Source source, Map options) throws ModelParserException { return null; } @@ -357,6 +362,7 @@ public Optional locate(Path dir) { } @Override + @Nullable public Model parse(Source source, Map options) throws ModelParserException { return null; } diff --git a/impl/maven-core/src/test/java/org/apache/maven/internal/impl/TestArtifactHandler.java b/impl/maven-core/src/test/java/org/apache/maven/internal/impl/TestArtifactHandler.java index 2584b7dc59bd..adc1de51eac6 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/internal/impl/TestArtifactHandler.java +++ b/impl/maven-core/src/test/java/org/apache/maven/internal/impl/TestArtifactHandler.java @@ -18,6 +18,7 @@ */ package org.apache.maven.internal.impl; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.handler.ArtifactHandler; /** @@ -40,6 +41,7 @@ class TestArtifactHandler implements ArtifactHandler { } @Override + @Nullable public String getClassifier() { return null; } diff --git a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/MojoExecutionXPathContainer.java b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/MojoExecutionXPathContainer.java index 73d53bea5baf..4004c3a7bde7 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/MojoExecutionXPathContainer.java +++ b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/MojoExecutionXPathContainer.java @@ -24,6 +24,7 @@ import org.apache.commons.jxpath.JXPathContext; import org.apache.commons.jxpath.JXPathNotFoundException; import org.apache.commons.jxpath.ri.JXPathContextReferenceImpl; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.plugin.MojoExecution; import org.apache.maven.project.harness.Xpp3DomPointerFactory; @@ -46,6 +47,7 @@ public boolean containsXPathExpression(String expression) { return context.getValue(expression) != null; } + @Nullable public Object getValue(String expression) { try { return context.getValue(expression); diff --git a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/BuildPluginManagerStub.java b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/BuildPluginManagerStub.java index cbed25bebb52..35c372872a27 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/BuildPluginManagerStub.java +++ b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/BuildPluginManagerStub.java @@ -20,6 +20,7 @@ import java.util.List; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.BuildPluginManager; @@ -34,6 +35,7 @@ */ public class BuildPluginManagerStub implements BuildPluginManager { + @Nullable public PluginDescriptor loadPlugin( Plugin plugin, List repositories, RepositorySystemSession session) { return null; @@ -44,6 +46,7 @@ public MojoDescriptor getMojoDescriptor( return MojoExecutorStub.createMojoDescriptor(plugin); } + @Nullable public ClassRealm getPluginRealm(MavenSession session, PluginDescriptor pluginDescriptor) { return null; } diff --git a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/CompletionServiceStub.java b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/CompletionServiceStub.java index cdfe05b537de..3298df0ce40a 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/CompletionServiceStub.java +++ b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/CompletionServiceStub.java @@ -27,6 +27,7 @@ import java.util.concurrent.FutureTask; import java.util.concurrent.TimeUnit; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.lifecycle.internal.ProjectSegment; /** @@ -62,14 +63,17 @@ public Future submit(Runnable task, ProjectSegment result) { return projectBuildFutureTask; } + @Nullable public Future take() throws InterruptedException { return null; } + @Nullable public Future poll() { return null; } + @Nullable public Future poll(long timeout, TimeUnit unit) throws InterruptedException { return null; } diff --git a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/MojoExecutorStub.java b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/MojoExecutorStub.java index 866309f1d29c..41e25e7a307e 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/MojoExecutorStub.java +++ b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/MojoExecutorStub.java @@ -24,6 +24,7 @@ import java.util.Collections; import java.util.List; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.services.MessageBuilderFactory; import org.apache.maven.execution.MavenSession; import org.apache.maven.lifecycle.LifecycleExecutionException; @@ -71,6 +72,7 @@ public void execute(MavenSession session, List mojoExecutions) th } @Override + @Nullable public List executeForkedExecutions(MojoExecution mojoExecution, MavenSession session) throws LifecycleExecutionException { return null; diff --git a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginPrefixResolverStub.java b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginPrefixResolverStub.java index dd759f951568..6eb03a7ae52a 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginPrefixResolverStub.java +++ b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginPrefixResolverStub.java @@ -18,6 +18,7 @@ */ package org.apache.maven.lifecycle.internal.stub; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException; import org.apache.maven.plugin.prefix.PluginPrefixRequest; import org.apache.maven.plugin.prefix.PluginPrefixResolver; @@ -37,6 +38,7 @@ public String getArtifactId() { return "bazbaz"; } + @Nullable public ArtifactRepository getRepository() { return null; } diff --git a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginVersionResolverStub.java b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginVersionResolverStub.java index 6ec4beb959e0..4f28993ca0fb 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginVersionResolverStub.java +++ b/impl/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/PluginVersionResolverStub.java @@ -18,6 +18,7 @@ */ package org.apache.maven.lifecycle.internal.stub; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.plugin.version.PluginVersionRequest; import org.apache.maven.plugin.version.PluginVersionResolutionException; import org.apache.maven.plugin.version.PluginVersionResolver; @@ -34,6 +35,7 @@ public String getVersion() { return "0.42"; } + @Nullable public ArtifactRepository getRepository() { return null; } diff --git a/impl/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleBindingsInjector.java b/impl/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleBindingsInjector.java index 38331d7c0ae2..66e34924d62b 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleBindingsInjector.java +++ b/impl/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleBindingsInjector.java @@ -29,6 +29,7 @@ import org.apache.maven.api.Packaging; import org.apache.maven.api.Type; import org.apache.maven.api.annotations.Nonnull; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.di.Inject; import org.apache.maven.api.di.Named; import org.apache.maven.api.di.Priority; @@ -78,6 +79,7 @@ public String id() { } @Override + @Nullable public Type type() { return null; } diff --git a/impl/maven-core/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java b/impl/maven-core/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java index 8d75e1644cf6..9882e6c2763a 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java +++ b/impl/maven-core/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java @@ -25,6 +25,7 @@ import org.apache.commons.jxpath.JXPathContext; import org.apache.commons.jxpath.JXPathNotFoundException; import org.apache.commons.jxpath.ri.JXPathContextReferenceImpl; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.project.MavenProject; public class PomTestWrapper { @@ -70,6 +71,7 @@ public boolean containsXPathExpression(String expression) { return context.getValue(expression) != null; } + @Nullable public Object getValue(String expression) { try { return context.getValue(expression); diff --git a/impl/maven-core/src/test/java/org/apache/maven/project/harness/Xpp3DomPointerFactory.java b/impl/maven-core/src/test/java/org/apache/maven/project/harness/Xpp3DomPointerFactory.java index 20ef83c50441..1a07e31e160c 100644 --- a/impl/maven-core/src/test/java/org/apache/maven/project/harness/Xpp3DomPointerFactory.java +++ b/impl/maven-core/src/test/java/org/apache/maven/project/harness/Xpp3DomPointerFactory.java @@ -23,7 +23,9 @@ import org.apache.commons.jxpath.ri.QName; import org.apache.commons.jxpath.ri.model.NodePointer; import org.apache.commons.jxpath.ri.model.NodePointerFactory; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.xml.XmlNode; +import org.codehaus.plexus.util.xml.Xpp3Dom; /** * A node pointer factory for JXPath to support Xpp3Dom. @@ -35,8 +37,9 @@ public int getOrder() { return 200; } + @Nullable public NodePointer createNodePointer(QName name, Object object, Locale locale) { - if (object instanceof org.codehaus.plexus.util.xml.Xpp3Dom xpp3Dom) { + if (object instanceof Xpp3Dom xpp3Dom) { object = xpp3Dom.getDom(); } if (object instanceof XmlNode xmlNode) { @@ -45,8 +48,9 @@ public NodePointer createNodePointer(QName name, Object object, Locale locale) { return null; } + @Nullable public NodePointer createNodePointer(NodePointer parent, QName name, Object object) { - if (object instanceof org.codehaus.plexus.util.xml.Xpp3Dom xpp3Dom) { + if (object instanceof Xpp3Dom xpp3Dom) { object = xpp3Dom.getDom(); } if (object instanceof XmlNode xmlNode) { diff --git a/impl/maven-di/src/main/java/org/apache/maven/di/Key.java b/impl/maven-di/src/main/java/org/apache/maven/di/Key.java index 4186e96fc764..6d6ce13e1082 100644 --- a/impl/maven-di/src/main/java/org/apache/maven/di/Key.java +++ b/impl/maven-di/src/main/java/org/apache/maven/di/Key.java @@ -154,7 +154,8 @@ public Key getTypeParameter(int index) { * * @return the qualifier object or null if none exists */ - public @Nullable Object getQualifier() { + @Nullable + public Object getQualifier() { return qualifier; } diff --git a/impl/maven-di/src/main/java/org/apache/maven/di/impl/ReflectionUtils.java b/impl/maven-di/src/main/java/org/apache/maven/di/impl/ReflectionUtils.java index 809e39e9552e..0f08b6bbff55 100644 --- a/impl/maven-di/src/main/java/org/apache/maven/di/impl/ReflectionUtils.java +++ b/impl/maven-di/src/main/java/org/apache/maven/di/impl/ReflectionUtils.java @@ -56,7 +56,8 @@ public final class ReflectionUtils { private static final Pattern PACKAGE_AND_PARENT = Pattern.compile(PACKAGE.pattern() + "(?:" + IDENT + "\\$\\d*)?"); private static final Pattern ARRAY_SIGNATURE = Pattern.compile("\\[L(.*?);"); - public static @Nullable Object getOuterClassInstance(Object innerClassInstance) { + @Nullable + public static Object getOuterClassInstance(Object innerClassInstance) { if (innerClassInstance == null) { return null; } @@ -79,7 +80,8 @@ public final class ReflectionUtils { return null; } - public static @Nullable Object qualifierOf(AnnotatedElement annotatedElement) { + @Nullable + public static Object qualifierOf(AnnotatedElement annotatedElement) { Object qualifier = null; for (Annotation annotation : annotatedElement.getDeclaredAnnotations()) { if (annotation.annotationType().isAnnotationPresent(Qualifier.class)) { @@ -97,7 +99,8 @@ public final class ReflectionUtils { return qualifier; } - public static @Nullable Annotation scopeOf(AnnotatedElement annotatedElement) { + @Nullable + public static Annotation scopeOf(AnnotatedElement annotatedElement) { Annotation scope = null; for (Annotation annotation : annotatedElement.getDeclaredAnnotations()) { if (annotation.annotationType().isAnnotationPresent(org.apache.maven.api.di.Scope.class)) { diff --git a/impl/maven-di/src/main/java/org/apache/maven/di/impl/Types.java b/impl/maven-di/src/main/java/org/apache/maven/di/impl/Types.java index abf37b07332a..fa8080c50e94 100644 --- a/impl/maven-di/src/main/java/org/apache/maven/di/impl/Types.java +++ b/impl/maven-di/src/main/java/org/apache/maven/di/impl/Types.java @@ -505,7 +505,8 @@ public Type[] getActualTypeArguments() { } @Override - public @Nullable Type getOwnerType() { + @Nullable + public Type getOwnerType() { return ownerType; } diff --git a/impl/maven-di/src/test/java/org/apache/maven/di/impl/InjectorImplTest.java b/impl/maven-di/src/test/java/org/apache/maven/di/impl/InjectorImplTest.java index f02eb011d9f1..ff5565721692 100644 --- a/impl/maven-di/src/test/java/org/apache/maven/di/impl/InjectorImplTest.java +++ b/impl/maven-di/src/test/java/org/apache/maven/di/impl/InjectorImplTest.java @@ -172,7 +172,9 @@ interface TestInterface { @Named static class ClassImpl implements TestInterface { + @Override + @Nullable public String getObj() { return null; } @@ -181,7 +183,9 @@ public String getObj() { @Named @Typed static class TypedClassImpl implements TestInterface { + @Override + @Nullable public String getObj() { return null; } diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultArtifactResolver.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultArtifactResolver.java index 3614056b280b..b28832adc008 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultArtifactResolver.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultArtifactResolver.java @@ -255,6 +255,7 @@ public Path getPath(@Nonnull Artifact artifact) { } @Override + @Nullable public ResultItem getResult(ArtifactCoordinates coordinates) { return results.get(coordinates); } diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultJavaToolchainFactory.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultJavaToolchainFactory.java index 2d1383904286..d361c5526e1e 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultJavaToolchainFactory.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultJavaToolchainFactory.java @@ -31,6 +31,7 @@ import org.apache.maven.api.Version; import org.apache.maven.api.VersionConstraint; import org.apache.maven.api.annotations.Nonnull; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.di.Inject; import org.apache.maven.api.di.Named; import org.apache.maven.api.di.Singleton; @@ -124,6 +125,7 @@ public ToolchainModel getModel() { } @Override + @Nullable public String findTool(String toolName) { Path toRet = findTool(toolName, Paths.get(getJavaHome()).normalize()); if (toRet != null) { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultModelUrlNormalizer.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultModelUrlNormalizer.java index 36bdb746b59a..25663f0de0b7 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultModelUrlNormalizer.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultModelUrlNormalizer.java @@ -18,6 +18,7 @@ */ package org.apache.maven.impl; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.di.Inject; import org.apache.maven.api.di.Named; import org.apache.maven.api.di.Singleton; @@ -46,6 +47,7 @@ public DefaultModelUrlNormalizer(UrlNormalizer urlNormalizer) { } @Override + @Nullable public Model normalize(Model model, ModelBuilderRequest request) { if (model == null) { return null; diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultModelVersionParser.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultModelVersionParser.java index 7bec04c92691..13d36fba5c28 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultModelVersionParser.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultModelVersionParser.java @@ -24,6 +24,7 @@ import org.apache.maven.api.VersionConstraint; import org.apache.maven.api.VersionRange; import org.apache.maven.api.annotations.Nonnull; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.di.Inject; import org.apache.maven.api.di.Named; import org.apache.maven.api.di.Singleton; @@ -152,6 +153,7 @@ public boolean contains(Version version) { } @Override + @Nullable public Boundary getUpperBoundary() { org.eclipse.aether.version.VersionRange.Bound bound = delegate.getUpperBound(); if (bound == null) { @@ -171,6 +173,7 @@ public boolean isInclusive() { } @Override + @Nullable public Boundary getLowerBoundary() { org.eclipse.aether.version.VersionRange.Bound bound = delegate.getLowerBound(); if (bound == null) { @@ -236,6 +239,7 @@ public boolean contains(Version version) { } @Override + @Nullable public VersionRange getVersionRange() { if (delegate.getRange() == null) { return null; @@ -244,6 +248,7 @@ public VersionRange getVersionRange() { } @Override + @Nullable public Version getRecommendedVersion() { if (delegate.getVersion() == null) { return null; diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/RequestTraceHelper.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/RequestTraceHelper.java index 44b54003f25d..efdb5ecd5493 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/RequestTraceHelper.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/RequestTraceHelper.java @@ -21,6 +21,7 @@ import java.util.stream.Collectors; import org.apache.maven.api.Session; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.services.Request; import org.eclipse.aether.RequestTrace; import org.eclipse.aether.collection.CollectRequest; @@ -78,6 +79,7 @@ public static void exit(ResolverTrace trace) { * @param trace The Resolver trace to convert * @return A new Maven trace, or null if the input trace was null */ + @Nullable public static org.apache.maven.api.services.RequestTrace toMaven(String context, RequestTrace trace) { if (trace != null) { return new org.apache.maven.api.services.RequestTrace( @@ -92,6 +94,7 @@ public static org.apache.maven.api.services.RequestTrace toMaven(String context, * @param trace The Maven trace to convert * @return A new Resolver trace, or null if the input trace was null */ + @Nullable public static RequestTrace toResolver(org.apache.maven.api.services.RequestTrace trace) { if (trace != null) { return RequestTrace.newChild(toResolver(trace.parent()), trace.data()); diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/cache/SoftIdentityMap.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/cache/SoftIdentityMap.java index 2c6c51b6606b..19ef3b34009e 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/cache/SoftIdentityMap.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/cache/SoftIdentityMap.java @@ -28,6 +28,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; +import org.apache.maven.api.annotations.Nullable; + /** * A Map implementation that uses soft references for both keys and values, * and compares keys using identity (==) rather than equals(). @@ -87,6 +89,7 @@ static ComputeReference computing(ReferenceQueue queue) { } @Override + @Nullable public V computeIfAbsent(K key, Function mappingFunction) { Objects.requireNonNull(key); Objects.requireNonNull(mappingFunction); diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java index 82ebd5a770f1..37ac400fdbc6 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java @@ -347,6 +347,7 @@ private int getParallelism() { return Math.max(1, Math.min(parallelism, Runtime.getRuntime().availableProcessors())); } + @Nullable public Model getRawModel(Path from, String groupId, String artifactId) { ModelSource source = getSource(groupId, artifactId); if (source != null) { @@ -362,6 +363,7 @@ public Model getRawModel(Path from, String groupId, String artifactId) { return null; } + @Nullable public Model getRawModel(Path from, Path path) { if (!Files.isRegularFile(path)) { throw new IllegalArgumentException("Not a regular file: " + path); @@ -390,6 +392,7 @@ private boolean addEdge(Path from, Path p) { } } + @Nullable public ModelSource getSource(String groupId, String artifactId) { Set sources = mappedSources.get(new GAKey(groupId, artifactId)); if (sources != null) { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelValidator.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelValidator.java index 126de225d4ea..db4e65e89cfb 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelValidator.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelValidator.java @@ -2231,6 +2231,7 @@ private static Severity getSeverity(int validationLevel, int errorThreshold) { } private static class SourceHint { + @Nullable public static SourceHint xmlNodeInputLocation(XmlNode xmlNode) { if (xmlNode.inputLocation() != null) { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultProfileActivationContext.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultProfileActivationContext.java index cba06096048e..ff402f8f8ac0 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultProfileActivationContext.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultProfileActivationContext.java @@ -34,6 +34,7 @@ import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.model.Model; import org.apache.maven.api.services.Interpolator; import org.apache.maven.api.services.InterpolatorException; @@ -215,6 +216,7 @@ public DefaultProfileActivationContext setInactiveProfileIds(List inacti } @Override + @Nullable public String getSystemProperty(String key) { Record record = records.get(); if (record != null) { @@ -237,6 +239,7 @@ public DefaultProfileActivationContext setSystemProperties(Map s } @Override + @Nullable public String getUserProperty(String key) { Record record = records.get(); if (record != null) { @@ -280,6 +283,7 @@ public String getModelPackaging() { } @Override + @Nullable public String getModelProperty(String key) { Record record = records.get(); if (record != null) { @@ -327,6 +331,7 @@ public DefaultProfileActivationContext setModel(Model model) { } @Override + @Nullable public String interpolatePath(String path) throws InterpolatorException { if (path == null) { return null; diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/reflection/ClassMap.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/reflection/ClassMap.java index 544a4c411dca..8beaa42a79ce 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/reflection/ClassMap.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/reflection/ClassMap.java @@ -23,6 +23,8 @@ import java.util.Hashtable; import java.util.Map; +import org.apache.maven.api.annotations.Nullable; + /** * A cache of introspection information for a specific class instance. * Keys {@link Method} objects by a concatenation of the @@ -78,6 +80,7 @@ Class getCachedClass() { * @return The found method. * @throws MethodMap.AmbiguousException in case of duplicate methods. */ + @Nullable public Method findMethod(String name, Object... params) throws MethodMap.AmbiguousException { String methodKey = makeMethodKey(name, params); Object cacheEntry = methodCache.get(methodKey); diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/reflection/ReflectionValueExtractor.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/reflection/ReflectionValueExtractor.java index dc6c8a613e4a..1e4eecfceea5 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/reflection/ReflectionValueExtractor.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/reflection/ReflectionValueExtractor.java @@ -78,6 +78,7 @@ public int skipChar() { return idx < expression.length() ? expression.charAt(idx++) : EOF; } + @Nullable public String nextToken(char delimiter) { int start = idx; @@ -93,6 +94,7 @@ public String nextToken(char delimiter) { return expression.substring(start, idx++); } + @Nullable public String nextPropertyName() { final int start = idx; @@ -158,6 +160,7 @@ public static Object evaluate(@Nonnull String expression, @Nullable Object root) * @return the object defined by the expression * @throws IntrospectionException if any */ + @Nullable public static Object evaluate(@Nonnull String expression, @Nullable Object root, boolean trimRootToken) throws IntrospectionException { Object value = root; diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/relocation/DistributionManagementArtifactRelocationSource.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/relocation/DistributionManagementArtifactRelocationSource.java index 2549b4f653eb..05e607afc353 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/relocation/DistributionManagementArtifactRelocationSource.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/relocation/DistributionManagementArtifactRelocationSource.java @@ -18,6 +18,7 @@ */ package org.apache.maven.impl.resolver.relocation; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.di.Named; import org.apache.maven.api.di.Priority; import org.apache.maven.api.di.Singleton; @@ -48,6 +49,7 @@ public final class DistributionManagementArtifactRelocationSource implements Mav private static final Logger LOGGER = LoggerFactory.getLogger(DistributionManagementArtifactRelocationSource.class); @Override + @Nullable public Artifact relocatedTarget( RepositorySystemSession session, ArtifactDescriptorResult artifactDescriptorResult, Model model) { DistributionManagement distMgmt = model.getDistributionManagement(); diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/relocation/UserPropertiesArtifactRelocationSource.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/relocation/UserPropertiesArtifactRelocationSource.java index 966ceaa06fe5..bec130e6b4cd 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/relocation/UserPropertiesArtifactRelocationSource.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/relocation/UserPropertiesArtifactRelocationSource.java @@ -26,6 +26,7 @@ import java.util.stream.Stream; import org.apache.maven.api.Constants; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.di.Named; import org.apache.maven.api.di.Priority; import org.apache.maven.api.di.Singleton; @@ -55,6 +56,7 @@ public final class UserPropertiesArtifactRelocationSource implements MavenArtifa private static final Artifact SENTINEL = new DefaultArtifact("org.apache.maven.banned:user-relocation:1.0"); @Override + @Nullable public Artifact relocatedTarget( RepositorySystemSession session, ArtifactDescriptorResult artifactDescriptorResult, Model model) throws ArtifactDescriptorException { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/standalone/ApiRunner.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/standalone/ApiRunner.java index 81ac6ec0c2fc..574f60159856 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/standalone/ApiRunner.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/standalone/ApiRunner.java @@ -216,6 +216,7 @@ public Map getEffectiveProperties(Project project) { } @Override + @Nullable public Version getMavenVersion() { return null; } @@ -231,6 +232,7 @@ public Instant getStartTime() { } @Override + @Nullable public Path getTopDirectory() { return null; } diff --git a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java index fb3df18f02c9..10d0ce9e864f 100644 --- a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java +++ b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java @@ -21,6 +21,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.logging.api.LogLevelRecorder; import org.slf4j.ILoggerFactory; import org.slf4j.Logger; @@ -42,11 +43,13 @@ public boolean hasReachedMaxLevel() { } @Override + @Nullable public Level getMaxLevelReached() { return null; } @Override + @Nullable public Level getMaxLevelAllowed() { return null; } diff --git a/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/ProjectStub.java b/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/ProjectStub.java index 7968bb10fa36..d8c9ceb18d22 100644 --- a/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/ProjectStub.java +++ b/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/ProjectStub.java @@ -34,6 +34,7 @@ import org.apache.maven.api.Project; import org.apache.maven.api.Type; import org.apache.maven.api.annotations.Nonnull; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.model.Model; import org.apache.maven.api.model.PluginContainer; import org.apache.maven.api.model.Profile; @@ -101,6 +102,7 @@ public String id() { } @Override + @Nullable public Language getLanguage() { return null; } @@ -154,12 +156,14 @@ public Path getPomPath() { @Nonnull @Override + @Nullable public List getDependencies() { return null; } @Nonnull @Override + @Nullable public List getManagedDependencies() { return null; } diff --git a/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionStub.java b/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionStub.java index 9b09216c9903..02904c3615f3 100644 --- a/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionStub.java +++ b/impl/maven-testing/src/main/java/org/apache/maven/api/plugin/testing/stubs/SessionStub.java @@ -128,31 +128,37 @@ public Map getEffectiveProperties(@Nullable Project project) { } @Override + @Nullable public LocalRepository getLocalRepository() { return null; } @Override + @Nullable public Path getTopDirectory() { return null; } @Override + @Nullable public Path getRootDirectory() { return null; } @Override + @Nullable public List getRemoteRepositories() { return null; } @Override + @Nullable public SessionData getData() { return null; } @Override + @Nullable public Version getMavenVersion() { return null; } @@ -163,31 +169,36 @@ public int getDegreeOfConcurrency() { } @Override + @Nullable public Instant getStartTime() { return null; } @Override + @Nullable public List getProjects() { return null; } @Override + @Nullable public Map getPluginContext(Project project) { return null; } @Override - public T getService(Class clazz) { + public @Nullable T getService(Class clazz) { return null; } @Override + @Nullable public Session withLocalRepository(LocalRepository localRepository) { return null; } @Override + @Nullable public Session withRemoteRepositories(List repositories) { return null; } @@ -199,152 +210,181 @@ public void registerListener(Listener listener) {} public void unregisterListener(Listener listener) {} @Override + @Nullable public Collection getListeners() { return null; } @Override + @Nullable public LocalRepository createLocalRepository(Path path) { return null; } @Override + @Nullable public RemoteRepository createRemoteRepository(String id, String url) { return null; } @Override + @Nullable public RemoteRepository createRemoteRepository(Repository repository) { return null; } @Override + @Nullable public Artifact createArtifact(String groupId, String artifactId, String version, String extension) { return null; } @Override + @Nullable public Artifact createArtifact( String groupId, String artifactId, String version, String classifier, String extension, String type) { return null; } @Override + @Nullable public ProducedArtifact createProducedArtifact( String groupId, String artifactId, String version, String extension) { return null; } @Override + @Nullable public ProducedArtifact createProducedArtifact( String groupId, String artifactId, String version, String classifier, String extension, String type) { return null; } @Override + @Nullable public ArtifactCoordinates createArtifactCoordinates( String groupId, String artifactId, String version, String extension) { return null; } @Override + @Nullable public ArtifactCoordinates createArtifactCoordinates(String coordString) { return null; } @Override + @Nullable public ArtifactCoordinates createArtifactCoordinates( String groupId, String artifactId, String version, String classifier, String extension, String type) { return null; } @Override + @Nullable public ArtifactCoordinates createArtifactCoordinates(Artifact artifact) { return null; } @Override + @Nullable public DependencyCoordinates createDependencyCoordinates(ArtifactCoordinates artifactCoordinates) { return null; } @Override + @Nullable public DependencyCoordinates createDependencyCoordinates(Dependency dependency) { return null; } @Override + @Nullable public DownloadedArtifact resolveArtifact(Artifact artifact) { return null; } @Override + @Nullable public DownloadedArtifact resolveArtifact(ArtifactCoordinates coordinate) { return null; } @Override + @Nullable public DownloadedArtifact resolveArtifact(ArtifactCoordinates coordinates, List repositories) { return null; } @Override + @Nullable public DownloadedArtifact resolveArtifact(Artifact artifact, List repositories) { return null; } @Override + @Nullable public Collection resolveArtifacts(ArtifactCoordinates... artifactCoordinates) { return null; } @Override + @Nullable public Collection resolveArtifacts(Collection collection) { return null; } @Override + @Nullable public Collection resolveArtifacts(Artifact... artifacts) { return null; } @Override + @Nullable public Collection resolveArtifacts( Collection coordinates, List repositories) { return null; } @Override + @Nullable public List flattenDependencies(Node node, PathScope scope) { return null; } @Override + @Nullable public List resolveDependencies(DependencyCoordinates dependencyCoordinates) { return null; } @Override + @Nullable public List resolveDependencies(List dependencyCoordinatess) { return null; } @Override + @Nullable public List resolveDependencies(Project project, PathScope scope) { return null; } @Override + @Nullable public Version resolveVersion(ArtifactCoordinates artifact) { return null; } @Override + @Nullable public List resolveVersionRange(ArtifactCoordinates artifact) { return null; } @Override + @Nullable public List resolveVersionRange(ArtifactCoordinates artifact, List repositories) { return null; } @@ -372,41 +412,49 @@ public boolean isVersionSnapshot(String version) { } @Override + @Nullable public Node collectDependencies(Artifact artifact, PathScope scope) { return null; } @Override + @Nullable public Node collectDependencies(Project project, PathScope scope) { return null; } @Override + @Nullable public Node collectDependencies(DependencyCoordinates dependencyCoordinates, PathScope scope) { return null; } @Override + @Nullable public Path getPathForLocalArtifact(Artifact artifact) { return null; } @Override + @Nullable public Path getPathForRemoteArtifact(RemoteRepository remote, Artifact artifact) { return null; } @Override + @Nullable public Version parseVersion(String version) { return null; } @Override + @Nullable public VersionRange parseVersionRange(String versionRange) { return null; } @Override + @Nullable public VersionConstraint parseVersionConstraint(String s) { return null; } @@ -424,31 +472,37 @@ public Map> resolveDependencies( } @Override + @Nullable public Type requireType(String id) { return null; } @Override + @Nullable public Language requireLanguage(String id) { return null; } @Override + @Nullable public Packaging requirePackaging(String id) { return null; } @Override + @Nullable public ProjectScope requireProjectScope(String id) { return null; } @Override + @Nullable public DependencyScope requireDependencyScope(String id) { return null; } @Override + @Nullable public PathScope requirePathScope(String id) { return null; } diff --git a/impl/maven-xml/src/main/java/org/apache/maven/internal/xml/XmlNodeImpl.java b/impl/maven-xml/src/main/java/org/apache/maven/internal/xml/XmlNodeImpl.java index 41659e1dd916..b49f78f0e785 100644 --- a/impl/maven-xml/src/main/java/org/apache/maven/internal/xml/XmlNodeImpl.java +++ b/impl/maven-xml/src/main/java/org/apache/maven/internal/xml/XmlNodeImpl.java @@ -29,6 +29,7 @@ import java.util.function.Function; import org.apache.maven.api.annotations.Nonnull; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.xml.XmlNode; import org.apache.maven.api.xml.XmlService; @@ -177,6 +178,7 @@ public Map attributes() { @Override @Deprecated(since = "4.0.0", forRemoval = true) + @Nullable public String getAttribute(@Nonnull String name) { return attributes.get(name); } @@ -191,6 +193,7 @@ public String attribute(@Nonnull String name) { // ---------------------------------------------------------------------- @Deprecated(since = "4.0.0", forRemoval = true) + @Nullable public XmlNode getChild(String name) { if (name != null) { ListIterator it = children.listIterator(children.size()); diff --git a/its/core-it-suite/src/test/resources/mng-8005/extension/src/main/java/org/apache/maven/its/extensions/IdeWorkspaceReader.java b/its/core-it-suite/src/test/resources/mng-8005/extension/src/main/java/org/apache/maven/its/extensions/IdeWorkspaceReader.java index 5b794f35d10d..604d0a58bbd6 100644 --- a/its/core-it-suite/src/test/resources/mng-8005/extension/src/main/java/org/apache/maven/its/extensions/IdeWorkspaceReader.java +++ b/its/core-it-suite/src/test/resources/mng-8005/extension/src/main/java/org/apache/maven/its/extensions/IdeWorkspaceReader.java @@ -28,6 +28,7 @@ import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.repository.WorkspaceReader; import org.eclipse.aether.repository.WorkspaceRepository; +import org.apache.maven.api.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,6 +50,7 @@ public WorkspaceRepository getRepository() { } @Override + @Nullable public File findArtifact(Artifact artifact) { log.info("findArtifact({})", artifact); return null; diff --git a/its/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/src/main/java/org/codehaus/plexus/util/xml/pull/MXSerializer.java b/its/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/src/main/java/org/codehaus/plexus/util/xml/pull/MXSerializer.java index 2759ab9b2547..300b14310f9c 100644 --- a/its/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/src/main/java/org/codehaus/plexus/util/xml/pull/MXSerializer.java +++ b/its/core-it-support/core-it-plugins/maven-it-plugin-plexus-utils-new/src/main/java/org/codehaus/plexus/util/xml/pull/MXSerializer.java @@ -22,6 +22,8 @@ import java.io.OutputStream; import java.io.Writer; +import org.apache.maven.api.annotations.Nullable; + /** * */ @@ -32,6 +34,7 @@ public void setOutput(Writer writer) { output = writer; } + @Nullable public XmlSerializer attribute(String namespace, String name, String value) { return null; } @@ -52,6 +55,7 @@ public void endDocument() { // ignore } + @Nullable public XmlSerializer endTag(String namespace, String name) { return null; } @@ -72,18 +76,22 @@ public boolean getFeature(String name) { return false; } + @Nullable public String getName() { return null; } + @Nullable public String getNamespace() { return null; } + @Nullable public String getPrefix(String namespace, boolean generatePrefix) { return null; } + @Nullable public Object getProperty(String name) { return null; } @@ -122,10 +130,12 @@ public XmlSerializer startTag(String namespace, String name) throws IOException return this; } + @Nullable public XmlSerializer text(String text) { return null; } + @Nullable public XmlSerializer text(char[] buf, int start, int len) { return null; } diff --git a/its/core-it-support/core-it-plugins/mng5958-extension/src/main/java/org/apache/maven/its/mng5958/AbstractLifecycleMapping.java b/its/core-it-support/core-it-plugins/mng5958-extension/src/main/java/org/apache/maven/its/mng5958/AbstractLifecycleMapping.java index 94d814f5f482..50b66fd8ffa5 100644 --- a/its/core-it-support/core-it-plugins/mng5958-extension/src/main/java/org/apache/maven/its/mng5958/AbstractLifecycleMapping.java +++ b/its/core-it-support/core-it-plugins/mng5958-extension/src/main/java/org/apache/maven/its/mng5958/AbstractLifecycleMapping.java @@ -24,6 +24,7 @@ import org.apache.maven.lifecycle.mapping.Lifecycle; import org.apache.maven.lifecycle.mapping.LifecycleMapping; +import org.apache.maven.api.annotations.Nullable; /** * @author Anton Tanasenko @@ -47,6 +48,7 @@ public Map getLifecycles() { return lifecycleMap; } + @Nullable public Map getPhases(String lifecycle) { Lifecycle lifecycleMapping = getLifecycles().get(lifecycle); if (lifecycleMapping != null) { @@ -55,6 +57,7 @@ public Map getPhases(String lifecycle) { return null; } + @Nullable public List getOptionalMojos(String lifecycle) { return null; } diff --git a/its/core-it-support/core-it-toolchain/src/main/java/org/apache/maven/coreit/toolchain/CoreItToolchainFactory.java b/its/core-it-support/core-it-toolchain/src/main/java/org/apache/maven/coreit/toolchain/CoreItToolchainFactory.java index 0b203500a645..867c91cb84f5 100644 --- a/its/core-it-support/core-it-toolchain/src/main/java/org/apache/maven/coreit/toolchain/CoreItToolchainFactory.java +++ b/its/core-it-support/core-it-toolchain/src/main/java/org/apache/maven/coreit/toolchain/CoreItToolchainFactory.java @@ -23,6 +23,7 @@ import org.apache.maven.toolchain.ToolchainFactory; import org.apache.maven.toolchain.ToolchainPrivate; import org.apache.maven.toolchain.model.ToolchainModel; +import org.apache.maven.api.annotations.Nullable; /** * @author Benjamin Bentmann @@ -30,10 +31,12 @@ @Named("coreit") public class CoreItToolchainFactory implements ToolchainFactory { + @Nullable public ToolchainPrivate createDefaultToolchain() { return null; } + @Nullable public ToolchainPrivate createToolchain(ToolchainModel model) { if (model == null) { return null; diff --git a/src/mdo/java/WrapperProperties.java b/src/mdo/java/WrapperProperties.java index 8e1af9a71678..a2e4a31e0466 100644 --- a/src/mdo/java/WrapperProperties.java +++ b/src/mdo/java/WrapperProperties.java @@ -46,6 +46,8 @@ import java.util.function.Function; import java.util.function.Supplier; +import org.apache.maven.api.annotations.Nullable; + class WrapperProperties extends Properties { final Supplier> getter; @@ -66,6 +68,7 @@ private synchronized void ensureInitialized() { } @Override + @Nullable public String getProperty(String key) { ensureInitialized(); return orderedProps.getProperty(key); @@ -142,6 +145,7 @@ public boolean containsKey(Object key) { } @Override + @Nullable public Object get(Object key) { ensureInitialized(); return orderedProps.get(key);