langtools/test/tools/javadoc/sampleapi/lib/sampleapi/SampleApiDefaultRunner.java
author ksrini
Thu, 19 Nov 2015 13:14:16 -0800
changeset 33919 e9fccc09cfc6
permissions -rw-r--r--
8130880: Create sampleapi regression test Reviewed-by: ksrini, vromero Contributed-by: sergei.pikalev@oracle.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33919
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
     1
/*
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
     2
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
     4
 *
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
     7
 * published by the Free Software Foundation.
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
     8
 *
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    13
 * accompanied this code).
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    14
 *
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    18
 *
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    21
 * questions.
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    22
 */
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    23
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    24
package sampleapi;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    25
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    26
import java.io.File;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    27
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    28
import sampleapi.SampleApi.Fault;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    29
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    30
public class SampleApiDefaultRunner {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    31
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    32
    public static final String MSG_DUP_OUTDIR =
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    33
        "SampleApi: duplicated outdir detected: ";
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    34
    public static final String MSG_USE_FIRST =
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    35
        "           will use first occurance: ";
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    36
    public static final String MSG_INVAL_OUTDIR =
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    37
        "SampleApi: outdir is not valid: ";
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    38
    public static final String MSG_CANNOT_GEN =
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    39
        "SampleApi: cannot generate output: ";
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    40
    public static final String MSG_WRONG_OPTION =
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    41
        "SampleApi: incorrect option: ";
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    42
    public static final String MSG_USE_HELP =
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    43
        "           use -? for help";
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    44
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    45
    public static void main(String... args) throws Exception {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    46
        if (args.length == 0) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    47
            printHelp();
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    48
            System.exit(1);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    49
        }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    50
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    51
        String outDirName = "";
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    52
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    53
        boolean isOutDirSet = false;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    54
        boolean isHelpPrinted = false;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    55
        for (String arg : args) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    56
            Option option = new Option(arg);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    57
            switch (option.getOptionName()) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    58
                case "-?":
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    59
                case "-h":
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    60
                case "--help":
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    61
                    if (!isHelpPrinted) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    62
                        printHelp();
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    63
                        isHelpPrinted = true;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    64
                    }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    65
                    break;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    66
                case "-o":
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    67
                case "--outdir":
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    68
                    if (!isOutDirSet) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    69
                        outDirName = option.getOptionValue();
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    70
                        isOutDirSet = true;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    71
                    } else {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    72
                        System.err.println(MSG_DUP_OUTDIR + option.getOptionValue());
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    73
                        System.err.println(MSG_USE_FIRST + outDirName);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    74
                    }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    75
                    break;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    76
                default:
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    77
                    System.err.println(MSG_WRONG_OPTION + arg);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    78
                    System.err.println(MSG_USE_HELP);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    79
                    break;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    80
            }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    81
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    82
        }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    83
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    84
        if (!isOutDirSet) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    85
            System.exit(1);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    86
        }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    87
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    88
        if (outDirName.length() == 0) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    89
            System.err.println(MSG_INVAL_OUTDIR + outDirName);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    90
            System.exit(1);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    91
        }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    92
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    93
        File outDir = new File(outDirName);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    94
        outDir.mkdirs();
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    95
        SampleApi apiGen = new SampleApi();
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    96
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    97
        try {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    98
            apiGen.generate(outDir);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
    99
        } catch (Fault e) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   100
            System.err.println(MSG_CANNOT_GEN + e.getMessage());
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   101
            e.printStackTrace();
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   102
        }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   103
    }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   104
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   105
    private static void printHelp() {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   106
        System.out.println("SampleApi:");
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   107
        System.out.println("    options: [-?|-h|--help] [-o:<dir>|--outdir:<dir>]");
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   108
        System.out.println("    -?|-h|--help             - print help");
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   109
        System.out.println("    -o:<dir>|--outdir:<dir>  - set <dir> to generate output");
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   110
    }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   111
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   112
    private static class Option {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   113
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   114
        private String optionName;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   115
        private String optionValue;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   116
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   117
        public Option(String arg) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   118
            int delimPos = arg.indexOf(':');
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   119
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   120
            if (delimPos == -1) {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   121
                optionName = arg;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   122
                optionValue = "";
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   123
            } else {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   124
                optionName = arg.substring(0, delimPos);
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   125
                optionValue = arg.substring(delimPos + 1, arg.length());
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   126
            }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   127
        }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   128
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   129
        public String getOptionName() {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   130
            return optionName;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   131
        }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   132
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   133
        public String getOptionValue() {
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   134
            return optionValue;
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   135
        }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   136
    }
e9fccc09cfc6 8130880: Create sampleapi regression test
ksrini
parents:
diff changeset
   137
}