Skip to content

Commit b00a8f8

Browse files
committed
Make source code compatible with Java 8.
Signed-off-by: dblock <dblock@dblock.org>
1 parent 292f6f8 commit b00a8f8

23 files changed

Lines changed: 164 additions & 101 deletions

buildSrc/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ if (project != rootProject) {
159159

160160
allprojects {
161161
targetCompatibility = 8
162-
sourceCompatibility = 11
162+
sourceCompatibility = 8
163163
}
164164

165165
// groovydoc succeeds, but has some weird internal exception...

buildSrc/src/main/groovy/org/opensearch/gradle/ResolveAllDependencies.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ static boolean canBeResolved(Configuration configuration) {
5555
return false;
5656
}
5757
if (configuration instanceof org.gradle.internal.deprecation.DeprecatableConfiguration) {
58-
var deprecatableConfiguration = (DeprecatableConfiguration) configuration;
58+
DeprecatableConfiguration deprecatableConfiguration = (DeprecatableConfiguration) configuration;
5959
if (deprecatableConfiguration.canSafelyBeResolved() == false) {
6060
return false;
6161
}

buildSrc/src/main/java/org/opensearch/gradle/LoggedExec.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@
6464
/**
6565
* A wrapper around gradle's Exec task to capture output and log on error.
6666
*/
67-
@SuppressWarnings("unchecked")
6867
public class LoggedExec extends Exec implements FileSystemOperationsAware {
6968

7069
private static final Logger LOGGER = Logging.getLogger(LoggedExec.class);

buildSrc/src/main/java/org/opensearch/gradle/OpenSearchJavaPlugin.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@
6363
import org.gradle.language.base.plugins.LifecycleBasePlugin;
6464

6565
import java.io.File;
66+
import java.util.HashMap;
6667
import java.util.List;
67-
import java.util.Map;
6868
import java.util.function.Consumer;
6969

7070
import static org.opensearch.gradle.util.Util.toStringable;
@@ -212,10 +212,12 @@ static void configureJars(Project project) {
212212
public void execute(Task task) {
213213
// this doFirst is added before the info plugin, therefore it will run
214214
// after the doFirst added by the info plugin, and we can override attributes
215-
jarTask.getManifest()
216-
.attributes(
217-
Map.of("Build-Date", BuildParams.getBuildDate(), "Build-Java-Version", BuildParams.getGradleJavaVersion())
218-
);
215+
jarTask.getManifest().attributes(new HashMap<String, Object>() {
216+
{
217+
put("Build-Date", BuildParams.getBuildDate());
218+
put("Build-Java-Version", BuildParams.getGradleJavaVersion());
219+
}
220+
});
219221
}
220222
});
221223
});

buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.gradle.api.tasks.testing.Test;
5050

5151
import java.io.File;
52+
import java.util.HashMap;
5253
import java.util.Map;
5354

