Skip to content

Commit 1d90f3f

Browse files
yevgenpyevgenp
authored andcommitted
Add MyJavaFileManager override inside CachedCompiler
1 parent 8910342 commit 1d90f3f

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

src/main/java/net/openhft/compiler/CachedCompiler.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.*;
3535
import java.util.concurrent.ConcurrentHashMap;
3636
import java.util.concurrent.ConcurrentMap;
37+
import java.util.function.Function;
3738

3839
import 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
}

src/main/java/net/openhft/compiler/MyJavaFileManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import java.util.concurrent.TimeUnit;
4040
import java.util.concurrent.TimeoutException;
4141

42-
class MyJavaFileManager implements JavaFileManager {
42+
public class MyJavaFileManager implements JavaFileManager {
4343
private static final Logger LOG = LoggerFactory.getLogger(MyJavaFileManager.class);
4444
private final static Unsafe unsafe;
4545
private static final long OVERRIDE_OFFSET;
@@ -67,7 +67,7 @@ class MyJavaFileManager implements JavaFileManager {
6767
// synchronizing due to ConcurrentModificationException
6868
private final Map<String, CloseableByteArrayOutputStream> buffers = Collections.synchronizedMap(new LinkedHashMap<>());
6969

70-
MyJavaFileManager(StandardJavaFileManager fileManager) {
70+
public MyJavaFileManager(StandardJavaFileManager fileManager) {
7171
this.fileManager = fileManager;
7272
}
7373

0 commit comments

Comments
 (0)