Skip to content

Commit 287dcc4

Browse files
authored
Merge pull request #92 from KyoriPowered/feat/jspecify
Migrate to JSpecify
2 parents 7c7e4a2 + 7dfd269 commit 287dcc4

24 files changed

+124
-87
lines changed

.checkstyle/checkstyle.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
<!-- https://checkstyle.org/config_imports.html#IllegalImport -->
103103
<module name="IllegalImport">
104104
<property name="illegalPkgs" value="sun, jdk, com.sun"/>
105+
<property name="illegalClasses" value="org.jetbrains.annotations.NotNull, org.jetbrains.annotations.Nullable" />
105106
</module>
106107

107108
<!-- https://checkstyle.org/config_coding.html#IllegalTokenText -->

build.gradle.kts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ tasks.jar {
5353
}
5454

5555
dependencies {
56-
implementation(libs.mammoth)
56+
implementation(libs.mammoth) {
57+
exclude(group = "org.jetbrains", module = "annotations")
58+
}
5759
"workerClasspathCompileOnly"(libs.pebble)
5860
"workerClasspathCompileOnly"(libs.snakeyamlEngine)
5961
"workerClasspathCompileOnly"(workerShared.map { it.output })
@@ -62,7 +64,9 @@ dependencies {
6264
privateRuntime.name(workerShared.map { it.output })
6365
compileOnly(libs.ideaExtPlugin)
6466

65-
testImplementation(libs.mammoth.test)
67+
testImplementation(libs.mammoth.test) {
68+
exclude(group = "org.jetbrains", module = "annotations")
69+
}
6670
testImplementation(platform(libs.junit.bom))
6771
testImplementation(libs.junit.api)
6872
testRuntimeOnly(libs.junit.engine)

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ checkstyle = "10.26.1"
66
ideaExt = "1.1.10"
77
indra = "3.1.3"
88
junit = "5.13.4"
9-
mammoth = "1.4.0"
9+
mammoth = "1.5.0"
1010
pebble = "3.2.4"
1111
snakeyaml = "2.9"
1212
spotless = "7.0.4"

src/main/java/net/kyori/blossom/Blossom.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@
4444
import org.gradle.plugins.ide.eclipse.model.EclipseModel;
4545
import org.gradle.plugins.ide.idea.model.IdeaModel;
4646
import org.gradle.util.GradleVersion;
47-
import org.jetbrains.annotations.NotNull;
48-
import org.jetbrains.annotations.Nullable;
4947
import org.jetbrains.gradle.ext.ProjectSettings;
5048
import org.jetbrains.gradle.ext.TaskTriggersConfig;
49+
import org.jspecify.annotations.NullMarked;
50+
import org.jspecify.annotations.Nullable;
5151

5252
/**
5353
* A template processor for Gradle projects.
@@ -56,6 +56,7 @@
5656
*
5757
* @since 2.0.0
5858
*/
59+
@NullMarked
5960
public class Blossom implements ProjectPlugin {
6061
private static final String GENERATION_GROUP = "blossom";
6162
private static final String EXTENSION_NAME = "blossom";
@@ -65,10 +66,10 @@ public class Blossom implements ProjectPlugin {
6566

6667
@Override
6768
public void apply(
68-
final @NotNull Project project,
69-
final @NotNull PluginContainer plugins,
70-
final @NotNull ExtensionContainer extensions,
71-
final @NotNull TaskContainer tasks
69+
final Project project,
70+
final PluginContainer plugins,
71+
final ExtensionContainer extensions,
72+
final TaskContainer tasks
7273
) {
7374
plugins.withType(JavaBasePlugin.class, $ -> {
7475
final SetProperty<File> outputDirs = project.getObjects().setProperty(File.class);
@@ -121,18 +122,18 @@ private void registerGenerateAllTask(final Project project, final TaskContainer
121122

122123
IdeConfigurer.apply(project, new IdeConfigurer.IdeImportAction() {
123124
@Override
124-
public void idea(final @NotNull Project project, final @NotNull IdeaModel idea, final @NotNull ProjectSettings ideaExtension) {
125+
public void idea(final Project project, final IdeaModel idea, final ProjectSettings ideaExtension) {
125126
((ExtensionAware) ideaExtension).getExtensions().getByType(TaskTriggersConfig.class).afterSync(generateTemplates);
126127
project.afterEvaluate(p -> {
127-
final @Nullable IdeaModel projectIdea = p.getExtensions().getByType(IdeaModel.class);
128+
final IdeaModel projectIdea = p.getExtensions().getByType(IdeaModel.class);
128129
if (projectIdea.getModule() != null) {
129130
projectIdea.getModule().getGeneratedSourceDirs().addAll(outputDirs.get());
130131
}
131132
});
132133
}
133134

134135
@Override
135-
public void eclipse(final @NotNull Project project, final @NotNull EclipseModel eclipse) {
136+
public void eclipse(final Project project, final EclipseModel eclipse) {
136137
eclipse.synchronizationTasks(generateTemplates);
137138
}
138139
});

src/main/java/net/kyori/blossom/BlossomExtension.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.gradle.api.Action;
2525
import org.gradle.api.NamedDomainObjectProvider;
2626
import org.gradle.api.PolymorphicDomainObjectContainer;
27-
import org.jetbrains.annotations.NotNull;
27+
import org.jspecify.annotations.NullMarked;
2828

2929
import static java.util.Objects.requireNonNull;
3030

@@ -35,6 +35,7 @@
3535
*
3636
* @since 2.0.0
3737
*/
38+
@NullMarked
3839
public interface BlossomExtension {
3940
String RESOURCE_TEMPLATE_SET_NAME = "resource";
4041
String GROOVY_SOURCES_TEMPLATE_SET_NAME = "groovy";
@@ -48,7 +49,7 @@ public interface BlossomExtension {
4849
* @return the resource template set for configuration
4950
* @since 2.0.0
5051
*/
51-
default @NotNull NamedDomainObjectProvider<ResourceTemplateSet> resources() {
52+
default NamedDomainObjectProvider<ResourceTemplateSet> resources() {
5253
return this.customResources(RESOURCE_TEMPLATE_SET_NAME);
5354
}
5455

@@ -58,7 +59,7 @@ public interface BlossomExtension {
5859
* @param configureAction the action to perform on the primary resource template set
5960
* @since 2.0.0
6061
*/
61-
default void resources(final @NotNull Action<? super ResourceTemplateSet> configureAction) {
62+
default void resources(final Action<? super ResourceTemplateSet> configureAction) {
6263
this.resources().configure(requireNonNull(configureAction, "configureAction"));
6364
}
6465

@@ -71,7 +72,7 @@ default void resources(final @NotNull Action<? super ResourceTemplateSet> config
7172
* @return the resource template set for configuration
7273
* @since 2.1.0
7374
*/
74-
default @NotNull NamedDomainObjectProvider<ResourceTemplateSet> customResources(final @NotNull String setName) {
75+
default NamedDomainObjectProvider<ResourceTemplateSet> customResources(final String setName) {
7576
requireNonNull(setName, "setName");
7677
if (this.getTemplateSets().getNames().contains(setName)) {
7778
return this.getTemplateSets().named(setName, ResourceTemplateSet.class);
@@ -89,7 +90,7 @@ default void resources(final @NotNull Action<? super ResourceTemplateSet> config
8990
* @param configureAction the action to perform on the primary resource template set
9091
* @since 2.1.0
9192
*/
92-
default void customResources(final @NotNull String setName, final @NotNull Action<? super ResourceTemplateSet> configureAction) {
93+
default void customResources(final String setName, final Action<? super ResourceTemplateSet> configureAction) {
9394
this.customResources(setName).configure(requireNonNull(configureAction, "configureAction"));
9495
}
9596

@@ -109,7 +110,7 @@ private NamedDomainObjectProvider<SourceTemplateSet> registerSourceTemplateSet(f
109110
* @return the groovy source template set.
110111
* @since 2.0.0
111112
*/
112-
default @NotNull NamedDomainObjectProvider<SourceTemplateSet> groovySources() {
113+
default NamedDomainObjectProvider<SourceTemplateSet> groovySources() {
113114
return this.registerSourceTemplateSet(GROOVY_SOURCES_TEMPLATE_SET_NAME, SourceTemplateSet::groovy);
114115
}
115116

@@ -121,7 +122,7 @@ private NamedDomainObjectProvider<SourceTemplateSet> registerSourceTemplateSet(f
121122
* @param configureAction the action to configure the set with
122123
* @since 2.0.0
123124
*/
124-
default void groovySources(final @NotNull Action<? super SourceTemplateSet> configureAction) {
125+
default void groovySources(final Action<? super SourceTemplateSet> configureAction) {
125126
this.registerSourceTemplateSet(GROOVY_SOURCES_TEMPLATE_SET_NAME, SourceTemplateSet::groovy).configure(requireNonNull(configureAction, "configureAction"));
126127
}
127128

@@ -133,7 +134,7 @@ default void groovySources(final @NotNull Action<? super SourceTemplateSet> conf
133134
* @return the java source template set.
134135
* @since 2.0.0
135136
*/
136-
default @NotNull NamedDomainObjectProvider<SourceTemplateSet> javaSources() {
137+
default NamedDomainObjectProvider<SourceTemplateSet> javaSources() {
137138
return this.registerSourceTemplateSet(JAVA_SOURCES_TEMPLATE_SET_NAME, SourceTemplateSet::java);
138139
}
139140

@@ -145,7 +146,7 @@ default void groovySources(final @NotNull Action<? super SourceTemplateSet> conf
145146
* @param configureAction the action to configure the set with
146147
* @since 2.0.0
147148
*/
148-
default void javaSources(final @NotNull Action<? super SourceTemplateSet> configureAction) {
149+
default void javaSources(final Action<? super SourceTemplateSet> configureAction) {
149150
this.registerSourceTemplateSet(JAVA_SOURCES_TEMPLATE_SET_NAME, SourceTemplateSet::java).configure(requireNonNull(configureAction, "configureAction"));
150151
}
151152

@@ -157,7 +158,7 @@ default void javaSources(final @NotNull Action<? super SourceTemplateSet> config
157158
* @return the kotlin source template set.
158159
* @since 2.0.0
159160
*/
160-
default @NotNull NamedDomainObjectProvider<SourceTemplateSet> kotlinSources() {
161+
default NamedDomainObjectProvider<SourceTemplateSet> kotlinSources() {
161162
return this.registerSourceTemplateSet(KOTLIN_SOURCES_TEMPLATE_SET_NAME, SourceTemplateSet::kotlin);
162163
}
163164

@@ -169,7 +170,7 @@ default void javaSources(final @NotNull Action<? super SourceTemplateSet> config
169170
* @param configureAction the action to configure the set with
170171
* @since 2.0.0
171172
*/
172-
default void kotlinSources(final @NotNull Action<? super SourceTemplateSet> configureAction) {
173+
default void kotlinSources(final Action<? super SourceTemplateSet> configureAction) {
173174
this.registerSourceTemplateSet(KOTLIN_SOURCES_TEMPLATE_SET_NAME, SourceTemplateSet::kotlin).configure(requireNonNull(configureAction, "configureAction"));
174175
}
175176

@@ -181,7 +182,7 @@ default void kotlinSources(final @NotNull Action<? super SourceTemplateSet> conf
181182
* @return the scala source template set.
182183
* @since 2.0.0
183184
*/
184-
default @NotNull NamedDomainObjectProvider<SourceTemplateSet> scalaSources() {
185+
default NamedDomainObjectProvider<SourceTemplateSet> scalaSources() {
185186
return this.registerSourceTemplateSet(SCALA_SOURCES_TEMPLATE_SET_NAME, SourceTemplateSet::scala);
186187
}
187188

@@ -193,7 +194,7 @@ default void kotlinSources(final @NotNull Action<? super SourceTemplateSet> conf
193194
* @param configureAction the action to configure the set with
194195
* @since 2.0.0
195196
*/
196-
default void scalaSources(final @NotNull Action<? super SourceTemplateSet> configureAction) {
197+
default void scalaSources(final Action<? super SourceTemplateSet> configureAction) {
197198
this.registerSourceTemplateSet(SCALA_SOURCES_TEMPLATE_SET_NAME, SourceTemplateSet::scala).configure(requireNonNull(configureAction, "configureAction"));
198199
}
199200

@@ -209,7 +210,7 @@ default void scalaSources(final @NotNull Action<? super SourceTemplateSet> confi
209210
* @return the source template set
210211
* @since 2.1.0
211212
*/
212-
default @NotNull NamedDomainObjectProvider<SourceTemplateSet> customSources(final @NotNull String setName, final @NotNull Action<? super SourceTemplateSet> configureAction) {
213+
default NamedDomainObjectProvider<SourceTemplateSet> customSources(final String setName, final Action<? super SourceTemplateSet> configureAction) {
213214
requireNonNull(setName, "setName");
214215
final NamedDomainObjectProvider<SourceTemplateSet> setProvider;
215216
if (this.getTemplateSets().getNames().contains(setName)) {
@@ -221,22 +222,21 @@ default void scalaSources(final @NotNull Action<? super SourceTemplateSet> confi
221222
return setProvider;
222223
}
223224

224-
225225
/**
226226
* Get all currently registered template sets for this source set.
227227
*
228228
* @return the template sets
229229
* @since 2.0.0
230230
*/
231-
@NotNull PolymorphicDomainObjectContainer<TemplateSet> getTemplateSets();
231+
PolymorphicDomainObjectContainer<TemplateSet> getTemplateSets();
232232

233233
/**
234234
* Configure template sets that apply to this source set.
235235
*
236236
* @param configurer the action to perform
237237
* @since 2.0.0
238238
*/
239-
default void templateSets(final @NotNull Action<PolymorphicDomainObjectContainer<TemplateSet>> configurer) {
239+
default void templateSets(final Action<PolymorphicDomainObjectContainer<TemplateSet>> configurer) {
240240
Configurable.configure(this.getTemplateSets(), configurer);
241241
}
242242
}

src/main/java/net/kyori/blossom/GenerateTemplates.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,14 @@
3939
import org.gradle.api.tasks.SkipWhenEmpty;
4040
import org.gradle.api.tasks.TaskAction;
4141
import org.gradle.workers.WorkerExecutor;
42-
import org.jetbrains.annotations.NotNull;
42+
import org.jspecify.annotations.NullMarked;
4343

4444
/**
4545
* Generate real files based on templates and input parameters.
4646
*
4747
* @since 2.0.0
4848
*/
49+
@NullMarked
4950
public abstract class GenerateTemplates extends DefaultTask {
5051

5152
/**
@@ -55,7 +56,7 @@ public abstract class GenerateTemplates extends DefaultTask {
5556
* @since 2.0.0
5657
*/
5758
@Nested
58-
public abstract @NotNull Property<TemplateSet> getBaseSet();
59+
public abstract Property<TemplateSet> getBaseSet();
5960

6061
/**
6162
* Files that can be included in templates, but that are not themselves templates.
@@ -66,7 +67,7 @@ public abstract class GenerateTemplates extends DefaultTask {
6667
* @since 2.0.0
6768
*/
6869
@InputFiles
69-
protected abstract @NotNull ConfigurableFileCollection getIncludesDirectories();
70+
protected abstract ConfigurableFileCollection getIncludesDirectories();
7071

7172
/**
7273
* Source directory for templates to process.
@@ -76,7 +77,7 @@ public abstract class GenerateTemplates extends DefaultTask {
7677
*/
7778
@InputFiles
7879
@SkipWhenEmpty
79-
protected abstract @NotNull ConfigurableFileCollection getSourceDirectories();
80+
protected abstract ConfigurableFileCollection getSourceDirectories();
8081

8182
/**
8283
* Destination directory for template output.
@@ -85,7 +86,7 @@ public abstract class GenerateTemplates extends DefaultTask {
8586
* @since 2.0.0
8687
*/
8788
@OutputDirectory
88-
public abstract @NotNull DirectoryProperty getOutputDir();
89+
public abstract DirectoryProperty getOutputDir();
8990

9091
/**
9192
* The worker classpath. This should include Pebble and SnakeYAML engine.

src/main/java/net/kyori/blossom/ResourceTemplateSet.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,13 @@
2020
*/
2121
package net.kyori.blossom;
2222

23+
import org.jspecify.annotations.NullMarked;
24+
2325
/**
2426
* A template set type targeting resources.
2527
*
2628
* @since 2.0.0
2729
*/
30+
@NullMarked
2831
public interface ResourceTemplateSet extends TemplateSet {
2932
}

src/main/java/net/kyori/blossom/SourceTemplateSet.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@
2020
*/
2121
package net.kyori.blossom;
2222

23-
import org.jetbrains.annotations.NotNull;
23+
import org.jspecify.annotations.NullMarked;
2424

2525
/**
2626
* A template set for sources.
2727
*
2828
* @since 2.0.0
2929
*/
30+
@NullMarked
3031
public interface SourceTemplateSet extends TemplateSet {
3132
/**
3233
* Configure to generate templates contributing to Groovy sources.
@@ -68,5 +69,5 @@ default void scala() {
6869
* @param name the name of the language extension
6970
* @since 2.0.0
7071
*/
71-
void namedLanguageExtension(final @NotNull String name);
72+
void namedLanguageExtension(final String name);
7273
}

0 commit comments

Comments
 (0)