src/jdk.jpackage/share/classes/jdk/jpackage/internal/ToolValidator.java
branchJDK-8200758-branch
changeset 58994 b09ba68c6a19
parent 58993 b5e1baa9d2c3
child 58995 de1413ae214c
--- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/ToolValidator.java	Wed Nov 06 07:20:07 2019 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package jdk.jpackage.internal;
-
-import java.io.IOException;
-import java.nio.file.Path;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import java.util.stream.Stream;
-
-
-public final class ToolValidator {
-
-    ToolValidator(String tool) {
-        this(Path.of(tool));
-    }
-
-    ToolValidator(Path toolPath) {
-        this.toolPath = toolPath;
-        args = new ArrayList<>();
-
-        if (Platform.getPlatform() == Platform.LINUX) {
-            setCommandLine("--version");
-        }
-
-        setToolNotFoundErrorHandler(null);
-        setToolOldVersionErrorHandler(null);
-    }
-
-    ToolValidator setCommandLine(String... args) {
-        this.args = List.of(args);
-        return this;
-    }
-
-    ToolValidator setMinimalVersion(Comparable<String> v) {
-        minimalVersion = v;
-        return this;
-    }
-
-    ToolValidator setVersionParser(Function<Stream<String>, String> v) {
-        versionParser = v;
-        return this;
-    }
-
-    ToolValidator setToolNotFoundErrorHandler(
-            BiFunction<String, IOException, ConfigException> v) {
-        toolNotFoundErrorHandler = v;
-        return this;
-    }
-
-    ToolValidator setToolOldVersionErrorHandler(BiFunction<String, String, ConfigException> v) {
-        toolOldVersionErrorHandler = v;
-        return this;
-    }
-
-    ConfigException validate() {
-        List<String> cmdline = new ArrayList<>();
-        cmdline.add(toolPath.toString());
-        cmdline.addAll(args);
-
-        String name = toolPath.getFileName().toString();
-        try {
-            ProcessBuilder pb = new ProcessBuilder(cmdline);
-            AtomicBoolean canUseTool = new AtomicBoolean();
-            if (minimalVersion == null) {
-                // No version check.
-                canUseTool.setPlain(true);
-            }
-
-            String[] version = new String[1];
-            Executor.of(pb).setOutputConsumer(lines -> {
-                if (versionParser != null && minimalVersion != null) {
-                    version[0] = versionParser.apply(lines);
-                    if (minimalVersion.compareTo(version[0]) < 0) {
-                        canUseTool.setPlain(true);
-                    }
-                }
-            }).execute();
-
-            if (!canUseTool.getPlain()) {
-                if (toolOldVersionErrorHandler != null) {
-                    return toolOldVersionErrorHandler.apply(name, version[0]);
-                }
-                return new ConfigException(MessageFormat.format(I18N.getString(
-                        "error.tool-old-version"), name, minimalVersion),
-                        MessageFormat.format(I18N.getString(
-                                "error.tool-old-version.advice"), name,
-                                minimalVersion));
-            }
-        } catch (IOException e) {
-            if (toolNotFoundErrorHandler != null) {
-                return toolNotFoundErrorHandler.apply(name, e);
-            }
-            return new ConfigException(MessageFormat.format(I18N.getString(
-                    "error.tool-not-found"), name, e.getMessage()),
-                    MessageFormat.format(I18N.getString(
-                            "error.tool-not-found.advice"), name), e);
-        }
-
-        // All good. Tool can be used.
-        return null;
-    }
-
-    private final Path toolPath;
-    private List<String> args;
-    private Comparable<String> minimalVersion;
-    private Function<Stream<String>, String> versionParser;
-    private BiFunction<String, IOException, ConfigException> toolNotFoundErrorHandler;
-    private BiFunction<String, String, ConfigException> toolOldVersionErrorHandler;
-}