Skip to content

Commit b1086dd

Browse files
committed
wip safe stuff
1 parent 024f58c commit b1086dd

File tree

3 files changed

+33
-46
lines changed

3 files changed

+33
-46
lines changed

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

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,7 @@
1616

1717
package org.gradlex.javamodule.dependencies;
1818

19-
import kotlin.Pair;
20-
import org.gradle.api.GradleException;
21-
import org.gradle.api.NonNullApi;
22-
import org.gradle.api.Plugin;
23-
import org.gradle.api.Project;
24-
import org.gradle.api.Task;
19+
import org.gradle.api.*;
2520
import org.gradle.api.artifacts.Configuration;
2621
import org.gradle.api.artifacts.ConfigurationContainer;
2722
import org.gradle.api.artifacts.VersionCatalogsExtension;
@@ -41,12 +36,7 @@
4136
import org.gradlex.javamodule.dependencies.internal.dsl.AllDirectivesInternal;
4237
import org.gradlex.javamodule.dependencies.internal.dsl.GradleOnlyDirectivesInternal;
4338
import org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo;
44-
import org.gradlex.javamodule.dependencies.tasks.BuildFileDependenciesGenerate;
45-
import org.gradlex.javamodule.dependencies.tasks.ModuleDependencyReport;
46-
import org.gradlex.javamodule.dependencies.tasks.ModuleDirectivesOrderingCheck;
47-
import org.gradlex.javamodule.dependencies.tasks.ModuleInfoGenerate;
48-
import org.gradlex.javamodule.dependencies.tasks.ModulePathAnalysis;
49-
import org.gradlex.javamodule.dependencies.tasks.ModuleVersionRecommendation;
39+
import org.gradlex.javamodule.dependencies.tasks.*;
5040

5141
import java.io.File;
5242
import java.util.HashSet;
@@ -57,11 +47,7 @@
5747
import static org.gradle.language.base.plugins.LifecycleBasePlugin.VERIFICATION_GROUP;
5848
import static org.gradlex.javamodule.dependencies.JavaModuleDependenciesExtension.JAVA_MODULE_DEPENDENCIES;
5949
import static org.gradlex.javamodule.dependencies.internal.utils.DependencyDeclarationsUtil.declaredDependencies;
60-
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo.Directive.REQUIRES;
61-
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo.Directive.REQUIRES_RUNTIME;
62-
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo.Directive.REQUIRES_STATIC;
63-
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo.Directive.REQUIRES_STATIC_TRANSITIVE;
64-
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo.Directive.REQUIRES_TRANSITIVE;
50+
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleInfo.Directive.*;
6551
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleNamingUtil.sourceSetToModuleName;
6652

