All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.jbang.net.jdkproviders.JavaHomeJdkProvider Maven / Gradle / Ivy

The newest version!
package dev.jbang.net.jdkproviders;

import static dev.jbang.util.JavaUtil.resolveJavaVersionStringFromPath;

import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
import java.util.Optional;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import dev.jbang.net.JdkProvider;
import dev.jbang.util.JavaUtil;

/**
 * This JDK provider detects if a JDK is already available on the system by
 * looking at JAVA_HOME environment variable.
 */
public class JavaHomeJdkProvider implements JdkProvider {
	@Nonnull
	@Override
	public List listInstalled() {
		Path jdkHome = JavaUtil.getJdkHome();
		if (jdkHome != null && Files.isDirectory(jdkHome)) {
			Optional version = resolveJavaVersionStringFromPath(jdkHome);
			if (version.isPresent()) {
				String id = "javahome";
				return Collections.singletonList(createJdk(id, jdkHome, version.get()));
			}
		}
		return Collections.emptyList();
	}

	@Nullable
	@Override
	public Jdk getJdkById(@Nonnull String id) {
		if (id.equals(name())) {
			List l = listInstalled();
			if (!l.isEmpty()) {
				return l.get(0);
			}
		}
		return null;
	}

	@Nullable
	@Override
	public Jdk getJdkByPath(@Nonnull Path jdkPath) {
		List installed = listInstalled();
		Jdk def = !installed.isEmpty() ? installed.get(0) : null;
		return def != null && def.getHome() != null && jdkPath.startsWith(def.getHome()) ? def : null;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy