Class PluginInitiationUtils.InboundHandlerEntry

java.lang.Object
com.ultikits.ultitools.utils.PluginInitiationUtils.InboundHandlerEntry
Enclosing class:
PluginInitiationUtils

static final class PluginInitiationUtils.InboundHandlerEntry extends Object
A dispatch-table entry pairing a handler with the Capability that must be enabled before it runs (D-10), and with which side records that decision's verdict in the RemoteActionLog (CR-01, 06-REVIEW.md).

Exposes exactly two static factories and no capability-free, verdict-recorder-free construction path — this is the whole point of D-10: of(Capability, VerdictRecorder, BiConsumer) and resolved(Function, VerdictRecorder, BiConsumer) are the only ways to build an entry, both take these arguments in fixed positions, and neither has a shorter overload or a default.

Precisely stated (corrected per IN-01, 06-REVIEW.md — an earlier revision of this javadoc overstated this): omitting either argument from a call site IS a genuine javac compile error — there is no shorter overload to fall back to. Passing a null capability, resolver, or PluginInitiationUtils.VerdictRecorder, however, compiles cleanly (a reference-typed parameter accepts null at the language level) and is instead rejected by an IllegalArgumentException thrown from of(com.ultikits.ultitools.entities.Capability, com.ultikits.ultitools.utils.PluginInitiationUtils.VerdictRecorder, java.util.function.BiConsumer<com.google.gson.JsonObject, com.google.gson.JsonObject>)/resolved(java.util.function.Function<com.google.gson.JsonObject, com.ultikits.ultitools.entities.Capability>, com.ultikits.ultitools.utils.PluginInitiationUtils.VerdictRecorder, java.util.function.BiConsumer<com.google.gson.JsonObject, com.google.gson.JsonObject>) the moment PluginInitiationUtils.buildInboundHandlers() runs — at class-initialization time, before the server finishes starting, not by the compiler. Together the two guarantees still mean a new message type cannot silently ship ungated or with an undeclared verdict recorder — the argument slot is mandatory (compile-time) and a null value fails immediately and loudly (class-load-time) — but the null-rejection half is not literally a compile error.

of(Capability, VerdictRecorder, BiConsumer) covers the 23 entries whose capability is fixed by the message type alone; resolved(Function, VerdictRecorder, BiConsumer) covers file_operation, the one entry whose capability depends on the message's operation field rather than its type.