5455
import static org.opensearch.gradle.util.FileUtils.mkdirs;
@@ -95,7 +96,7 @@ public void apply(Project project) {
9596

9697
// We specifically use an anonymous inner class here because lambda task actions break Gradle cacheability
9798
// See: https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:how_does_it_work
98-
test.doFirst(new Action<>() {
99+
test.doFirst(new Action<Task>() {
99100
@Override
100101
public void execute(Task t) {
101102
mkdirs(testOutputDir);
@@ -137,20 +138,16 @@ public void execute(Task t) {
137138
test.jvmArgs("-ea", "-esa");
138139
}
139140

140-
Map<String, String> sysprops = Map.of(
141-
"java.awt.headless",
142-
"true",
143-
"tests.gradle",
144-
"true",
145-
"tests.artifact",
146-
project.getName(),
147-
"tests.task",
148-
test.getPath(),
149-
"tests.security.manager",
150-
"true",
151-
"jna.nosys",
152-
"true"
153-
);
141+
Map<String, String> sysprops = new HashMap<String, String>() {
142+
{
143+
put("java.awt.headless", "true");
144+
put("tests.gradle", "true");
145+
put("tests.artifact", project.getName());
146+
put("tests.task", test.getPath());
147+
put("tests.security.manager", "true");
148+
put("jna.nosys", "true");
149+
}
150+
};
154151
test.systemProperties(sysprops);
155152

156153
// ignore changing test seed when build is passed -Dignore.tests.seed for cacheability experimentation

buildSrc/src/main/java/org/opensearch/gradle/ReaperPlugin.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.gradle.api.Plugin;
3737
import org.gradle.api.Project;
3838

39+
import java.lang.management.ManagementFactory;
3940
import java.nio.file.Path;
4041

4142
/**
@@ -51,14 +52,31 @@ public void apply(Project project) {
5152

5253
project.getPlugins().apply(GlobalBuildInfoPlugin.class);
5354

54-
Path inputDir = project.getRootDir()
55-
.toPath()
56-
.resolve(".gradle")
57-
.resolve("reaper")
58-
.resolve("build-" + ProcessHandle.current().pid());
55+
Path inputDir = project.getRootDir().toPath().resolve(".gradle").resolve("reaper").resolve("build-" + getProcessId("xx"));
5956
ReaperService service = project.getExtensions()
6057
.create("reaper", ReaperService.class, project, project.getBuildDir().toPath(), inputDir);
6158

6259
project.getGradle().buildFinished(result -> service.shutdown());
6360
}
61+
62+
private static String getProcessId(final String fallback) {
63+
// Note: may fail in some JVM implementations
64+
// therefore fallback has to be provided
65+
66+
// something like '<pid>@<hostname>', at least in SUN / Oracle JVMs
67+
final String jvmName = ManagementFactory.getRuntimeMXBean().getName();
68+
final int index = jvmName.indexOf('@');
69+
70+
if (index < 1) {
71+
// part before '@' empty (index = 0) / '@' not found (index = -1)
72+
return fallback;
73+
}
74+
75+
try {
76+
return Long.toString(Long.parseLong(jvmName.substring(0, index)));
77+
} catch (NumberFormatException e) {
78+
// ignore
79+
}
80+
return fallback;
81+
}
6482
}

buildSrc/src/main/java/org/opensearch/gradle/ReaperService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,11 @@ private Path locateReaperJar() {
179179
InputStream jarInput = this.getClass().getResourceAsStream("/META-INF/reaper.jar");
180180
) {
181181
logger.info("Copying reaper.jar...");
182-
jarInput.transferTo(out);
182+
byte[] buffer = new byte[4096];
183+
int len;
184+
while ((len = jarInput.read(buffer)) > 0) {
185+
out.write(buffer, 0, len);
186+
}
183187
} catch (IOException e) {
184188
throw new UncheckedIOException(e);
185189
}

buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import java.nio.file.Files;
5050
import java.nio.file.Path;
5151
import java.nio.file.Paths;
52+
import java.util.Arrays;
5253
import java.util.Collections;
5354
import java.util.HashMap;
5455
import java.util.List;
@@ -280,7 +281,7 @@ static Map<String, String> parseOsRelease(final List<String> osReleaseLines) {
280281
*/
281282
private Optional<String> getDockerPath() {
282283
// Check if the Docker binary exists
283-
return List.of(DOCKER_BINARIES).stream().filter(path -> new File(path).exists()).findFirst();
284+
return Arrays.asList(DOCKER_BINARIES).stream().filter(path -> new File(path).exists()).findFirst();
284285
}
285286

286287
/**
@@ -291,7 +292,7 @@ private Optional<String> getDockerPath() {
291292
*/
292293
private Optional<String> getDockerComposePath() {
293294
// Check if the Docker binary exists
294-
return List.of(DOCKER_COMPOSE_BINARIES).stream().filter(path -> new File(path).exists()).findFirst();
295+
return Arrays.asList(DOCKER_COMPOSE_BINARIES).stream().filter(path -> new File(path).exists()).findFirst();
295296
}
296297

297298
private void throwDockerRequiredException(final String message) {

buildSrc/src/main/java/org/opensearch/gradle/internal/InternalBwcGitPlugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public void apply(Project project) {
109109
});
110110

111111
TaskProvider<LoggedExec> fetchLatestTaskProvider = tasks.register("fetchLatest", LoggedExec.class, fetchLatest -> {
112-
var gitFetchLatest = project.getProviders()
112+
Provider<Object> gitFetchLatest = project.getProviders()
113113
.systemProperty("tests.bwc.git_fetch_latest")
114114
.forUseAtConfigurationTime()
115115
.orElse("true")
@@ -122,7 +122,7 @@ public void apply(Project project) {
122122
}
123123
throw new GradleException("tests.bwc.git_fetch_latest must be [true] or [false] but was [" + fetchProp + "]");
124124
});
125-
fetchLatest.onlyIf(t -> project.getGradle().getStartParameter().isOffline() == false && gitFetchLatest.get());
125+
fetchLatest.onlyIf(t -> project.getGradle().getStartParameter().isOffline() == false && gitFetchLatest.get() != null);
126126
fetchLatest.dependsOn(addRemoteTaskProvider);
127127
fetchLatest.setWorkingDir(gitExtension.getCheckoutDir().get());
128128
fetchLatest.setCommandLine(asList("git", "fetch", "--all"));

buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,15 @@
3939
import org.gradle.api.Plugin;
4040
import org.gradle.api.Project;
4141
import org.gradle.api.Task;
42+
import org.gradle.api.artifacts.Configuration;
4243
import org.gradle.api.artifacts.type.ArtifactTypeDefinition;
4344
import org.gradle.api.plugins.BasePlugin;
4445
import org.gradle.api.logging.Logger;
4546
import org.gradle.api.logging.Logging;
4647
import org.gradle.api.tasks.AbstractCopyTask;
4748
import org.gradle.api.tasks.Sync;
4849
import org.gradle.api.tasks.TaskContainer;
50+
import org.gradle.api.tasks.TaskProvider;
4951
import org.gradle.api.tasks.bundling.AbstractArchiveTask;
5052
import org.gradle.api.tasks.bundling.Compression;
5153
import org.gradle.api.tasks.bundling.Zip;
@@ -105,14 +107,18 @@ private Action<Task> configure(String name) {
105107

106108
private void registerAndConfigureDistributionArchivesExtension(Project project) {
107109
container = project.container(DistributionArchive.class, name -> {
108-
var subProjectDir = archiveToSubprojectName(name);
109-
var copyDistributionTaskName = "build" + capitalize(name.substring(0, name.length() - 3));
110+
String subProjectDir = archiveToSubprojectName(name);
111+
String copyDistributionTaskName = "build" + capitalize(name.substring(0, name.length() - 3));
110112
TaskContainer tasks = project.getTasks();
111-
var explodedDist = tasks.register(copyDistributionTaskName, Sync.class, sync -> sync.into(subProjectDir + "/build/install/"));
113+
TaskProvider<Sync> explodedDist = tasks.register(
114+
copyDistributionTaskName,
115+
Sync.class,
116+
sync -> sync.into(subProjectDir + "/build/install/")
117+
);
112118
explodedDist.configure(configure(name));
113-
var archiveTaskName = "build" + capitalize(name);
119+
String archiveTaskName = "build" + capitalize(name);
114120

115-
var archiveTask = name.endsWith("Tar")
121+
TaskProvider<? extends AbstractArchiveTask> archiveTask = name.endsWith("Tar")
116122
? tasks.register(archiveTaskName, SymbolicLinkPreservingTar.class)
117123
: tasks.register(archiveTaskName, Zip.class);
118124
archiveTask.configure(configure(name));
@@ -122,11 +128,11 @@ private void registerAndConfigureDistributionArchivesExtension(Project project)
122128
// Each defined distribution archive is linked to a subproject.
123129
// A distribution archive definition not matching a sub project will result in build failure.
124130
container.whenObjectAdded(distributionArchive -> {
125-
var subProjectName = archiveToSubprojectName(distributionArchive.getName());
131+
String subProjectName = archiveToSubprojectName(distributionArchive.getName());
126132
project.project(subProjectName, sub -> {
127133
sub.getPlugins().apply(BasePlugin.class);
128134
sub.getArtifacts().add(DEFAULT_CONFIGURATION_NAME, distributionArchive.getArchiveTask());
129-
var extractedConfiguration = sub.getConfigurations().create("extracted");
135+
Configuration extractedConfiguration = sub.getConfigurations().create("extracted");
130136
extractedConfiguration.setCanBeResolved(false);
131137
extractedConfiguration.getAttributes().attribute(ARTIFACT_FORMAT, ArtifactTypeDefinition.DIRECTORY_TYPE);
132138
sub.getArtifacts().add(EXTRACTED_CONFIGURATION_NAME, distributionArchive.getExpandedDistTask());

0 commit comments

Comments
 (0)