< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTool.java

Print this page

 24  */
 25 
 26 package com.sun.tools.javac.api;
 27 
 28 import java.io.InputStream;
 29 import java.io.OutputStream;
 30 import java.io.OutputStreamWriter;
 31 import java.io.PrintWriter;
 32 import java.io.Writer;
 33 import java.nio.charset.Charset;
 34 import java.util.Collections;
 35 import java.util.EnumSet;
 36 import java.util.Locale;
 37 import java.util.Objects;
 38 import java.util.Set;
 39 
 40 import javax.lang.model.SourceVersion;
 41 import javax.tools.*;
 42 
 43 import com.sun.source.util.JavacTask;

 44 import com.sun.tools.javac.file.JavacFileManager;
 45 import com.sun.tools.javac.main.Arguments;
 46 import com.sun.tools.javac.main.Option;
 47 import com.sun.tools.javac.file.BaseFileManager;
 48 import com.sun.tools.javac.file.CacheFSInfo;
 49 import com.sun.tools.javac.jvm.Target;
 50 import com.sun.tools.javac.util.ClientCodeException;
 51 import com.sun.tools.javac.util.Context;
 52 import com.sun.tools.javac.util.DefinedBy;
 53 import com.sun.tools.javac.util.DefinedBy.Api;
 54 import com.sun.tools.javac.util.List;
 55 import com.sun.tools.javac.util.Log;
 56 import com.sun.tools.javac.util.PropagatedException;
 57 
 58 /**
 59  * TODO: describe com.sun.tools.javac.api.Tool
 60  *
 61  * <p><b>This is NOT part of any supported API.
 62  * If you write code that depends on this, you do so at your own
 63  * risk.  This code and its internal interfaces are subject to change

180             if (fileManager == null) {
181                 fileManager = getStandardFileManager(diagnosticListener, null, null);
182                 if (fileManager instanceof BaseFileManager baseFileManager) {
183                     baseFileManager.autoClose = true;
184                 }
185             }
186             fileManager = ccw.wrap(fileManager);
187 
188             context.put(JavaFileManager.class, fileManager);
189 
190             Arguments args = Arguments.instance(context);
191             args.init("javac", options, classes, compilationUnits);
192 
193             // init multi-release jar handling
194             if (fileManager.isSupportedOption(Option.MULTIRELEASE.primaryName) == 1) {
195                 Target target = Target.instance(context);
196                 List<String> list = List.of(target.multiReleaseValue());
197                 fileManager.handleOption(Option.MULTIRELEASE.primaryName, list.iterator());
198             }
199 






200             return new JavacTaskImpl(context);
201         } catch (PropagatedException ex) {
202             throw ex.getCause();
203         } catch (ClientCodeException ex) {
204             throw new RuntimeException(ex.getCause());
205         }
206     }
207 
208     @Override @DefinedBy(Api.COMPILER)
209     public int run(InputStream in, OutputStream out, OutputStream err, String... arguments) {
210         if (err == null)
211             err = System.err;
212         for (String argument : arguments)
213             Objects.requireNonNull(argument);
214         return com.sun.tools.javac.Main.compile(arguments, new PrintWriter(err, true));
215     }
216 
217     @Override @DefinedBy(Api.COMPILER)
218     public Set<SourceVersion> getSourceVersions() {
219         return Collections.unmodifiableSet(EnumSet.range(SourceVersion.RELEASE_3,

 24  */
 25 
 26 package com.sun.tools.javac.api;
 27 
 28 import java.io.InputStream;
 29 import java.io.OutputStream;
 30 import java.io.OutputStreamWriter;
 31 import java.io.PrintWriter;
 32 import java.io.Writer;
 33 import java.nio.charset.Charset;
 34 import java.util.Collections;
 35 import java.util.EnumSet;
 36 import java.util.Locale;
 37 import java.util.Objects;
 38 import java.util.Set;
 39 
 40 import javax.lang.model.SourceVersion;
 41 import javax.tools.*;
 42 
 43 import com.sun.source.util.JavacTask;
 44 import com.sun.tools.javac.code.Preview;
 45 import com.sun.tools.javac.file.JavacFileManager;
 46 import com.sun.tools.javac.main.Arguments;
 47 import com.sun.tools.javac.main.Option;
 48 import com.sun.tools.javac.file.BaseFileManager;
 49 import com.sun.tools.javac.file.CacheFSInfo;
 50 import com.sun.tools.javac.jvm.Target;
 51 import com.sun.tools.javac.util.ClientCodeException;
 52 import com.sun.tools.javac.util.Context;
 53 import com.sun.tools.javac.util.DefinedBy;
 54 import com.sun.tools.javac.util.DefinedBy.Api;
 55 import com.sun.tools.javac.util.List;
 56 import com.sun.tools.javac.util.Log;
 57 import com.sun.tools.javac.util.PropagatedException;
 58 
 59 /**
 60  * TODO: describe com.sun.tools.javac.api.Tool
 61  *
 62  * <p><b>This is NOT part of any supported API.
 63  * If you write code that depends on this, you do so at your own
 64  * risk.  This code and its internal interfaces are subject to change

181             if (fileManager == null) {
182                 fileManager = getStandardFileManager(diagnosticListener, null, null);
183                 if (fileManager instanceof BaseFileManager baseFileManager) {
184                     baseFileManager.autoClose = true;
185                 }
186             }
187             fileManager = ccw.wrap(fileManager);
188 
189             context.put(JavaFileManager.class, fileManager);
190 
191             Arguments args = Arguments.instance(context);
192             args.init("javac", options, classes, compilationUnits);
193 
194             // init multi-release jar handling
195             if (fileManager.isSupportedOption(Option.MULTIRELEASE.primaryName) == 1) {
196                 Target target = Target.instance(context);
197                 List<String> list = List.of(target.multiReleaseValue());
198                 fileManager.handleOption(Option.MULTIRELEASE.primaryName, list.iterator());
199             }
200 
201             // pass preview mode to the file manager:
202             if (fileManager.isSupportedOption(Option.PREVIEWMODE.primaryName) == 1) {
203                 Preview preview = Preview.instance(context);
204                 fileManager.handleOption(Option.PREVIEWMODE.primaryName, List.of(String.valueOf(preview.isEnabled())).iterator());
205             }
206 
207             return new JavacTaskImpl(context);
208         } catch (PropagatedException ex) {
209             throw ex.getCause();
210         } catch (ClientCodeException ex) {
211             throw new RuntimeException(ex.getCause());
212         }
213     }
214 
215     @Override @DefinedBy(Api.COMPILER)
216     public int run(InputStream in, OutputStream out, OutputStream err, String... arguments) {
217         if (err == null)
218             err = System.err;
219         for (String argument : arguments)
220             Objects.requireNonNull(argument);
221         return com.sun.tools.javac.Main.compile(arguments, new PrintWriter(err, true));
222     }
223 
224     @Override @DefinedBy(Api.COMPILER)
225     public Set<SourceVersion> getSourceVersions() {
226         return Collections.unmodifiableSet(EnumSet.range(SourceVersion.RELEASE_3,
< prev index next >