13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.tools.internal.jxc;
27
28 import com.sun.tools.internal.jxc.ap.Options;
29 import com.sun.tools.internal.xjc.BadCommandLineException;
30 import com.sun.xml.internal.bind.util.Which;
31
32 import javax.lang.model.SourceVersion;
33 import javax.tools.DiagnosticCollector;
34 import javax.tools.JavaCompiler;
35 import javax.tools.JavaFileObject;
36 import javax.tools.OptionChecker;
37 import javax.tools.StandardJavaFileManager;
38 import javax.tools.ToolProvider;
39 import javax.xml.bind.JAXBContext;
40 import java.io.File;
41 import java.lang.reflect.InvocationTargetException;
42 import java.lang.reflect.Method;
43 import java.net.MalformedURLException;
44 import java.net.URISyntaxException;
45 import java.net.URL;
46 import java.net.URLClassLoader;
47 import java.util.ArrayList;
48 import java.util.Collection;
49 import java.util.Collections;
50 import java.util.List;
51 import java.util.logging.Level;
52 import java.util.logging.Logger;
231 JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
232 DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
233 StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
234 JavacOptions options = JavacOptions.parse(compiler, fileManager, args);
235 List<String> unrecognizedOptions = options.getUnrecognizedOptions();
236 if (!unrecognizedOptions.isEmpty()) {
237 LOGGER.log(Level.WARNING, "Unrecognized options found: {0}", unrecognizedOptions);
238 }
239 Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(options.getFiles());
240 JavaCompiler.CompilationTask task = compiler.getTask(
241 null,
242 fileManager,
243 diagnostics,
244 options.getRecognizedOptions(),
245 options.getClassNames(),
246 compilationUnits);
247 com.sun.tools.internal.jxc.ap.SchemaGenerator r = new com.sun.tools.internal.jxc.ap.SchemaGenerator();
248 if (episode != null)
249 r.setEpisodeFile(episode);
250 task.setProcessors(Collections.singleton(r));
251 return task.call();
252 }
253 }
254
255 /**
256 * @author Peter von der Ahe
257 */
258 private static final class JavacOptions {
259 private final List<String> recognizedOptions;
260 private final List<String> classNames;
261 private final List<File> files;
262 private final List<String> unrecognizedOptions;
263
264 private JavacOptions(List<String> recognizedOptions, List<String> classNames, List<File> files,
265 List<String> unrecognizedOptions) {
266 this.recognizedOptions = recognizedOptions;
267 this.classNames = classNames;
268 this.files = files;
269 this.unrecognizedOptions = unrecognizedOptions;
270 }
271
|
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.tools.internal.jxc;
27
28 import com.sun.tools.internal.jxc.ap.Options;
29 import com.sun.tools.internal.xjc.BadCommandLineException;
30 import com.sun.xml.internal.bind.util.Which;
31
32 import javax.lang.model.SourceVersion;
33 import javax.tools.Diagnostic;
34 import javax.tools.DiagnosticCollector;
35 import javax.tools.JavaCompiler;
36 import javax.tools.JavaFileObject;
37 import javax.tools.OptionChecker;
38 import javax.tools.StandardJavaFileManager;
39 import javax.tools.ToolProvider;
40 import javax.xml.bind.JAXBContext;
41 import java.io.File;
42 import java.lang.reflect.InvocationTargetException;
43 import java.lang.reflect.Method;
44 import java.net.MalformedURLException;
45 import java.net.URISyntaxException;
46 import java.net.URL;
47 import java.net.URLClassLoader;
48 import java.util.ArrayList;
49 import java.util.Collection;
50 import java.util.Collections;
51 import java.util.List;
52 import java.util.logging.Level;
53 import java.util.logging.Logger;
232 JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
233 DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
234 StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
235 JavacOptions options = JavacOptions.parse(compiler, fileManager, args);
236 List<String> unrecognizedOptions = options.getUnrecognizedOptions();
237 if (!unrecognizedOptions.isEmpty()) {
238 LOGGER.log(Level.WARNING, "Unrecognized options found: {0}", unrecognizedOptions);
239 }
240 Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(options.getFiles());
241 JavaCompiler.CompilationTask task = compiler.getTask(
242 null,
243 fileManager,
244 diagnostics,
245 options.getRecognizedOptions(),
246 options.getClassNames(),
247 compilationUnits);
248 com.sun.tools.internal.jxc.ap.SchemaGenerator r = new com.sun.tools.internal.jxc.ap.SchemaGenerator();
249 if (episode != null)
250 r.setEpisodeFile(episode);
251 task.setProcessors(Collections.singleton(r));
252 boolean res = task.call();
253 //Print messages generated by compiler
254 for (Diagnostic<? extends JavaFileObject> d : diagnostics.getDiagnostics()) {
255 System.err.println(d.toString());
256 }
257 return res;
258 }
259 }
260
261 /**
262 * @author Peter von der Ahe
263 */
264 private static final class JavacOptions {
265 private final List<String> recognizedOptions;
266 private final List<String> classNames;
267 private final List<File> files;
268 private final List<String> unrecognizedOptions;
269
270 private JavacOptions(List<String> recognizedOptions, List<String> classNames, List<File> files,
271 List<String> unrecognizedOptions) {
272 this.recognizedOptions = recognizedOptions;
273 this.classNames = classNames;
274 this.files = files;
275 this.unrecognizedOptions = unrecognizedOptions;
276 }
277
|