langtools/test/tools/lib/toolbox/Task.java
author jjg
Thu, 31 Mar 2016 15:20:50 -0700
changeset 36778 e04318f39f92
permissions -rw-r--r--
8152897: refactor ToolBox to allow reduced documented dependencies Reviewed-by: vromero
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
36778
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
     1
/*
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
     2
 * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
     4
 *
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
     7
 * published by the Free Software Foundation.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
     8
 *
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    13
 * accompanied this code).
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    14
 *
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    18
 *
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    21
 * questions.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    22
 */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    23
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    24
package toolbox;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    25
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    26
import java.io.PrintStream;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    27
import java.util.ArrayList;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    28
import java.util.Arrays;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    29
import java.util.List;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    30
import java.util.Map;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    31
import static toolbox.ToolBox.lineSeparator;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    32
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    33
/**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    34
 * The supertype for tasks.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    35
 * Complex operations are modeled by building and running a "Task" object.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    36
 * Tasks are typically configured in a fluent series of calls.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    37
 */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    38
public interface Task {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    39
    /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    40
     * Returns the name of the task.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    41
     * @return the name of the task
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    42
     */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    43
    String name();
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    44
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    45
    /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    46
     * Executes the task as currently configured.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    47
     * @return a Result object containing the results of running the task
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    48
     * @throws TaskError if the outcome of the task was not as expected
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    49
     */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    50
    Result run() throws TaskError;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    51
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    52
    /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    53
     * Exception thrown by {@code Task.run} when the outcome is not as
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    54
     * expected.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    55
     */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    56
    public static class TaskError extends Error {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    57
        /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    58
         * Creates a TaskError object with the given message.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    59
         * @param message the message
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    60
         */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    61
        public TaskError(String message) {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    62
            super(message);
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    63
        }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    64
    }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    65
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    66
    /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    67
     * An enum to indicate the mode a task should use it is when executed.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    68
     */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    69
    public enum Mode {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    70
        /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    71
         * The task should use the interface used by the command
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    72
         * line launcher for the task.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    73
         * For example, for javac: com.sun.tools.javac.Main.compile
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    74
         */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    75
        CMDLINE,
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    76
        /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    77
         * The task should use a publicly defined API for the task.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    78
         * For example, for javac: javax.tools.JavaCompiler
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    79
         */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    80
        API,
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    81
        /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    82
         * The task should use the standard launcher for the task.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    83
         * For example, $JAVA_HOME/bin/javac
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    84
         */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    85
        EXEC
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    86
    }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    87
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    88
    /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    89
     * An enum to indicate the expected success or failure of executing a task.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    90
     */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    91
    public enum Expect {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    92
        /** It is expected that the task will complete successfully. */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    93
        SUCCESS,
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    94
        /** It is expected that the task will not complete successfully. */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    95
        FAIL
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    96
    }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    97
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    98
    /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
    99
     * An enum to identify the streams that may be written by a {@code Task}.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   100
     */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   101
    public enum OutputKind {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   102
        /** Identifies output written to {@code System.out} or {@code stdout}. */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   103
        STDOUT,
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   104
        /** Identifies output written to {@code System.err} or {@code stderr}. */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   105
        STDERR,
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   106
        /** Identifies output written to a stream provided directly to the task. */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   107
        DIRECT
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   108
    };
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   109
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   110
    /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   111
     * The results from running a {@link Task}.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   112
     * The results contain the exit code returned when the tool was invoked,
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   113
     * and a map containing the output written to any streams during the
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   114
     * execution of the tool.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   115
     * All tools support "stdout" and "stderr".
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   116
     * Tools that take an explicit PrintWriter save output written to that
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   117
     * stream as "main".
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   118
     */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   119
    public static class Result {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   120
        final ToolBox toolBox;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   121
        final Task task;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   122
        final int exitCode;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   123
        final Map<OutputKind, String> outputMap;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   124
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   125
        Result(ToolBox toolBox, Task task, int exitCode, Map<OutputKind, String> outputMap) {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   126
            this.toolBox = toolBox;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   127
            this.task = task;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   128
            this.exitCode = exitCode;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   129
            this.outputMap = outputMap;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   130
        }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   131
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   132
        /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   133
         * Returns the content of a specified stream.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   134
         * @param outputKind the kind of the selected stream
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   135
         * @return the content that was written to that stream when the tool
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   136
         *  was executed.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   137
         */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   138
        public String getOutput(OutputKind outputKind) {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   139
            return outputMap.get(outputKind);
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   140
        }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   141
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   142
        /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   143
         * Returns the content of named streams as a list of lines.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   144
         * @param outputKinds the kinds of the selected streams
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   145
         * @return the content that was written to the given streams when the tool
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   146
         *  was executed.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   147
         */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   148
        public List<String> getOutputLines(OutputKind... outputKinds) {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   149
            List<String> result = new ArrayList<>();
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   150
            for (OutputKind outputKind : outputKinds) {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   151
                result.addAll(Arrays.asList(outputMap.get(outputKind).split(lineSeparator)));
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   152
            }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   153
            return result;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   154
        }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   155
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   156
        /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   157
         * Writes the content of the specified stream to the log.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   158
         * @param kind the kind of the selected stream
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   159
         * @return this Result object
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   160
         */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   161
        public Result write(OutputKind kind) {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   162
            PrintStream out = toolBox.out;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   163
            String text = getOutput(kind);
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   164
            if (text == null || text.isEmpty())
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   165
                out.println("[" + task.name() + ":" + kind + "]: empty");
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   166
            else {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   167
                out.println("[" + task.name() + ":" + kind + "]:");
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   168
                out.print(text);
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   169
            }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   170
            return this;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   171
        }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   172
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   173
        /**
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   174
         * Writes the content of all streams with any content to the log.
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   175
         * @return this Result object
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   176
         */
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   177
        public Result writeAll() {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   178
            PrintStream out = toolBox.out;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   179
            outputMap.forEach((name, text) -> {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   180
                if (!text.isEmpty()) {
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   181
                    out.println("[" + name + "]:");
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   182
                    out.print(text);
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   183
                }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   184
            });
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   185
            return this;
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   186
        }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   187
    }
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   188
}
e04318f39f92 8152897: refactor ToolBox to allow reduced documented dependencies
jjg
parents:
diff changeset
   189