langtools/src/share/classes/com/sun/tools/javac/comp/Todo.java
changeset 22163 3651128c74eb
parent 5847 1908176fd6e3
child 23115 97722ad6c874
equal deleted inserted replaced
22162:3b3e23e67329 22163:3651128c74eb
    41  *  This code and its internal interfaces are subject to change or
    41  *  This code and its internal interfaces are subject to change or
    42  *  deletion without notice.</b>
    42  *  deletion without notice.</b>
    43  */
    43  */
    44 public class Todo extends AbstractQueue<Env<AttrContext>> {
    44 public class Todo extends AbstractQueue<Env<AttrContext>> {
    45     /** The context key for the todo list. */
    45     /** The context key for the todo list. */
    46     protected static final Context.Key<Todo> todoKey =
    46     protected static final Context.Key<Todo> todoKey = new Context.Key<>();
    47         new Context.Key<Todo>();
       
    48 
    47 
    49     /** Get the Todo instance for this context. */
    48     /** Get the Todo instance for this context. */
    50     public static Todo instance(Context context) {
    49     public static Todo instance(Context context) {
    51         Todo instance = context.get(todoKey);
    50         Todo instance = context.get(todoKey);
    52         if (instance == null)
    51         if (instance == null)
    96         return (size() == 0 ? null : contents.get(0));
    95         return (size() == 0 ? null : contents.get(0));
    97     }
    96     }
    98 
    97 
    99     public Queue<Queue<Env<AttrContext>>> groupByFile() {
    98     public Queue<Queue<Env<AttrContext>>> groupByFile() {
   100         if (contentsByFile == null) {
    99         if (contentsByFile == null) {
   101             contentsByFile = new LinkedList<Queue<Env<AttrContext>>>();
   100             contentsByFile = new LinkedList<>();
   102             for (Env<AttrContext> env: contents) {
   101             for (Env<AttrContext> env: contents) {
   103                 addByFile(env);
   102                 addByFile(env);
   104             }
   103             }
   105         }
   104         }
   106         return contentsByFile;
   105         return contentsByFile;
   107     }
   106     }
   108 
   107 
   109     private void addByFile(Env<AttrContext> env) {
   108     private void addByFile(Env<AttrContext> env) {
   110         JavaFileObject file = env.toplevel.sourcefile;
   109         JavaFileObject file = env.toplevel.sourcefile;
   111         if (fileMap == null)
   110         if (fileMap == null)
   112             fileMap = new HashMap<JavaFileObject, FileQueue>();
   111             fileMap = new HashMap<>();
   113         FileQueue fq = fileMap.get(file);
   112         FileQueue fq = fileMap.get(file);
   114         if (fq == null) {
   113         if (fq == null) {
   115             fq = new FileQueue();
   114             fq = new FileQueue();
   116             fileMap.put(file, fq);
   115             fileMap.put(file, fq);
   117             contentsByFile.add(fq);
   116             contentsByFile.add(fq);
   130                 contentsByFile.remove(fq);
   129                 contentsByFile.remove(fq);
   131             }
   130             }
   132         }
   131         }
   133     }
   132     }
   134 
   133 
   135     LinkedList<Env<AttrContext>> contents = new LinkedList<Env<AttrContext>>();
   134     LinkedList<Env<AttrContext>> contents = new LinkedList<>();
   136     LinkedList<Queue<Env<AttrContext>>> contentsByFile;
   135     LinkedList<Queue<Env<AttrContext>>> contentsByFile;
   137     Map<JavaFileObject, FileQueue> fileMap;
   136     Map<JavaFileObject, FileQueue> fileMap;
   138 
   137 
   139     class FileQueue extends AbstractQueue<Env<AttrContext>> {
   138     class FileQueue extends AbstractQueue<Env<AttrContext>> {
   140         @Override
   139         @Override
   165 
   164 
   166         public Env<AttrContext> peek() {
   165         public Env<AttrContext> peek() {
   167             return (fileContents.size() == 0 ? null : fileContents.get(0));
   166             return (fileContents.size() == 0 ? null : fileContents.get(0));
   168         }
   167         }
   169 
   168 
   170         LinkedList<Env<AttrContext>> fileContents = new LinkedList<Env<AttrContext>>();
   169         LinkedList<Env<AttrContext>> fileContents = new LinkedList<>();
   171     }
   170     }
   172 }
   171 }