Skip to content

Commit 138cca2

Browse files
committed
Use Jspecify annotations
1 parent b173180 commit 138cca2

30 files changed

+206
-53
lines changed

src/main/java/org/gradlex/javamodule/dependencies/JavaModuleDependenciesExtension.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@
4141
import org.gradle.api.provider.Provider;
4242
import org.gradle.api.provider.ProviderFactory;
4343
import org.gradle.api.tasks.SourceSet;
44-
import org.gradle.api.tasks.SourceSetContainer;
4544
import org.gradle.api.tasks.TaskProvider;
4645
import org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo;
4746
import org.gradlex.javamodule.dependencies.internal.utils.ModuleInfoCache;
4847
import org.gradlex.javamodule.dependencies.tasks.SyntheticModuleInfoFoldersGenerate;
48+
import org.jspecify.annotations.Nullable;
4949

5050
import javax.inject.Inject;
5151
import java.io.CharArrayReader;
@@ -73,9 +73,8 @@
7373
*/
7474
public abstract class JavaModuleDependenciesExtension {
7575
static final String JAVA_MODULE_DEPENDENCIES = "javaModuleDependencies";
76-
private static final String INTERNAL = "internal";
7776

78-
private final VersionCatalogsExtension versionCatalogs;
77+
private final @Nullable VersionCatalogsExtension versionCatalogs;
7978

8079
public abstract Property<ModuleInfoCache> getModuleInfoCache();
8180

@@ -132,7 +131,7 @@ public abstract class JavaModuleDependenciesExtension {
132131
*/
133132
public abstract Property<Boolean> getAnalyseOnly();
134133

135-
public JavaModuleDependenciesExtension(VersionCatalogsExtension versionCatalogs, File rootDir) {
134+
public JavaModuleDependenciesExtension(@Nullable VersionCatalogsExtension versionCatalogs, File rootDir) {
136135
this.versionCatalogs = versionCatalogs;
137136
getModuleInfoCache().convention(getProviders().provider(() -> getObjects().newInstance(ModuleInfoCache.class, false)));
138137
getModulesProperties().set(new File(rootDir, "gradle/modules.properties"));
@@ -198,7 +197,7 @@ private String toProjectName(String moduleNameSuffix) {
198197
List<String> allProjectNames = getProject().getRootProject().getSubprojects().stream().map(Project::getName).collect(Collectors.toList());
199198

200199
Optional<String> perfectMatch = allProjectNames.stream().filter(p -> p.replace("-", ".").equals(moduleNameSuffix)).findFirst();
201-
Optional<String> existingProjectName = allProjectNames.stream().filter(p -> moduleNameSuffix != null && moduleNameSuffix.startsWith(p.replace("-", ".") + "."))
200+
Optional<String> existingProjectName = allProjectNames.stream().filter(p -> moduleNameSuffix.startsWith(p.replace("-", ".") + "."))
202201
.max(Comparator.comparingInt(String::length));
203202

204203
if (perfectMatch.isPresent()) {
@@ -278,7 +277,7 @@ private Provider<Dependency> createWithGuessing(String moduleName, SourceSet sou
278277
});
279278
}
280279

281-
private ModuleDependency createExternalDependency(String moduleName) {
280+
private @Nullable ModuleDependency createExternalDependency(String moduleName) {
282281
Provider<String> coordinates = getModuleNameToGA().getting(moduleName).orElse(mapByPrefix(getProviders().provider(() -> moduleName)));
283282
if (coordinates.isPresent()) {
284283
Map<String, Object> component;
@@ -572,7 +571,4 @@ private <T> Provider<T> errorIfNotFound(Provider<String> moduleName) {
572571

573572
@Inject
574573
protected abstract ConfigurationContainer getConfigurations();
575-
576-
@Inject
577-
protected abstract SourceSetContainer getSourceSets();
578574
}

src/main/java/org/gradlex/javamodule/dependencies/JavaModuleDependenciesPlugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.gradlex.javamodule.dependencies;
1818

1919
import org.gradle.api.GradleException;
20-
import org.gradle.api.NonNullApi;
2120
import org.gradle.api.Plugin;
2221
import org.gradle.api.Project;
2322
import org.gradle.api.Task;
@@ -64,7 +63,6 @@
6463
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleNamingUtil.sourceSetToModuleName;
6564

6665
@SuppressWarnings("unused")
67-
@NonNullApi
6866
public abstract class JavaModuleDependenciesPlugin implements Plugin<ExtensionAware> {
6967

7068
private static final String EXTRA_JAVA_MODULE_INFO_PLUGIN_ID = "org.gradlex.extra-java-module-info";
@@ -84,6 +82,7 @@ public void apply(ExtensionAware projectOrSettings) {
8482

8583
private void applyProject(Project project) {
8684
VersionCatalogsExtension versionCatalogs = project.getExtensions().findByType(VersionCatalogsExtension.class);
85+
@SuppressWarnings("DataFlowIssue")
8786
JavaModuleDependenciesExtension javaModuleDependencies = project.getExtensions().create(
8887
JAVA_MODULE_DEPENDENCIES, JavaModuleDependenciesExtension.class, versionCatalogs, project.getRootDir());
8988

@@ -151,6 +150,7 @@ private void setupModuleDependenciesTask(Project project) {
151150
TaskProvider<ModuleDependencyReport> moduleDependencies = project.getTasks().register("moduleDependencies", ModuleDependencyReport.class, t -> t.setGroup(HELP_GROUP));
152151
sourceSets.all(sourceSet -> moduleDependencies.configure(t -> {
153152
HashSet<Configuration> joined = new HashSet<>();
153+
//noinspection ConstantValue
154154
if (t.getConfigurations() != null) {
155155
joined.addAll(t.getConfigurations());
156156
}

src/main/java/org/gradlex/javamodule/dependencies/JavaModuleVersionsPlugin.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package org.gradlex.javamodule.dependencies;
1818

19-
import org.gradle.api.NonNullApi;
2019
import org.gradle.api.Plugin;
2120
import org.gradle.api.Project;
2221
import org.gradle.api.artifacts.Configuration;
@@ -30,8 +29,8 @@
3029
import org.gradlex.javamodule.dependencies.dsl.ModuleVersions;
3130
import org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo;
3231
import org.gradlex.javamodule.dependencies.tasks.CatalogGenerate;
32+
import org.jspecify.annotations.Nullable;
3333

34-
import javax.annotation.Nullable;
3534
import java.io.File;
3635
import java.util.Arrays;
3736
import java.util.List;
@@ -47,7 +46,6 @@
4746
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo.Directive.REQUIRES_TRANSITIVE;
4847

4948
@SuppressWarnings("unused")
50-
@NonNullApi
5149
public abstract class JavaModuleVersionsPlugin implements Plugin<Project> {
5250

5351
@Override

src/main/java/org/gradlex/javamodule/dependencies/SharedMappings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.gradlex.javamodule.dependencies;
1818

19+
import org.jspecify.annotations.Nullable;
20+
1921
import java.io.IOException;
2022
import java.io.InputStream;
2123
import java.util.Map;
@@ -27,7 +29,7 @@ final public class SharedMappings {
2729
static Map<String, String> loadModuleNameToGAProperties() {
2830
Properties properties = new Properties() {
2931
@Override
30-
public synchronized Object put(Object key, Object value) {
32+
public synchronized @Nullable Object put(Object key, Object value) {
3133
if (get(key) != null) {
3234
throw new IllegalArgumentException(key + " already present.");
3335
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright the GradleX team.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
@NullMarked
18+
package org.gradlex.javamodule.dependencies.dsl;
19+
20+
import org.jspecify.annotations.NullMarked;

src/main/java/org/gradlex/javamodule/dependencies/initialization/JavaModuleDependenciesSettingsPlugin.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,10 @@
1717
package org.gradlex.javamodule.dependencies.initialization;
1818

1919
import org.gradle.api.GradleException;
20-
import org.gradle.api.NonNullApi;
2120
import org.gradle.api.Plugin;
2221
import org.gradle.api.initialization.Settings;
2322
import org.gradle.util.GradleVersion;
2423

25-
@NonNullApi
2624
public abstract class JavaModuleDependenciesSettingsPlugin implements Plugin<Settings> {
2725

2826
@Override

src/main/java/org/gradlex/javamodule/dependencies/initialization/JavaModulesExtension.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import org.gradle.api.Action;
2020
import org.gradle.api.IsolatedAction;
21-
import org.gradle.api.NonNullApi;
2221
import org.gradle.api.Project;
2322
import org.gradle.api.initialization.ProjectDescriptor;
2423
import org.gradle.api.initialization.Settings;
@@ -35,6 +34,7 @@
3534
import org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo;
3635
import org.gradlex.javamodule.dependencies.internal.utils.ModuleInfoCache;
3736
import org.gradlex.javamodule.dependencies.internal.utils.ValueModuleDirectoryListing;
37+
import org.jspecify.annotations.Nullable;
3838

3939
import javax.inject.Inject;
4040
import java.io.File;
@@ -165,19 +165,18 @@ private void configureModule(Module module, ProjectDescriptor project) {
165165

166166
private static class ModuleProject {
167167
private final String path;
168-
private final String group;
168+
private final @Nullable String group;
169169
private final List<String> plugins;
170-
private final String mainModuleName;
170+
private final @Nullable String mainModuleName;
171171

172-
public ModuleProject(String path, String group, List<String> plugins, String mainModuleName) {
172+
public ModuleProject(String path, @Nullable String group, List<String> plugins, @Nullable String mainModuleName) {
173173
this.path = path;
174174
this.group = group;
175175
this.plugins = plugins;
176176
this.mainModuleName = mainModuleName;
177177
}
178178
}
179179

180-
@NonNullApi
181180
private static class ApplyPluginsAction implements IsolatedAction<Project> {
182181

183182
private final List<ModuleProject> moduleProjects;
@@ -205,7 +204,6 @@ public void execute(Project project) {
205204
}
206205
}
207206

208-
@NonNullApi
209207
private static class ApplyJavaModuleVersionsPluginAction implements IsolatedAction<Project> {
210208

211209
private final String projectPath;

src/main/java/org/gradlex/javamodule/dependencies/initialization/RootPluginsExtension.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.gradlex.javamodule.dependencies.initialization;
1818

1919
import org.gradle.api.IsolatedAction;
20-
import org.gradle.api.NonNullApi;
2120
import org.gradle.api.Project;
2221
import org.gradle.api.initialization.Settings;
2322

@@ -38,7 +37,6 @@ public void id(String id) {
3837
ids.add(id);
3938
}
4039

41-
@NonNullApi
4240
private static class ApplyPluginAction implements IsolatedAction<Project> {
4341

4442
private final List<String> ids;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright the GradleX team.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
@NullMarked
18+
package org.gradlex.javamodule.dependencies.initialization;
19+
20+
import org.jspecify.annotations.NullMarked;

src/main/java/org/gradlex/javamodule/dependencies/internal/bridges/DependencyAnalysisBridge.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
import org.gradle.api.tasks.TaskProvider;
2626
import org.gradlex.javamodule.dependencies.tasks.ModuleDirectivesOrderingCheck;
2727
import org.gradlex.javamodule.dependencies.tasks.ModuleDirectivesScopeCheck;
28+
import org.jspecify.annotations.Nullable;
2829

29-
import javax.annotation.Nullable;
3030
import java.io.File;
3131

3232
public class DependencyAnalysisBridge {

0 commit comments

Comments
 (0)