148 JavacMessages.instance(context).setCurrentLocale(locale); |
148 JavacMessages.instance(context).setCurrentLocale(locale); |
149 if (diagnosticListener != null) |
149 if (diagnosticListener != null) |
150 context.put(DiagnosticListener.class, diagnosticListener); |
150 context.put(DiagnosticListener.class, diagnosticListener); |
151 context.put(Log.outKey, new PrintWriter(System.err, true)); // FIXME |
151 context.put(Log.outKey, new PrintWriter(System.err, true)); // FIXME |
152 return new JavacFileManager(context, true, charset); |
152 return new JavacFileManager(context, true, charset); |
153 } |
|
154 |
|
155 private boolean compilationInProgress = false; |
|
156 |
|
157 /** |
|
158 * Register that a compilation is about to start. |
|
159 */ |
|
160 void beginContext(Context context) { |
|
161 if (compilationInProgress) |
|
162 throw new IllegalStateException("Compilation in progress"); |
|
163 compilationInProgress = true; |
|
164 final JavaFileManager givenFileManager = context.get(JavaFileManager.class); |
|
165 context.put(JavaFileManager.class, (JavaFileManager)null); |
|
166 context.put(JavaFileManager.class, new Context.Factory<JavaFileManager>() { |
|
167 public JavaFileManager make(Context c) { |
|
168 if (givenFileManager != null) { |
|
169 c.put(JavaFileManager.class, givenFileManager); |
|
170 return givenFileManager; |
|
171 } else { |
|
172 return new JavacFileManager(c, true, null); |
|
173 } |
|
174 } |
|
175 }); |
|
176 } |
|
177 |
|
178 /** |
|
179 * Register that a compilation is completed. |
|
180 */ |
|
181 void endContext() { |
|
182 compilationInProgress = false; |
|
183 } |
153 } |
184 |
154 |
185 public JavacTask getTask(Writer out, |
155 public JavacTask getTask(Writer out, |
186 JavaFileManager fileManager, |
156 JavaFileManager fileManager, |
187 DiagnosticListener<? super JavaFileObject> diagnosticListener, |
157 DiagnosticListener<? super JavaFileObject> diagnosticListener, |