29package com.jogamp.gluegen;
32import java.io.IOException;
33import java.io.OutputStreamWriter;
34import java.lang.reflect.InvocationTargetException;
35import java.util.Arrays;
37import java.util.Locale;
39import javax.tools.Diagnostic;
40import javax.tools.DiagnosticCollector;
41import javax.tools.JavaCompiler;
42import javax.tools.JavaFileObject;
43import javax.tools.StandardJavaFileManager;
44import javax.tools.ToolProvider;
46import org.junit.AfterClass;
47import org.junit.Assert;
50import static java.lang.System.*;
51import static com.jogamp.gluegen.BuildUtil.*;
76 public void validateGeneratedStructs() throws IOException, NoSuchMethodException, ClassNotFoundException, IllegalAccessException, InvocationTargetException {
79 final String source = gluegenRoot +
"/test/junit/com/jogamp/gluegen/StructValidator.java";
80 compile(
new File(source), testOutput +
"/build/classes");
83 final Class<?> test = Class.forName(
"com.jogamp.gluegen.StructValidator");
84 test.getDeclaredMethod(
"validate").invoke(
null);
87 private void compile(
final File file,
final String dest)
throws IOException {
88 compile(
new File[] {file}, dest);
92 private void compile(
final File[] files,
final String destination)
throws IOException {
94 out.println(
"compiling files:\n " + Arrays.asList(files));
96 final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
97 final DiagnosticCollector<JavaFileObject> collector =
new DiagnosticCollector<JavaFileObject>();
98 final StandardJavaFileManager fileManager = compiler.getStandardFileManager(collector,
null,
null);
100 final Iterable<? extends JavaFileObject> fileObj = fileManager.getJavaFileObjects(files);
102 final boolean success = compiler.getTask(
new OutputStreamWriter(out),
105 Arrays.asList(
"-d", destination),
111 final List<Diagnostic<? extends JavaFileObject>> list = collector.getDiagnostics();
112 if(!list.isEmpty() || !success) {
113 for (
final Diagnostic<? extends JavaFileObject> d : list) {
114 out.println(
"Error on line "+ d.getLineNumber());
115 out.println(
"Compiler Message:\n"+d.getMessage(Locale.ENGLISH));
117 Assert.fail(
"compilation failed");
void compileStructNatives()
void validateGeneratedStructs()