Package io.deephaven.engine.context
Interface QueryCompiler
- All Known Implementing Classes:
PoisonedQueryCompiler,QueryCompilerImpl
public interface QueryCompiler
Java compiler api, specifically geared towards query language expressions. Implementations should be constructed with
a path on disk to existing bytecode to use in addition to
java.class.path. Likewise, callers must ensure that
the context classloader already contains those input classes - the new class will be loaded in a child classloader to
ensure that the class can be GCd when neither it nor the compiler instance are reachable.
Requests for compilation will never depend on other classes compiled by this or any other QueryCompiler, and are expected to be unique based on the provided class name. This enables the implementation to cache classes and only compile and load a class once per name.
-
Method Summary
Modifier and TypeMethodDescriptiondefault Class<?> compile(@NotNull QueryCompilerRequest request) Compile a class and wait for completion.voidcompile(@NotNull QueryCompilerRequest[] requests, CompletionStageFuture.Resolver<Class<?>>[] resolvers) Compiles all requests.default voidcompile(@NotNull QueryCompilerRequest request, CompletionStageFuture.Resolver<Class<?>> resolver) Compile a class.
-
Method Details
-
compile
Compile a class and wait for completion.- Parameters:
request- The compilation request
-
compile
@FinalDefault default void compile(@NotNull @NotNull QueryCompilerRequest request, @NotNull CompletionStageFuture.Resolver<Class<?>> resolver) Compile a class.- Parameters:
request- The compilation requestresolver- The resolver to use for delivering compilation results
-
compile
void compile(@NotNull @NotNull QueryCompilerRequest[] requests, @NotNull CompletionStageFuture.Resolver<Class<?>>[] resolvers) Compiles all requests.- Parameters:
requests- The compilation requests; these must be independent of each otherresolvers- The resolvers to use for delivering compilation results
-