3434import java .util .*;
3535import java .util .concurrent .ConcurrentHashMap ;
3636import java .util .concurrent .ConcurrentMap ;
37+ import java .util .function .Function ;
3738
3839import static net .openhft .compiler .CompilerUtils .*;
3940
@@ -45,6 +46,7 @@ public class CachedCompiler implements Closeable {
4546
4647 private final Map <ClassLoader , Map <String , Class <?>>> loadedClassesMap = Collections .synchronizedMap (new WeakHashMap <>());
4748 private final Map <ClassLoader , MyJavaFileManager > fileManagerMap = Collections .synchronizedMap (new WeakHashMap <>());
49+ public Function <StandardJavaFileManager , MyJavaFileManager > fileManagerOverride ;
4850
4951 @ Nullable
5052 private final File sourceDir ;
@@ -125,8 +127,7 @@ public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
125127
126128 // nothing to return due to compiler error
127129 return Collections .emptyMap ();
128- }
129- else {
130+ } else {
130131 Map <String , byte []> result = fileManager .getAllBuffers ();
131132
132133 return result ;
@@ -153,7 +154,8 @@ public Class loadFromJava(@NotNull ClassLoader classLoader,
153154 MyJavaFileManager fileManager = fileManagerMap .get (classLoader );
154155 if (fileManager == null ) {
155156 StandardJavaFileManager standardJavaFileManager = s_compiler .getStandardFileManager (null , null , null );
156- fileManagerMap .put (classLoader , fileManager = new MyJavaFileManager (standardJavaFileManager ));
157+ fileManager = getFileManager (standardJavaFileManager );
158+ fileManagerMap .put (classLoader , fileManager );
157159 }
158160 final Map <String , byte []> compiled = compileFromJava (className , javaCode , printWriter , fileManager );
159161 for (Map .Entry <String , byte []> entry : compiled .entrySet ()) {
@@ -188,4 +190,10 @@ public Class loadFromJava(@NotNull ClassLoader classLoader,
188190 }
189191 return clazz ;
190192 }
193+
194+ private @ NotNull MyJavaFileManager getFileManager (StandardJavaFileManager fm ) {
195+ return fileManagerOverride != null
196+ ? fileManagerOverride .apply (fm )
197+ : new MyJavaFileManager (fm );
198+ }
191199}
0 commit comments