29 import java.io.FileNotFoundException; |
29 import java.io.FileNotFoundException; |
30 import java.io.IOException; |
30 import java.io.IOException; |
31 import java.io.OutputStream; |
31 import java.io.OutputStream; |
32 import java.io.PrintWriter; |
32 import java.io.PrintWriter; |
33 import java.io.Writer; |
33 import java.io.Writer; |
34 import java.nio.file.NoSuchFileException; |
|
35 import java.text.MessageFormat; |
34 import java.text.MessageFormat; |
36 import java.util.ArrayList; |
35 import java.util.ArrayList; |
37 import java.util.Arrays; |
36 import java.util.Arrays; |
38 import java.util.Collections; |
37 import java.util.Collections; |
39 import java.util.HashMap; |
38 import java.util.HashMap; |
49 import javax.annotation.processing.AbstractProcessor; |
48 import javax.annotation.processing.AbstractProcessor; |
50 import javax.annotation.processing.Messager; |
49 import javax.annotation.processing.Messager; |
51 import javax.annotation.processing.ProcessingEnvironment; |
50 import javax.annotation.processing.ProcessingEnvironment; |
52 import javax.annotation.processing.RoundEnvironment; |
51 import javax.annotation.processing.RoundEnvironment; |
53 import javax.annotation.processing.SupportedAnnotationTypes; |
52 import javax.annotation.processing.SupportedAnnotationTypes; |
|
53 |
54 import javax.lang.model.SourceVersion; |
54 import javax.lang.model.SourceVersion; |
55 import javax.lang.model.element.ExecutableElement; |
55 import javax.lang.model.element.ExecutableElement; |
56 import javax.lang.model.element.TypeElement; |
56 import javax.lang.model.element.TypeElement; |
57 import javax.lang.model.element.VariableElement; |
57 import javax.lang.model.element.VariableElement; |
58 import javax.lang.model.type.ArrayType; |
58 import javax.lang.model.type.ArrayType; |
60 import javax.lang.model.type.TypeMirror; |
60 import javax.lang.model.type.TypeMirror; |
61 import javax.lang.model.type.TypeVisitor; |
61 import javax.lang.model.type.TypeVisitor; |
62 import javax.lang.model.util.ElementFilter; |
62 import javax.lang.model.util.ElementFilter; |
63 import javax.lang.model.util.SimpleTypeVisitor9; |
63 import javax.lang.model.util.SimpleTypeVisitor9; |
64 import javax.lang.model.util.Types; |
64 import javax.lang.model.util.Types; |
|
65 |
65 import javax.tools.Diagnostic; |
66 import javax.tools.Diagnostic; |
66 import javax.tools.DiagnosticListener; |
67 import javax.tools.DiagnosticListener; |
67 import javax.tools.JavaCompiler; |
68 import javax.tools.JavaCompiler; |
68 import javax.tools.JavaCompiler.CompilationTask; |
69 import javax.tools.JavaCompiler.CompilationTask; |
69 import javax.tools.JavaFileManager; |
70 import javax.tools.JavaFileManager; |
70 import javax.tools.JavaFileObject; |
71 import javax.tools.JavaFileObject; |
71 import javax.tools.StandardJavaFileManager; |
72 import javax.tools.StandardJavaFileManager; |
72 import javax.tools.StandardLocation; |
73 import javax.tools.StandardLocation; |
73 import javax.tools.ToolProvider; |
74 import javax.tools.ToolProvider; |
|
75 import static javax.tools.Diagnostic.Kind.*; |
74 |
76 |
75 import com.sun.tools.javac.code.Symbol.CompletionFailure; |
77 import com.sun.tools.javac.code.Symbol.CompletionFailure; |
76 import com.sun.tools.javac.main.CommandLine; |
78 import com.sun.tools.javac.main.CommandLine; |
77 import com.sun.tools.javac.util.DefinedBy; |
79 import com.sun.tools.javac.util.DefinedBy; |
78 import com.sun.tools.javac.util.DefinedBy.Api; |
80 import com.sun.tools.javac.util.DefinedBy.Api; |
79 |
|
80 import static javax.tools.Diagnostic.Kind.*; |
|
81 |
|
82 |
81 |
83 /** |
82 /** |
84 * Javah generates support files for native methods. |
83 * Javah generates support files for native methods. |
85 * Parse commandline options and invokes javadoc to execute those commands. |
84 * Parse commandline options and invokes javadoc to execute those commands. |
86 * |
85 * |
419 private Iterable<String> expandAtArgs(Iterable<String> args) throws BadArgs { |
418 private Iterable<String> expandAtArgs(Iterable<String> args) throws BadArgs { |
420 try { |
419 try { |
421 List<String> l = new ArrayList<>(); |
420 List<String> l = new ArrayList<>(); |
422 for (String arg: args) l.add(arg); |
421 for (String arg: args) l.add(arg); |
423 return Arrays.asList(CommandLine.parse(l.toArray(new String[l.size()]))); |
422 return Arrays.asList(CommandLine.parse(l.toArray(new String[l.size()]))); |
424 } catch (FileNotFoundException | NoSuchFileException e) { |
423 } catch (FileNotFoundException e) { |
425 throw new BadArgs("at.args.file.not.found", e.getLocalizedMessage()); |
424 throw new BadArgs("at.args.file.not.found", e.getLocalizedMessage()); |
426 } catch (IOException e) { |
425 } catch (IOException e) { |
427 throw new BadArgs("at.args.io.exception", e.getLocalizedMessage()); |
426 throw new BadArgs("at.args.io.exception", e.getLocalizedMessage()); |
428 } |
427 } |
429 } |
428 } |