Interface EnterpriseJettyComponent

All Superinterfaces:
DeephavenApiServerComponent

This is the root component definition for DnD workers. Dhc and Dnd use Dagger 2 as a framework for Dependency Injection. This component presents a Builder object to create the DeephavenApiServer. Each module provides some subset of objects to the builder and may also require certain other objects denoted by Provides. Dagger will inspect the set of modules and generate a builder that invokes the component methods lazily and the correct order so that each and every requirement is satisfied. If a requirement is not satisfied by some component, or two components supply the same requirement it results in a compile error.


In a nutshell, this lets us easily swap out component providers without having to write tons of builder code and manual dependency resolution. An example here is the two ConsoleSessionWithDatabaseModules. In vanilla DHC the providers for "python" and "groovy Console ScriptSessions are provided by PythonConsoleSessionModule and GroovyConsoleSessionModule. Those are not sufficient for DnD because we need to be able to initialize them with our custom Database object. All we had to do to make this swap was to change the component reference in the modules list below to our own subcomponents PythonConsoleSessionWithDatabaseModule and GroovyConsoleSessionWithDatabaseModule.


Further, if you wanted to add sessions for other languages, it would be as simple as adding another component provider to this modules list, and defining the module class.

Finally, anything that is not provided directly by a component can be injected directly into the EnterpriseJettyComponent.Builder below so that the creator can inject whatever it needs, see Main.runDhcServer(io.deephaven.configuration.Configuration, java.io.PrintStream, java.io.PrintStream, io.deephaven.enterprise.auth.UserContext, int, io.deephaven.enterprise.dispatcher.client.DispatcherClient, java.util.concurrent.Future<java.lang.Boolean>, io.deephaven.enterprise.auth.audit.AuditEventLogger, io.deephaven.enterprise.dispatcher.client.WorkerDetails, io.deephaven.enterprise.dnd.CreationJsonParser, java.lang.String, io.deephaven.shadow.enterprise.com.fishlib.io.logger.Logger)

  • Method Details

    • getScriptSession

      ScriptSession getScriptSession()
      Returns:
      the script session that DHC's dep graph already creates