protected Optional getToolchain()

in src/main/java/org/apache/maven/plugins/jlink/AbstractJLinkMojo.java [88:116]


    protected Optional<Toolchain> getToolchain() {
        Toolchain tc = null;

        if (jdkToolchain != null) {
            // Maven 3.3.1 has plugin execution scoped Toolchain Support
            try {
                Method getToolchainsMethod = toolchainManager
                        .getClass()
                        .getMethod("getToolchains", MavenSession.class, String.class, Map.class);

                @SuppressWarnings("unchecked")
                List<Toolchain> tcs = (List<Toolchain>)
                        getToolchainsMethod.invoke(toolchainManager, getSession(), "jdk", jdkToolchain);

                if (tcs != null && tcs.size() > 0) {
                    tc = tcs.get(0);
                }
            } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException e) {
                // ignore
            }
        }

        if (tc == null) {
            // TODO: Check if we should make the type configurable?
            tc = toolchainManager.getToolchainFromBuildContext("jdk", getSession());
        }

        return Optional.ofNullable(tc);
    }