6753
@SuppressWarnings("unused")
@@ -236,7 +222,8 @@ private void setupOrderingCheckTasks(Project project, TaskProvider<Task> checkAl
236222
t.setDescription("Check order of directives in 'module-info.java' in '" + sourceSet.getName() + "' source set");
237223

238224
ModuleInfo moduleInfo = javaModuleDependencies.getModuleInfoCache().get().get(sourceSet, project.getProviders());
239-
t.getModuleInfoPath().convention("module-info.java");
225+
File folder = javaModuleDependencies.getModuleInfoCache().get().getFolder(sourceSet, project.getProviders());
226+
t.getModuleInfoPath().convention(folder == null ? null : new File(folder, "module-info.java").getAbsolutePath());
240227
t.getModuleNamePrefix().convention(moduleInfo.moduleNamePrefix(project.getName(), sourceSet.getName(), false));
241228
t.getModuleInfo().convention(moduleInfo);
242229

src/main/java/org/gradlex/javamodule/dependencies/internal/utils/ModuleInfoCache.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
package org.gradlex.javamodule.dependencies.internal.utils;
1818

1919
import org.gradle.api.Action;
20-
import org.gradle.api.file.ConfigurableFileCollection;
21-
import org.gradle.api.file.RegularFileProperty;
2220
import org.gradle.api.logging.Logger;
2321
import org.gradle.api.model.ObjectFactory;
2422
import org.gradle.api.provider.Provider;
@@ -31,7 +29,8 @@
3129
import java.io.File;
3230
import java.nio.file.Path;
3331
import java.nio.file.Paths;
34-
import java.util.*;
32+
import java.util.HashMap;
33+
import java.util.Map;
3534

3635
import static org.gradlex.javamodule.dependencies.internal.utils.ModuleNamingUtil.sourceSetToCapabilitySuffix;
3736

@@ -71,6 +70,16 @@ public ModuleInfo get(SourceSet sourceSet, ProviderFactory providers) {
7170
return ModuleInfo.EMPTY;
7271
}
7372

73+
public File getFolder(SourceSet sourceSet, ProviderFactory providers) {
74+
for (File folder : sourceSet.getJava().getSrcDirs()) {
75+
if (maybePutModuleInfo(folder, providers)) {
76+
return folder;
77+
}
78+
}
79+
return null;
80+
}
81+
82+
7483
/**
7584
* @param projectRoot the project that should hold a Java module
7685
* @return parsed module-info.java for the given project assuming a standard Java project layout
@@ -121,8 +130,7 @@ public void execute(ValueSourceSpec<ValueSourceModuleInfo.ModuleInfoSourceP> mod
121130
moduleInfoSourcePValueSourceSpec.parameters(new Action<ValueSourceModuleInfo.ModuleInfoSourceP>() {
122131
@Override
123132
public void execute(ValueSourceModuleInfo.ModuleInfoSourceP moduleInfoSourceP) {
124-
ConfigurableFileCollection from = getObjects().fileCollection().from(folder);
125-
moduleInfoSourceP.getLocations().set(from);
133+
moduleInfoSourceP.getDir().set(folder);
126134
}
127135
});
128136

src/main/java/org/gradlex/javamodule/dependencies/internal/utils/ValueSourceModuleInfo.java

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,40 @@
11
package org.gradlex.javamodule.dependencies.internal.utils;
22

3-
import org.gradle.api.file.FileCollection;
4-
import org.gradle.api.file.RegularFileProperty;
5-
import org.gradle.api.model.ObjectFactory;
6-
import org.gradle.api.provider.*;
3+
import org.gradle.api.file.DirectoryProperty;
4+
import org.gradle.api.provider.ValueSource;
5+
import org.gradle.api.provider.ValueSourceParameters;
76
import org.jetbrains.annotations.Nullable;
87

9-
import javax.inject.Inject;
108
import java.io.File;
119
import java.io.IOException;
12-
import java.nio.charset.StandardCharsets;
13-
import java.nio.file.Files;
1410
import java.util.Scanner;
1511

1612
public abstract class ValueSourceModuleInfo implements ValueSource<ModuleInfo, ValueSourceModuleInfo.ModuleInfoSourceP> {
1713

1814

1915
interface ModuleInfoSourceP extends ValueSourceParameters {
2016

21-
Property<FileCollection> getLocations();
17+
DirectoryProperty getDir();
2218
}
2319

2420

2521
@Override
2622
public @Nullable ModuleInfo obtain() {
2723
ModuleInfoSourceP parameters = getParameters();
28-
for (File fileSystemLocation : parameters.getLocations().get()) {
29-
File file = new File(fileSystemLocation, "module-info.java");
30-
if (file.isFile()) {
24+
File file = new File(parameters.getDir().get().getAsFile(), "module-info.java");
25+
if (file.isFile()) {
26+
try {
27+
Scanner scan = new Scanner(file);
3128
try {
32-
Scanner scan = new Scanner(file);
33-
try {
34-
scan.useDelimiter("\\Z");
35-
String content = scan.next();
36-
return new ModuleInfo(content);
37-
} finally {
38-
scan.close();
39-
}
40-
} catch (IOException e) {
41-
throw new RuntimeException(e);
29+
scan.useDelimiter("\\Z");
30+
String content = scan.next();
31+
return new ModuleInfo(content);
32+
} finally {
33+
scan.close();
4234
}
35+
} catch (IOException e) {
36+
throw new RuntimeException(e);
4337
}
44-
45-
4638
}
4739
return null;
4840
}

0 commit comments

Comments
 (0)