42 import java.util.Map;
43 import java.util.MissingResourceException;
44 import java.util.ResourceBundle;
45 import java.util.Set;
46
47 import javax.annotation.processing.AbstractProcessor;
48 import javax.annotation.processing.Messager;
49 import javax.annotation.processing.RoundEnvironment;
50 import javax.annotation.processing.SupportedAnnotationTypes;
51 import javax.annotation.processing.SupportedSourceVersion;
52
53 import javax.lang.model.SourceVersion;
54 import javax.lang.model.element.ExecutableElement;
55 import javax.lang.model.element.TypeElement;
56 import javax.lang.model.element.VariableElement;
57 import javax.lang.model.type.ArrayType;
58 import javax.lang.model.type.DeclaredType;
59 import javax.lang.model.type.TypeMirror;
60 import javax.lang.model.type.TypeVisitor;
61 import javax.lang.model.util.ElementFilter;
62 import javax.lang.model.util.SimpleTypeVisitor6;
63 import javax.lang.model.util.Types;
64
65 import javax.tools.Diagnostic;
66 import javax.tools.DiagnosticListener;
67 import javax.tools.JavaCompiler;
68 import javax.tools.JavaCompiler.CompilationTask;
69 import javax.tools.JavaFileManager;
70 import javax.tools.JavaFileObject;
71 import javax.tools.StandardJavaFileManager;
72 import javax.tools.StandardLocation;
73 import javax.tools.ToolProvider;
74
75 /**
76 * Javah generates support files for native methods.
77 * Parse commandline options & Invokes javadoc to execute those commands.
78 *
79 * <p><b>This is NOT part of any API supported by Sun Microsystems.
80 * If you write code that depends on this, you do so at your own
81 * risk. This code and its internal interfaces are subject to change
82 * or deletion without notice.</b></p>
688 allClasses.add(c);
689 getAllClasses0(ElementFilter.typesIn(c.getEnclosedElements()), allClasses);
690 }
691 }
692
693 // 4942232:
694 // check that classes exist for all the parameters of native methods
695 private void checkMethodParameters(Set<TypeElement> classes) {
696 Types types = processingEnv.getTypeUtils();
697 for (TypeElement te: classes) {
698 for (ExecutableElement ee: ElementFilter.methodsIn(te.getEnclosedElements())) {
699 for (VariableElement ve: ee.getParameters()) {
700 TypeMirror tm = ve.asType();
701 checkMethodParametersVisitor.visit(tm, types);
702 }
703 }
704 }
705 }
706
707 private TypeVisitor<Void,Types> checkMethodParametersVisitor =
708 new SimpleTypeVisitor6<Void,Types>() {
709 @Override
710 public Void visitArray(ArrayType t, Types types) {
711 visit(t.getComponentType(), types);
712 return null;
713 }
714 @Override
715 public Void visitDeclared(DeclaredType t, Types types) {
716 t.asElement().getKind(); // ensure class exists
717 for (TypeMirror st: types.directSupertypes(t))
718 visit(st, types);
719 return null;
720 }
721 };
722
723 private Gen g;
724 private Util.Exit exit;
725 }
726 }
|
42 import java.util.Map;
43 import java.util.MissingResourceException;
44 import java.util.ResourceBundle;
45 import java.util.Set;
46
47 import javax.annotation.processing.AbstractProcessor;
48 import javax.annotation.processing.Messager;
49 import javax.annotation.processing.RoundEnvironment;
50 import javax.annotation.processing.SupportedAnnotationTypes;
51 import javax.annotation.processing.SupportedSourceVersion;
52
53 import javax.lang.model.SourceVersion;
54 import javax.lang.model.element.ExecutableElement;
55 import javax.lang.model.element.TypeElement;
56 import javax.lang.model.element.VariableElement;
57 import javax.lang.model.type.ArrayType;
58 import javax.lang.model.type.DeclaredType;
59 import javax.lang.model.type.TypeMirror;
60 import javax.lang.model.type.TypeVisitor;
61 import javax.lang.model.util.ElementFilter;
62 import javax.lang.model.util.SimpleTypeVisitor7;
63 import javax.lang.model.util.Types;
64
65 import javax.tools.Diagnostic;
66 import javax.tools.DiagnosticListener;
67 import javax.tools.JavaCompiler;
68 import javax.tools.JavaCompiler.CompilationTask;
69 import javax.tools.JavaFileManager;
70 import javax.tools.JavaFileObject;
71 import javax.tools.StandardJavaFileManager;
72 import javax.tools.StandardLocation;
73 import javax.tools.ToolProvider;
74
75 /**
76 * Javah generates support files for native methods.
77 * Parse commandline options & Invokes javadoc to execute those commands.
78 *
79 * <p><b>This is NOT part of any API supported by Sun Microsystems.
80 * If you write code that depends on this, you do so at your own
81 * risk. This code and its internal interfaces are subject to change
82 * or deletion without notice.</b></p>
688 allClasses.add(c);
689 getAllClasses0(ElementFilter.typesIn(c.getEnclosedElements()), allClasses);
690 }
691 }
692
693 // 4942232:
694 // check that classes exist for all the parameters of native methods
695 private void checkMethodParameters(Set<TypeElement> classes) {
696 Types types = processingEnv.getTypeUtils();
697 for (TypeElement te: classes) {
698 for (ExecutableElement ee: ElementFilter.methodsIn(te.getEnclosedElements())) {
699 for (VariableElement ve: ee.getParameters()) {
700 TypeMirror tm = ve.asType();
701 checkMethodParametersVisitor.visit(tm, types);
702 }
703 }
704 }
705 }
706
707 private TypeVisitor<Void,Types> checkMethodParametersVisitor =
708 new SimpleTypeVisitor7<Void,Types>() {
709 @Override
710 public Void visitArray(ArrayType t, Types types) {
711 visit(t.getComponentType(), types);
712 return null;
713 }
714 @Override
715 public Void visitDeclared(DeclaredType t, Types types) {
716 t.asElement().getKind(); // ensure class exists
717 for (TypeMirror st: types.directSupertypes(t))
718 visit(st, types);
719 return null;
720 }
721 };
722
723 private Gen g;
724 private Util.Exit exit;
725 }
726 }
|