< prev index next >

langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java

Print this page




  34 
  35 import javax.lang.model.SourceVersion;
  36 import javax.tools.JavaFileManager;
  37 import javax.tools.JavaFileManager.Location;
  38 import javax.tools.JavaFileObject;
  39 import javax.tools.StandardJavaFileManager;
  40 import javax.tools.StandardLocation;
  41 
  42 import com.sun.tools.javac.code.Scope.WriteableScope;
  43 import com.sun.tools.javac.code.Symbol.ClassSymbol;
  44 import com.sun.tools.javac.code.Symbol.Completer;
  45 import com.sun.tools.javac.code.Symbol.CompletionFailure;
  46 import com.sun.tools.javac.code.Symbol.ModuleSymbol;
  47 import com.sun.tools.javac.code.Symbol.PackageSymbol;
  48 import com.sun.tools.javac.code.Symbol.TypeSymbol;
  49 import com.sun.tools.javac.comp.Annotate;
  50 import com.sun.tools.javac.file.JRTIndex;
  51 import com.sun.tools.javac.file.JavacFileManager;
  52 import com.sun.tools.javac.jvm.ClassReader;
  53 import com.sun.tools.javac.jvm.Profile;

  54 import com.sun.tools.javac.platform.PlatformDescription;
  55 import com.sun.tools.javac.util.*;
  56 
  57 import static javax.tools.StandardLocation.*;
  58 
  59 import static com.sun.tools.javac.code.Flags.*;
  60 import static com.sun.tools.javac.code.Kinds.Kind.*;
  61 
  62 import static com.sun.tools.javac.main.Option.*;
  63 
  64 import com.sun.tools.javac.util.Dependencies.CompletionCause;
  65 
  66 /**
  67  *  This class provides operations to locate class definitions
  68  *  from the source and class files on the paths provided to javac.
  69  *
  70  *  <p><b>This is NOT part of any supported API.
  71  *  If you write code that depends on this, you do so at your own risk.
  72  *  This code and its internal interfaces are subject to change or
  73  *  deletion without notice.</b>
  74  */
  75 public class ClassFinder {
  76     /** The context key for the class finder. */
  77     protected static final Context.Key<ClassFinder> classFinderKey = new Context.Key<>();
  78 
  79     ClassReader reader;
  80 
  81     private final Annotate annotate;
  82 
  83     /** Switch: verbose output.


 183             instance = new ClassFinder(context);
 184         return instance;
 185     }
 186 
 187     /** Construct a new class finder. */
 188     protected ClassFinder(Context context) {
 189         context.put(classFinderKey, this);
 190         reader = ClassReader.instance(context);
 191         names = Names.instance(context);
 192         syms = Symtab.instance(context);
 193         fileManager = context.get(JavaFileManager.class);
 194         dependencies = Dependencies.instance(context);
 195         if (fileManager == null)
 196             throw new AssertionError("FileManager initialization error");
 197         diagFactory = JCDiagnostic.Factory.instance(context);
 198 
 199         log = Log.instance(context);
 200         annotate = Annotate.instance(context);
 201 
 202         Options options = Options.instance(context);
 203         verbose = options.isSet(VERBOSE);
 204         cacheCompletionFailure = options.isUnset("dev");
 205         preferSource = "source".equals(options.get("-Xprefer"));
 206         userPathsFirst = options.isSet(XXUSERPATHSFIRST);
 207         allowSigFiles = context.get(PlatformDescription.class) != null;
 208 
 209         completionFailureName =
 210             options.isSet("failcomplete")
 211             ? names.fromString(options.get("failcomplete"))
 212             : null;
 213 
 214         moduleOverride = options.isSet(XMODULE) ? names.fromString(options.get(XMODULE))
 215                                                 : null;
 216 
 217         // Temporary, until more info is available from the module system.
 218         boolean useCtProps;
 219         JavaFileManager fm = context.get(JavaFileManager.class);
 220         if (fm instanceof JavacFileManager) {
 221             JavacFileManager jfm = (JavacFileManager) fm;
 222             useCtProps = jfm.isDefaultBootClassPath() && jfm.isSymbolFileEnabled();
 223         } else if (fm.getClass().getName().equals("com.sun.tools.sjavac.comp.SmartFileManager")) {
 224             useCtProps = !options.isSet("ignore.symbol.file");
 225         } else {
 226             useCtProps = false;
 227         }
 228         jrtIndex = useCtProps && JRTIndex.isAvailable() ? JRTIndex.getSharedInstance() : null;
 229 
 230         profile = Profile.instance(context);
 231     }
 232 
 233 
 234 /************************************************************************




  34 
  35 import javax.lang.model.SourceVersion;
  36 import javax.tools.JavaFileManager;
  37 import javax.tools.JavaFileManager.Location;
  38 import javax.tools.JavaFileObject;
  39 import javax.tools.StandardJavaFileManager;
  40 import javax.tools.StandardLocation;
  41 
  42 import com.sun.tools.javac.code.Scope.WriteableScope;
  43 import com.sun.tools.javac.code.Symbol.ClassSymbol;
  44 import com.sun.tools.javac.code.Symbol.Completer;
  45 import com.sun.tools.javac.code.Symbol.CompletionFailure;
  46 import com.sun.tools.javac.code.Symbol.ModuleSymbol;
  47 import com.sun.tools.javac.code.Symbol.PackageSymbol;
  48 import com.sun.tools.javac.code.Symbol.TypeSymbol;
  49 import com.sun.tools.javac.comp.Annotate;
  50 import com.sun.tools.javac.file.JRTIndex;
  51 import com.sun.tools.javac.file.JavacFileManager;
  52 import com.sun.tools.javac.jvm.ClassReader;
  53 import com.sun.tools.javac.jvm.Profile;
  54 import com.sun.tools.javac.main.Option;
  55 import com.sun.tools.javac.platform.PlatformDescription;
  56 import com.sun.tools.javac.util.*;
  57 
  58 import static javax.tools.StandardLocation.*;
  59 
  60 import static com.sun.tools.javac.code.Flags.*;
  61 import static com.sun.tools.javac.code.Kinds.Kind.*;
  62 


  63 import com.sun.tools.javac.util.Dependencies.CompletionCause;
  64 
  65 /**
  66  *  This class provides operations to locate class definitions
  67  *  from the source and class files on the paths provided to javac.
  68  *
  69  *  <p><b>This is NOT part of any supported API.
  70  *  If you write code that depends on this, you do so at your own risk.
  71  *  This code and its internal interfaces are subject to change or
  72  *  deletion without notice.</b>
  73  */
  74 public class ClassFinder {
  75     /** The context key for the class finder. */
  76     protected static final Context.Key<ClassFinder> classFinderKey = new Context.Key<>();
  77 
  78     ClassReader reader;
  79 
  80     private final Annotate annotate;
  81 
  82     /** Switch: verbose output.


 182             instance = new ClassFinder(context);
 183         return instance;
 184     }
 185 
 186     /** Construct a new class finder. */
 187     protected ClassFinder(Context context) {
 188         context.put(classFinderKey, this);
 189         reader = ClassReader.instance(context);
 190         names = Names.instance(context);
 191         syms = Symtab.instance(context);
 192         fileManager = context.get(JavaFileManager.class);
 193         dependencies = Dependencies.instance(context);
 194         if (fileManager == null)
 195             throw new AssertionError("FileManager initialization error");
 196         diagFactory = JCDiagnostic.Factory.instance(context);
 197 
 198         log = Log.instance(context);
 199         annotate = Annotate.instance(context);
 200 
 201         Options options = Options.instance(context);
 202         verbose = options.isSet(Option.VERBOSE);
 203         cacheCompletionFailure = options.isUnset("dev");
 204         preferSource = "source".equals(options.get("-Xprefer"));
 205         userPathsFirst = options.isSet(Option.XXUSERPATHSFIRST);
 206         allowSigFiles = context.get(PlatformDescription.class) != null;
 207 
 208         completionFailureName =
 209             options.isSet("failcomplete")
 210             ? names.fromString(options.get("failcomplete"))
 211             : null;
 212 
 213         moduleOverride = options.isSet(Option.XMODULE) ? names.fromString(options.get(Option.XMODULE))
 214                                                 : null;
 215 
 216         // Temporary, until more info is available from the module system.
 217         boolean useCtProps;
 218         JavaFileManager fm = context.get(JavaFileManager.class);
 219         if (fm instanceof JavacFileManager) {
 220             JavacFileManager jfm = (JavacFileManager) fm;
 221             useCtProps = jfm.isDefaultBootClassPath() && jfm.isSymbolFileEnabled();
 222         } else if (fm.getClass().getName().equals("com.sun.tools.sjavac.comp.SmartFileManager")) {
 223             useCtProps = !options.isSet("ignore.symbol.file");
 224         } else {
 225             useCtProps = false;
 226         }
 227         jrtIndex = useCtProps && JRTIndex.isAvailable() ? JRTIndex.getSharedInstance() : null;
 228 
 229         profile = Profile.instance(context);
 230     }
 231 
 232 
 233 /************************************************************************


< prev index next >