Uses of Class
com.ultikits.ultitools.abstracts.UltiToolsPlugin
Packages that use UltiToolsPlugin
Package
Description
Module-extensible conversion between Java values and the configuration plain-data model.
UltiPanel WebSocket client internals, and the three stable extension points modules use.
-
Uses of UltiToolsPlugin in com.ultikits.ultitools
Method parameters in com.ultikits.ultitools with type arguments of type UltiToolsPluginModifier and TypeMethodDescription(package private) static voidUltiTools.loadModulesThenObserve(ModuleFileTransactions transactions, UltiTools.ModuleLoad load, Supplier<List<UltiToolsPlugin>> loaded) Loads the modules, then decides every update applied at this start from what loaded (#505). -
Uses of UltiToolsPlugin in com.ultikits.ultitools.abstracts
Fields in com.ultikits.ultitools.abstracts declared as UltiToolsPluginMethods in com.ultikits.ultitools.abstracts with parameters of type UltiToolsPluginModifier and TypeMethodDescriptionfinal voidAbstractConfigEntity.init(UltiToolsPlugin ultiToolsPlugin) Initializes the configuration entity.final voidAbstractConfigEntity.initForBatch(UltiToolsPlugin plugin) Framework manager bridge; binds without flushing initialization writes.private voidAbstractConfigEntity.initialize(UltiToolsPlugin ultiToolsPlugin, boolean deferred) booleanUltiToolsPlugin.isNewerVersionThan(UltiToolsPlugin plugin) -
Uses of UltiToolsPlugin in com.ultikits.ultitools.commands
Methods in com.ultikits.ultitools.commands with parameters of type UltiToolsPluginModifier and TypeMethodDescription(package private) static booleanPluginInstallCommands.isSameModule(UltiToolsPlugin installedPlugin, PluginEntity catalogueEntry) Decides whetherinstalledPlugin(a currently loaded module) andcatalogueEntry(a directory entry from the UltiCloud catalogue) refer to the SAME module (#439).Method parameters in com.ultikits.ultitools.commands with type arguments of type UltiToolsPluginModifier and TypeMethodDescription(package private) static StringPluginInstallCommands.resolveInstalledRuntimeName(List<UltiToolsPlugin> installedPlugins, PluginEntity catalogueEntry) Resolves the runtime name to use for the/upm uninstallclick command inPluginInstallCommands.listPlugins(CommandSender, String)'s player branch: the LOADED module's owngetPluginName(), not the catalogue entry's display name (gate-2 Codex round 1). -
Uses of UltiToolsPlugin in com.ultikits.ultitools.commands.tabcomplete
Fields in com.ultikits.ultitools.commands.tabcomplete declared as UltiToolsPluginModifier and TypeFieldDescriptionprivate final UltiToolsPluginTabCompletionManager.Registration.ownerInstanceFields in com.ultikits.ultitools.commands.tabcomplete with type parameters of type UltiToolsPluginModifier and TypeFieldDescriptionprivate final ThreadLocal<UltiToolsPlugin> TabCompletionManager.currentOwnerInstanceThe module instance attributed to registrations in the current scope, if the scope names one (#506).Methods in com.ultikits.ultitools.commands.tabcomplete with parameters of type UltiToolsPluginModifier and TypeMethodDescriptionvoidTabCompletionManager.beginRegistrationScope(String owner, UltiToolsPlugin ownerInstance) Same asTabCompletionManager.beginRegistrationScope(String), and additionally attributes every key registered in the scope toownerInstance, soTabCompletionManager.unregisterByOwnerInstance(UltiToolsPlugin)can release exactly that module instance's completers (#506).TabCompletionManager.releaseForSupersede(UltiToolsPlugin ownerInstance) Releases every completer key registered in a scope that namedownerInstanceand returns the action that gives them back (#562).intTabCompletionManager.unregisterByOwnerInstance(UltiToolsPlugin ownerInstance) Unregisters every completer key registered in a scope that namedownerInstance(#506), whatever name the scope carried.Constructors in com.ultikits.ultitools.commands.tabcomplete with parameters of type UltiToolsPluginModifierConstructorDescriptionprivateRegistration(TabCompleter completer, String owner, UltiToolsPlugin ownerInstance) -
Uses of UltiToolsPlugin in com.ultikits.ultitools.config.convert
Fields in com.ultikits.ultitools.config.convert with type parameters of type UltiToolsPluginModifier and TypeFieldDescriptionprivate static final Map<UltiToolsPlugin, ConverterRegistry.Prepared> ConverterRegistry.MODULESMethods in com.ultikits.ultitools.config.convert with parameters of type UltiToolsPluginModifier and TypeMethodDescriptionstatic ConverterRegistryConverterRegistry.forModule(UltiToolsPlugin plugin) static booleanConverterRegistry.hasModule(UltiToolsPlugin plugin) static ConverterRegistryConverterRegistry.prepareModule(UltiToolsPlugin plugin, String[] packages, ClassLoader loader) Discovers all converters before publishing the registry, without selecting config entities.ConverterRegistry.prepareSelectedConfigs(UltiToolsPlugin plugin, String[] packages, ClassLoader loader) Checks exactly the requested auto-registration batch before any entity is constructed. -
Uses of UltiToolsPlugin in com.ultikits.ultitools.context
Fields in com.ultikits.ultitools.context with type parameters of type UltiToolsPluginModifier and TypeFieldDescriptionprivate static final Map<UltiToolsPlugin, Map<Class<?>, Boolean>> ConditionalRegistrationEvaluator.STARTUP_DECISIONSEvery scan-time@ConditionalOnConfigdecision, keyed by owning plugin instance (identity) then by the evaluated class.Methods in com.ultikits.ultitools.context with parameters of type UltiToolsPluginModifier and TypeMethodDescriptionstatic voidConditionalRegistrationEvaluator.clear(UltiToolsPlugin plugin) Release every decision recorded forplugin.private static booleanConditionalRegistrationEvaluator.evaluate(UltiToolsPlugin plugin, ConditionalOnConfig condition) The decision logic extracted from the pre-6.3.0shouldRegisterbody; since #612 the value is read with the framework's document reader (ConditionalRegistrationEvaluator.readBoolean(java.io.File, com.ultikits.ultitools.annotations.ConditionalOnConfig)).private static voidConditionalRegistrationEvaluator.record(UltiToolsPlugin plugin, Class<?> clazz, boolean decision) ConditionalRegistrationEvaluator.reportDrift(UltiToolsPlugin plugin) Re-evaluate every@ConditionalOnConfigdecision recorded forpluginand log (and return) oneLevel.WARNINGmessage for each class whose answer has changed since it was recorded (issue #392, D-01). -
Uses of UltiToolsPlugin in com.ultikits.ultitools.entities
Fields in com.ultikits.ultitools.entities declared as UltiToolsPluginModifier and TypeFieldDescriptionprivate final UltiToolsPluginHandlerEntry.ownerInstanceThe module instance that registered this handler, ornullwhen the registration named only a module name (#506).Constructors in com.ultikits.ultitools.entities with parameters of type UltiToolsPluginModifierConstructorDescriptionHandlerEntry(Class<? extends ModuleEvent> eventType, EventPriority priority, boolean ignoreCancelled, String ownerModule, UltiToolsPlugin ownerInstance, Method method, Object instance) Constructor for annotation-based handlers that records the registering module instance (#506).HandlerEntry(Class<? extends ModuleEvent> eventType, EventPriority priority, boolean ignoreCancelled, String ownerModule, UltiToolsPlugin ownerInstance, Consumer<? extends ModuleEvent> consumer) Constructor for programmatic handlers that records the registering module instance (#506). -
Uses of UltiToolsPlugin in com.ultikits.ultitools.events
Fields in com.ultikits.ultitools.events with type parameters of type UltiToolsPluginModifier and TypeFieldDescriptionprivate final ThreadLocal<UltiToolsPlugin> EventBus.registrationScopeOwnerThe module instance the framework is loading on this thread, if any (#506): set byEventBus.beginRegistrationScope(UltiToolsPlugin)while a module's container refreshes and itsregisterSelf()runs, and recorded on every handler registered meanwhile without an explicit owner instance.Methods in com.ultikits.ultitools.events that return UltiToolsPluginModifier and TypeMethodDescriptionprivate UltiToolsPluginEventBus.ownerInstanceOrScope(UltiToolsPlugin ownerInstance, String ownerModule) The module instance a registration is recorded against: the one it names; otherwise the module the framework is loading on this thread; otherwise the copy listed as loaded underownerModule(#562 item 1); otherwise none.Methods in com.ultikits.ultitools.events with parameters of type UltiToolsPluginModifier and TypeMethodDescriptionvoidEventBus.beginRegistrationScope(UltiToolsPlugin owner) Attributes every handler registered on this thread, untilEventBus.endRegistrationScope(), toownerwhen the registration names no owner instance itself (#506).private UltiToolsPluginEventBus.ownerInstanceOrScope(UltiToolsPlugin ownerInstance, String ownerModule) The module instance a registration is recorded against: the one it names; otherwise the module the framework is loading on this thread; otherwise the copy listed as loaded underownerModule(#562 item 1); otherwise none.voidEventBus.register(Class<? extends ModuleEvent> eventType, EventPriority priority, boolean ignoreCancelled, String ownerModule, UltiToolsPlugin ownerInstance, Method method, Object instance) Register an annotation-based handler and record the module instance that owns it (#506).EventBus.releaseForSupersede(UltiToolsPlugin ownerInstance) Releases every handler recorded againstownerInstanceand returns the action that gives them back (#562).<T extends ModuleEvent>
SubscriptionEventBus.subscribe(Class<T> eventType, EventPriority priority, boolean ignoreCancelled, String ownerModule, UltiToolsPlugin ownerInstance, Consumer<T> consumer) Register a programmatic handler and record the module instance that owns it (#506), soEventBus.unregisterByOwnerInstance(UltiToolsPlugin)releases it whatever name it was filed under.voidEventBus.unregisterByOwnerInstance(UltiToolsPlugin ownerInstance) Unregister every handler registered withownerInstanceas its owner (#506), whatever module name it was filed under. -
Uses of UltiToolsPlugin in com.ultikits.ultitools.interfaces
Methods in com.ultikits.ultitools.interfaces with parameters of type UltiToolsPluginModifier and TypeMethodDescriptiondefault voidDataStore.checkOwnership(UltiToolsPlugin plugin, Class<?> dataEntity) Shared ownership check for theDataStore.getOperator(UltiToolsPlugin, Class)legacy overload (D-14/D-18/02-12), the counterpart toDataStore.checkOwnership(java.io.File, Class)above for the overload that already carries aUltiToolsPluginidentity directly rather than aFileto reverse-resolve.<T extends BaseDataEntity<String>>
DataOperator<T> DataStore.getOperator(UltiToolsPlugin plugin, Class<T> dataEntity) Deprecated, for removal: This API element is subject to removal in a future version. -
Uses of UltiToolsPlugin in com.ultikits.ultitools.interfaces.impl.data.json
Methods in com.ultikits.ultitools.interfaces.impl.data.json with parameters of type UltiToolsPluginModifier and TypeMethodDescription<T extends BaseDataEntity<String>>
DataOperator<T> JsonStore.getOperator(UltiToolsPlugin plugin, Class<T> dataEntity) -
Uses of UltiToolsPlugin in com.ultikits.ultitools.interfaces.impl.data.mysql
Methods in com.ultikits.ultitools.interfaces.impl.data.mysql with parameters of type UltiToolsPluginModifier and TypeMethodDescription<T extends BaseDataEntity<String>>
DataOperator<T> MysqlDataStore.getOperator(UltiToolsPlugin plugin, Class<T> dataEntity) -
Uses of UltiToolsPlugin in com.ultikits.ultitools.interfaces.impl.data.sqlite
Methods in com.ultikits.ultitools.interfaces.impl.data.sqlite with parameters of type UltiToolsPluginModifier and TypeMethodDescription<T extends BaseDataEntity<String>>
DataOperator<T> SQLiteDataStore.getOperator(UltiToolsPlugin plugin, Class<T> dataEntity) -
Uses of UltiToolsPlugin in com.ultikits.ultitools.manager
Fields in com.ultikits.ultitools.manager with type parameters of type UltiToolsPluginModifier and TypeFieldDescriptionprivate final Map<UltiToolsPlugin, Map<String, AbstractConfigEntity>> ConfigManager.InitializationBatch.beforeprivate final Map<UltiToolsPlugin, List<TaskManager.BoundTask>> TaskManager.boundTasksConfig-bound tasks, per module, as handles that remember their method, their binding, their current timing and their last run -- the per-method record the three buckets above do not keep.private final Map<UltiToolsPlugin, List<org.bukkit.command.Command>> CommandManager.commandListMapprivate final Map<UltiToolsPlugin, List<org.bukkit.event.Listener>> ListenerManager.listenerListMapprivate final ThreadLocal<Map.Entry<String, Class<? extends UltiToolsPlugin>>> PluginManager.moduleBeingRegisteredThe module being registered on each thread, name and main class (#483); seePluginManager.getModuleBeingRegistered().private final Class<? extends UltiToolsPlugin> PluginDependencyResolver.PluginNode.pluginClassprivate final List<Class<? extends UltiToolsPlugin>> PluginManager.pluginClassListprivate final Map<UltiToolsPlugin, Map<String, AbstractConfigEntity>> ConfigManager.pluginConfigMapprivate final List<UltiToolsPlugin> PluginManager.pluginListThe loaded modules, in load order.private final Map<UltiToolsPlugin, List<org.bukkit.scheduler.BukkitTask>> TaskManager.pluginTasksprivate final List<Class<? extends UltiToolsPlugin>> PluginDependencyResolver.CircularDependencyException.sortedPrefixprivate final List<Class<? extends UltiToolsPlugin>> PluginDependencyResolver.MissingDependencyException.sortedPrefixprivate final Map<UltiToolsPlugin, List<Runnable>> PluginManager.supersedeHandoversIncoming copy -> the actions that give the copies it supersedes back their registrations (#562).Methods in com.ultikits.ultitools.manager that return UltiToolsPluginModifier and TypeMethodDescriptionPluginManager.findRegistrationOwner(String moduleName) The module copy a registration filed undermoduleNameonly belongs to when it is made outside every module's load scope -- for example from a module's scheduled task after it loaded (#562 item 1): the copy listed as loaded under that name; when more than one copy is listed under it, the first listed, the one loaded earliest.private UltiToolsPluginPluginManager.finishInitializingPlugin(ClassLoader classLoader, Class<? extends UltiToolsPlugin> pluginClass, UltiToolsPlugin plugin) Run the construction-independent second half afterinitializePlugincompletes construction: the compatibility gate, then container assembly.CommandManager.getPluginByCommand(org.bukkit.command.Command command) Get the plugin instance by command.private UltiToolsPluginPluginManager.initializePlugin(ClassLoader classLoader, Class<? extends UltiToolsPlugin> pluginClass) Initialize module using its default (zero-argument) constructor.Methods in com.ultikits.ultitools.manager that return types with arguments of type UltiToolsPluginModifier and TypeMethodDescriptionprivate Map.Entry<String, Class<? extends UltiToolsPlugin>> PluginManager.beginRegistration(String name, Class<? extends UltiToolsPlugin> pluginClass) Records the module being registered on this thread (#483) and returns the record it replaces (a registration started from inside another module's registration), forPluginManager.endRegistration(java.util.Map.Entry<java.lang.String, java.lang.Class<? extends com.ultikits.ultitools.abstracts.UltiToolsPlugin>>)to restore.private List<UltiToolsPlugin> PluginManager.copiesSupersededBy(UltiToolsPlugin plugin) The loaded copiespluginsupersedes: same main class, older version.Map.Entry<String, Class<? extends UltiToolsPlugin>> PluginManager.getModuleBeingRegistered()The module being registered on the calling thread, as name and main class, ornull(#483).Class<? extends UltiToolsPlugin> PluginDependencyResolver.PluginNode.getPluginClass()PluginManager.getPluginList()Returns the modules currently loaded, in load order, as an unmodifiable snapshot.List<Class<? extends UltiToolsPlugin>> PluginDependencyResolver.CircularDependencyException.getSortedPrefix()The plugin classes Kahn's sort could still place, in load order.List<Class<? extends UltiToolsPlugin>> PluginDependencyResolver.MissingDependencyException.getSortedPrefix()The plugin classes that survive, in load order: every module neither in thedependsclosure of a module with a missing hard dependency nor blocked by a cycle.private Class<? extends UltiToolsPlugin> PluginManager.loadPluginMainClass(ClassLoader classLoader, File pluginJar) Load module main class.(package private) Set<UltiToolsPlugin> ConfigManager.registeredOwners(Class<?> moduleClass) List<Class<? extends UltiToolsPlugin>> PluginDependencyResolver.resolve(List<Class<? extends UltiToolsPlugin>> pluginClasses) Resolves plugin load order using Kahn's algorithm for topological sorting.private List<Class<? extends UltiToolsPlugin>> PluginManager.sortPluginsByDependencies(List<Class<? extends UltiToolsPlugin>> plugins) Sort plugins by their dependencies using Kahn's algorithm (topological sort).private List<Class<? extends UltiToolsPlugin>> PluginDependencyResolver.toClassList(List<String> names, Map<String, PluginDependencyResolver.PluginNode> nodes) Converts a sorted list of plugin names back to their plugin classes.Methods in com.ultikits.ultitools.manager with parameters of type UltiToolsPluginModifier and TypeMethodDescriptionprivate voidConfigManager.addConfigEntity(UltiToolsPlugin ultiToolsPlugin, AbstractConfigEntity configEntity) voidPluginManager.applyReloadedConfigBindings(UltiToolsPlugin plugin) PluginManager.applyReloadedConfigBindings(UltiToolsPlugin, ReloadReport)with a report nobody reads: the values not applied are only logged.voidPluginManager.applyReloadedConfigBindings(UltiToolsPlugin plugin, ReloadReport report) Applies a module's reloaded configuration to its config-bound@Scheduledtasks and@CmdCDcooldowns (#531).private voidPluginManager.assemblePluginContainer(SimpleContainer pluginContext, UltiToolsPlugin plugin, Class<? extends UltiToolsPlugin> pluginClass, ClassLoader loader) Assemble a plugin's container.private booleanPluginManager.attemptPluginRegistration(UltiToolsPlugin plugin) private voidConfigManager.beginBatch(UltiToolsPlugin plugin) private static voidPluginManager.beginLoadScopes(UltiToolsPlugin plugin) Opens, on this thread, the registration scopes of the three registries a module files registrations in by name -- tab-completion completers, EventBus handlers, panel responders -- so that what the module registers while the framework loads it (its container refresh and itsregisterSelf()) is recorded against this instance (#506; Codex review of #564, round 3).voidTaskManager.cancelAll(UltiToolsPlugin plugin) Cancel all scheduled tasks for a plugin.(package private) static voidConfigBindings.checkApiVersionFloor(UltiToolsPlugin plugin, String firstBinding) Refuses a module that uses a binding while declaring anapi-versionbelowConfigBindings.MIN_API_VERSION.private List<UltiToolsPlugin> PluginManager.copiesSupersededBy(UltiToolsPlugin plugin) The loaded copiespluginsupersedes: same main class, older version.private voidPluginManager.discardSupersededRegistrations(UltiToolsPlugin incoming) incomingactivated: the registrations released from the copies it supersedes stay released, and those copies are unloaded next (#562).private UltiToolsPluginPluginManager.finishInitializingPlugin(ClassLoader classLoader, Class<? extends UltiToolsPlugin> pluginClass, UltiToolsPlugin plugin) Run the construction-independent second half afterinitializePlugincompletes construction: the compatibility gate, then container assembly.(package private) static DataScopeDataScope.forPlugin(UltiToolsPlugin plugin, Set<Class<?>> ownedEntities) Mints a scope for an internalUltiToolsPluginmodule.ConfigManager.getAllConfigEntities(UltiToolsPlugin plugin) Get all config entities for a plugin.<T extends AbstractConfigEntity>
List<T> ConfigManager.getConfigEntities(UltiToolsPlugin plugin, Class<T> type) Get all config entities by type.<T extends AbstractConfigEntity>
TConfigManager.getConfigEntity(UltiToolsPlugin plugin, Class<T> type) Get config entity.<T extends AbstractConfigEntity>
TConfigManager.getConfigEntity(UltiToolsPlugin plugin, String path, Class<T> type) Get config entity by path.(package private) intTaskManager.getTaskCount(UltiToolsPlugin plugin) Get the number of registered tasks for a plugin (for testing).private booleanPluginManager.hasNewerVersionLoaded(UltiToolsPlugin plugin) Determines whether a newer version of the same module is already loaded.(package private) static ConfigurationExceptionConfigBindings.invalidValueAtLoad(UltiToolsPlugin plugin, String owner, ConfigBindings.Source source, Long value, String rule) The load-time refusal for an out-of-range bound value -- the same exception type and the same "file was not modified" contract as a@Rangeviolation.private booleanPluginManager.isNameInUseByAnotherLoadedCopy(UltiToolsPlugin plugin) Whether a loaded module other thanpluginitself carriesplugin's name.private booleanPluginManager.isUltiToolsVersionCompatible(UltiToolsPlugin plugin) private static voidPluginManager.keepRunning(UltiToolsPlugin plugin, ReloadReport report, String bindingKey, Integer before, Map<String, Integer> next, Set<String> reported, String why) ModuleJarIndex.mainClassOf(UltiToolsPlugin module) The main class the loader recorded for a loaded module: the nearest class in its hierarchy that some JAR declares -- the instance may be a subclass of the declared class, as a proxy is.private voidPluginManager.onPluginRegistered(UltiToolsPlugin plugin) private booleanPluginManager.passesCompatibilityGates(UltiToolsPlugin plugin) Compatibility gates that must run before the module's bean graph is built.static booleanConfigManager.permitsConfigThread(UltiToolsPlugin plugin, String operation) Shared refusal guard, checked before any configuration monitor or registry access.private ConverterRegistryConfigManager.prepareConverters(UltiToolsPlugin plugin) private static voidPluginManager.refreshCooldownBindings(UltiToolsPlugin plugin, ReloadReport report) voidConfigManager.refreshFrameworkComments(UltiToolsPlugin plugin) Rewrites the framework comment lines of every configuration ofpluginin the module's current language (#594), throughAbstractConfigEntity.refreshFrameworkComments(): a comment-only write through the config write gate, owning only the comment lines the framework identifies as its own, never a value, a key or another comment line.private static voidPluginManager.refreshOne(UltiToolsPlugin plugin, ReloadReport report, String bindingKey, Supplier<Long> source, Integer before, Map<String, Integer> next, Set<String> reported) Re-reads one bound cooldown intonext: the new value when it is valid, otherwise the running one with one WARNING per binding key -- also when the config's own reload failed.voidCommandManager.register(UltiToolsPlugin plugin, Class<? extends org.bukkit.command.CommandExecutor> clazz) Manually register a command.voidCommandManager.register(UltiToolsPlugin plugin, Class<? extends org.bukkit.command.CommandExecutor> clazz, String permission, String description, String... aliases) Manually register a command.private voidCommandManager.register(UltiToolsPlugin plugin, org.bukkit.command.CommandExecutor commandExecutor) Manually register a command, will not be managed by the container.private voidCommandManager.register(UltiToolsPlugin plugin, org.bukkit.command.CommandExecutor commandExecutor, String permission, String description, String... aliases) Manually register a command, will not be managed by the container.voidConfigManager.register(UltiToolsPlugin ultiToolsPlugin, AbstractConfigEntity configEntity) Register config entity.voidListenerManager.register(UltiToolsPlugin plugin, Class<? extends org.bukkit.event.Listener> listenerClass) Register listener.booleanPluginManager.register(UltiToolsPlugin plugin) voidCommandManager.registerAll(UltiToolsPlugin plugin) Register all classes annotated with @CmdExecutor in the specified package.voidConfigManager.registerAll(UltiToolsPlugin plugin, String[] packageNames, ClassLoader classLoader) Registers every@ConfigEntityclass found across MULTIPLE scan packages for one plugin, as ONE atomic batch (CR-01, #358 Part 1 gate-1 finding).voidConfigManager.registerAll(UltiToolsPlugin plugin, String packageName, ClassLoader classLoader) Register all config entities in the specified package.voidListenerManager.registerAll(UltiToolsPlugin plugin) Register all listeners in the UltiTools plugin class base package.private voidConfigManager.registerAllImmediate(UltiToolsPlugin plugin, String packageName, ClassLoader classLoader) private voidConfigManager.registerAllPackages(UltiToolsPlugin plugin, String[] packageNames, ClassLoader classLoader) private voidPluginManager.registerBukkit(UltiToolsPlugin plugin) Register bukkit commands or listeners.private voidConfigManager.registerImmediate(UltiToolsPlugin ultiToolsPlugin, AbstractConfigEntity configEntity) private booleanPluginManager.registerInstance(UltiToolsPlugin plugin) private voidListenerManager.registerListener(UltiToolsPlugin plugin, org.bukkit.event.Listener listener) Registers an already-constructedlistenerforpluginwith Bukkit and tracks it for laterListenerManager.unregisterAll(com.ultikits.ultitools.abstracts.UltiToolsPlugin).private voidPluginManager.registerModuleEventHandlers(EventBus eventBus, UltiToolsPlugin plugin, Object bean) Scan a bean for @ModuleEventHandler methods and register them with the EventBus.voidTaskManager.registerScheduledMethods(UltiToolsPlugin plugin, Object bean) Scan a bean forScheduledmethods and register them as Bukkit tasks.private static voidPluginManager.releaseCompleters(UltiToolsPlugin plugin, boolean nameStillInUse) Releasesplugin's tab-completion completers: those recorded against the instance, then -- unless another copy of the module shares its name -- those recorded by name only (#506).private static voidPluginManager.releaseConfigEntities(UltiToolsPlugin plugin) private static voidPluginManager.releaseEventHandlers(UltiToolsPlugin plugin, boolean nameStillInUse) Releasesplugin's EventBus handlers, by instance and then, unless another copy of the module shares its name, by name (#506).private static voidPluginManager.releasePanelResponders(UltiToolsPlugin plugin, boolean nameStillInUse) Releasesplugin's panel responders, by instance and then, unless another copy of the module shares its name, by name (#506).private static voidPluginManager.releasePlayerLinkHandler(UltiToolsPlugin plugin) Removes the player-link handlerpluginset, if it is the owner (plan 22-21).private voidPluginManager.releaseSupersededRegistrations(UltiToolsPlugin incoming) Releases every registration recorded against each copyincomingsupersedes -- panel responders, EventBus handlers, tab completers -- beforeincoming's container refresh andregisterSelf()(#562).voidConfigManager.reloadConfigs(UltiToolsPlugin plugin) Reload all configs.private static longTaskManager.reloadedTicks(UltiToolsPlugin plugin, TaskManager.BoundTask handle, ConfigBindings.Source source, long currentTicks, Set<String> warnedKeys, ReloadReport report) private static voidConfigManager.requireConfigThread(UltiToolsPlugin plugin, String operation) voidTaskManager.rescheduleBound(UltiToolsPlugin plugin) Appliesplugin's reloaded configuration to its config-boundScheduledtasks.voidTaskManager.rescheduleBound(UltiToolsPlugin plugin, ReloadReport report) TaskManager.rescheduleBound(UltiToolsPlugin), also recording inreportone partial reason per bound value kept in place of a refused one (#595), so the module's reload is not reported as complete while a task kept its old timing.private voidTaskManager.rescheduleOne(UltiToolsPlugin plugin, TaskManager.BoundTask handle, ReloadReport report) (package private) static ConfigBindings.SourceConfigBindings.resolve(UltiToolsPlugin plugin, String owner, Class<? extends AbstractConfigEntity> configClass, String key) Resolveskeyon the single config entity ofconfigClassregistered forplugin.(package private) static TaskManager.BoundTaskTaskManager.BoundTask.resolveAtLoad(UltiToolsPlugin module, Object bean, Class<?> targetClass, Method method, Scheduled scheduled) Resolves and range-checks a bound method at load.private static voidPluginManager.resolveCooldownBindings(UltiToolsPlugin plugin, BaseCommandExecutor executor, Map<String, Integer> resolved, Map<String, Supplier<Long>> sources) Resolves every bound@CmdCDofexecutoronce, at load: shape, key, field, and range (an out-of-range value refuses the module).private voidPluginManager.restoreSupersededRegistrations(UltiToolsPlugin incoming) incomingfailed to load: first releases every registration recorded againstincomingitself in the three registries -- what it registered during its container refresh andregisterSelf()must not stay behind, answering from its closed container -- then, when it was superseding loaded copies, gives them back the registrations released before its container refresh (#562).private voidConfigManager.rollBackRegisteredEntities(UltiToolsPlugin ultiToolsPlugin, Map<String, AbstractConfigEntity> entitiesToRestore) RestoresultiToolsPlugin's entry inConfigManager.pluginConfigMapto exactlyentitiesToRestore- not just the same key set, but the same path-to-entity VALUES, so a path this call replaced with a different entity before failing is restored to the entity that was actually there before the call started (seeConfigManager.snapshotRegisteredEntities(com.ultikits.ultitools.abstracts.UltiToolsPlugin)'s javadoc for why key-only retention was insufficient).private static voidPluginManager.runReloadHalf(UltiToolsPlugin plugin, String what, ReloadReport report, Runnable half) private static voidPluginManager.runUnregisterStep(UltiToolsPlugin plugin, String stepDescription, Runnable step) Runs onePluginManager.unregister(UltiToolsPlugin)best-effort registry-cleanup step in isolation: a throw fromstepis logged viaPluginManager.logPluginUnregistrationFailure(String, Throwable), not rethrown, so it can neither skip nor mask any ofunregister's other steps (Codex review on #457, across four rounds on the same method: listener cleanup surviving command-cleanup failure, the context close surviving the unload hook throwing, mandatory cleanup surviving an early registry failure, and finally every registry step surviving every other one).(package private) voidConfigManager.saveForShutdown(UltiToolsPlugin plugin) private voidTaskManager.scanAndSchedule(UltiToolsPlugin module, Object bean, Consumer<org.bukkit.scheduler.BukkitTask> recorder) Scan one bean forScheduledmethods and schedule each valid one, recording each task in its owning bucket as soon as it is created rather than batching them into a list returned at the end.private voidTaskManager.scheduleBound(UltiToolsPlugin module, Object bean, Class<?> targetClass, Method method, Scheduled scheduled) Schedules one config-boundScheduledmethod from its resolved binding and records its handle inTaskManager.boundTasksimmediately (#410).private voidPluginManager.setPluginStaticInstance(Class<? extends UltiToolsPlugin> pluginClass, UltiToolsPlugin plugin) Set the static instance field on a plugin class before @PostConstruct runs.private Map<String, AbstractConfigEntity> ConfigManager.snapshotRegisteredEntities(UltiToolsPlugin ultiToolsPlugin) Snapshots the complete config-file-path-to-entity mappingultiToolsPluginalready holds inConfigManager.pluginConfigMap, before a caller is about to register a batch of entities in one call.private static longTaskManager.BoundTask.ticksAtLoad(UltiToolsPlugin module, String owner, ConfigBindings.Source source) voidPluginManager.unregister(UltiToolsPlugin plugin) Unloads a module: releases everything the framework registered for it, runs its unload hook throughunregisterSelf(), closes its container and removes it from the loaded modules.private voidPluginManager.unregister(UltiToolsPlugin plugin, boolean nameStillInUse, boolean reportUnsaved) The body ofPluginManager.unregister(UltiToolsPlugin).voidCommandManager.unregisterAll(UltiToolsPlugin plugin) Unregisters every command this framework registered forplugin, using the actual registeredCommandinstances tracked inCommandManager.commandListMap(seeCommandManager.register(UltiToolsPlugin, CommandExecutor, String, String, String...)) -- not a name-based relookup, which could mis-resolve a different module's command if two modules share a primary alias under this framework's shared fallback prefix.voidConfigManager.unregisterAll(UltiToolsPlugin plugin) Releases one module's configuration entities after unload.voidListenerManager.unregisterAll(UltiToolsPlugin plugin) Unregisters from Bukkit every listener this framework registered forplugin, then stops trackingplugin: once its listeners are released, this manager no longer references the module or its listener objects, so an unloaded module is not kept reachable by it.private voidPluginManager.unregisterSupersededVersions(UltiToolsPlugin plugin) Unloads the old version this load supersedes, through the fullPluginManager.unregister(UltiToolsPlugin)path (#506): its tasks are cancelled, its container closed, its registrations released and it is delisted.ConfigManager.unsavedPaths(UltiToolsPlugin plugin) (package private) static voidPluginManager.validateConfigBindings(UltiToolsPlugin plugin, SimpleContainer pluginContext) Load-time check of a module's config-bound@Scheduledand@CmdCDdeclarations (#531), run right afterPluginManager.validateCommandExecutorContracts(com.ultikits.ultitools.context.SimpleContainer)and before any Bukkit side effect, so a refusal is module-granular in exactly the same way.(package private) static voidTaskManager.validateConfigBindings(UltiToolsPlugin module, Object bean) Load-time check of every config-boundScheduledmethod onbean, over exactly the methodsTaskManager.scanAndSchedule(com.ultikits.ultitools.abstracts.UltiToolsPlugin, java.lang.Object, java.util.function.Consumer<org.bukkit.scheduler.BukkitTask>)would schedule.Method parameters in com.ultikits.ultitools.manager with type arguments of type UltiToolsPluginModifier and TypeMethodDescriptionprivate voidPluginManager.assemblePluginContainer(SimpleContainer pluginContext, UltiToolsPlugin plugin, Class<? extends UltiToolsPlugin> pluginClass, ClassLoader loader) Assemble a plugin's container.private Map.Entry<String, Class<? extends UltiToolsPlugin>> PluginManager.beginRegistration(String name, Class<? extends UltiToolsPlugin> pluginClass) Records the module being registered on this thread (#483) and returns the record it replaces (a registration started from inside another module's registration), forPluginManager.endRegistration(java.util.Map.Entry<java.lang.String, java.lang.Class<? extends com.ultikits.ultitools.abstracts.UltiToolsPlugin>>)to restore.private voidPluginManager.endRegistration(Map.Entry<String, Class<? extends UltiToolsPlugin>> previous) Restores the recordPluginManager.beginRegistration(java.lang.String, java.lang.Class<? extends com.ultikits.ultitools.abstracts.UltiToolsPlugin>)replaced, or clears it; runs in afinally.private UltiToolsPluginPluginManager.finishInitializingPlugin(ClassLoader classLoader, Class<? extends UltiToolsPlugin> pluginClass, UltiToolsPlugin plugin) Run the construction-independent second half afterinitializePlugincompletes construction: the compatibility gate, then container assembly.String[]PluginManager.getPluginScanPackages(Class<? extends UltiToolsPlugin> pluginClass) Get scan packages for a plugin class.private UltiToolsPluginPluginManager.initializePlugin(ClassLoader classLoader, Class<? extends UltiToolsPlugin> pluginClass) Initialize module using its default (zero-argument) constructor.booleanPluginManager.register(Class<? extends UltiToolsPlugin> pluginClass) Register plugin.private booleanPluginManager.registerClass(Class<? extends UltiToolsPlugin> pluginClass) List<Class<? extends UltiToolsPlugin>> PluginDependencyResolver.resolve(List<Class<? extends UltiToolsPlugin>> pluginClasses) Resolves plugin load order using Kahn's algorithm for topological sorting.PluginManager.scanPluginEntities(String pluginName, Class<? extends UltiToolsPlugin> pluginClass) Builds the entity set aDataScopeforpluginshould carry (D-19): every@Tableclass found by scanning the module's own jar, plus anything declared via@UltiToolsModule#additionalEntities()for entities that legitimately live elsewhere.private voidPluginManager.setPluginStaticInstance(Class<? extends UltiToolsPlugin> pluginClass, UltiToolsPlugin plugin) Set the static instance field on a plugin class before @PostConstruct runs.private List<Class<? extends UltiToolsPlugin>> PluginManager.sortPluginsByDependencies(List<Class<? extends UltiToolsPlugin>> plugins) Sort plugins by their dependencies using Kahn's algorithm (topological sort).Constructor parameters in com.ultikits.ultitools.manager with type arguments of type UltiToolsPluginModifierConstructorDescriptionCircularDependencyException(String message, List<Class<? extends UltiToolsPlugin>> sortedPrefix, Set<String> refusedPlugins, List<List<String>> cyclePaths) Constructs a circular-dependency refusal carrying the structured partition.MissingDependencyException(String message, List<Class<? extends UltiToolsPlugin>> sortedPrefix, Set<String> refusedPlugins) Constructs a missing-hard-dependency refusal carrying the structured partition and no cycle paths.MissingDependencyException(String message, List<Class<? extends UltiToolsPlugin>> sortedPrefix, Set<String> refusedPlugins, List<List<String>> cyclePaths) Constructs a missing-hard-dependency refusal that also carries the paths of independent cycles found among the modules the missing dependency did not refuse.PluginNode(Class<? extends UltiToolsPlugin> pluginClass) -
Uses of UltiToolsPlugin in com.ultikits.ultitools.utils
Fields in com.ultikits.ultitools.utils declared as UltiToolsPluginModifier and TypeFieldDescriptionprivate final UltiToolsPluginModuleFileTransactions.Reservation.moduleprivate final UltiToolsPluginRemoteConfigHandler.Registered.moduleprivate final UltiToolsPluginPlayerLinkChannel.Owner.ownerFields in com.ultikits.ultitools.utils with type parameters of type UltiToolsPluginModifier and TypeFieldDescription(package private) static final Function<UltiToolsPlugin, File> PluginInstallUtils.DEFAULT_MODULE_CODE_SOURCEHow the uninstall asks a loaded module which JAR it came from; a test passes its own.private final List<UltiToolsPlugin> PluginInstallUtils.ModuleIdentity.loaded(package private) Supplier<List<UltiToolsPlugin>> CloudFeatures.Bindings.modulesThe loaded modules whose configurationconfig.*serves.private final Supplier<List<UltiToolsPlugin>> RemoteConfigHandler.modulesMethods in com.ultikits.ultitools.utils that return types with arguments of type UltiToolsPluginModifier and TypeMethodDescriptionprivate Map<String, UltiToolsPlugin> RemoteConfigHandler.modulesByName()(package private) static Function<UltiToolsPlugin, String> PluginInstallUtils.recordedMainClass(ModuleJarIndex index) The main class the module loader recorded for a loaded module, read from its start-up index (#516): what staging checks other copies of the module against (maintainer follow-up 19).Methods in com.ultikits.ultitools.utils with parameters of type UltiToolsPluginModifier and TypeMethodDescriptionstatic FileModuleFileTransactions.codeSourceOf(UltiToolsPlugin module) Which file a loaded module was loaded from -- the question the uninstall asks, asked the same way here.PlayerLinkChannel.create(UltiToolsPlugin requester, UUID playerUuid, String playerName, CloudPlayerLinks.GameAuth gameAuth, Set<CloudPlayerLinks.LinkProof> offeredProofs) static String[]DependencyUtils.getPluginPackages(UltiToolsPlugin plugin) Get plugin packages.static StringModuleIds.of(UltiToolsPlugin module) A loaded module's identifier, from its identify-string.private StringRemoteConfigHandler.publishedPath(UltiToolsPlugin module, String configFilePath) The panel's path of one registered configuration file: the file's location relative to the server root, with/separators, as the contract's path primitive requires.private static ModuleFileTransactions.StageResultModuleFileTransactions.refuseSharedOrAmbiguous(UltiToolsPlugin module, File oldJar, String key, String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource, String previousFailure) The refusal when the JAR to replace is not the selected module's alone, ornull: another loaded module came from the same JAR, or another loaded module in another JAR declares the same identify-string.voidPlayerLinkChannel.removeHandler(UltiToolsPlugin owner) voidPlayerLinkChannel.setHandler(UltiToolsPlugin owner, CloudPlayerLinks.LinkEventHandler handler) private static StringModuleFileTransactions.sharedWith(UltiToolsPlugin module, File oldJar, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource) The other loaded modules that came from the same JAR, ornullwhen there are none.Method parameters in com.ultikits.ultitools.utils with type arguments of type UltiToolsPluginModifier and TypeMethodDescription(package private) static voidEconomyUtils.addModuleRoots(Map<String, String> prefixToModule, PluginManager pluginManager, Class<? extends UltiToolsPlugin> pluginClass, String owner) Merges one module's attribution roots intoprefixToModule: every declared scan root (PluginManager.getPluginScanPackages(Class)), plus the module main class's own package as an implicit root (#489) -- a module whose declared roots do not cover its own package used to be unattributable for callers in that package.private static voidPluginInstallUtils.chooseTargets(String requested, List<UltiToolsPlugin> loaded, List<UltiToolsPlugin> others, Map<UltiToolsPlugin, String> declared) Moves the instances the argument names fromothersintoloaded.private static voidPluginInstallUtils.chooseTargets(String requested, List<UltiToolsPlugin> loaded, List<UltiToolsPlugin> others, Map<UltiToolsPlugin, String> declared) Moves the instances the argument names fromothersintoloaded.ModuleFileTransactions.download(ModuleFileTransactions.Record record, File work, String identifyString, ModuleFileTransactions.Reservation reservation, ModuleFileTransactions.Catalogue catalogue, ModuleFileTransactions.Downloader downloader, Function<UltiToolsPlugin, String> mainClassOf) The part of staging that touches the network and the staged file, run outside the lock; only the record write at its end takes the lock again.private booleanModuleFileTransactions.isLoadedFrom(ModuleFileTransactions.Record record, File target, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource) private booleanModuleFileTransactions.isLoadedFrom(ModuleFileTransactions.Record record, File target, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource) ModuleFileTransactions.locate(String key, String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource, String previousFailure) The loaded module to update and the JAR in the modules folder it was loaded from.ModuleFileTransactions.locate(String key, String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource, String previousFailure) The loaded module to update and the JAR in the modules folder it was loaded from.PluginInstallUtils.mainClassesOf(PluginManager pluginManager, List<UltiToolsPlugin> targets, List<UltiToolsPlugin> others) The main classes the module loader recorded for the targets, less every one another loaded module also has (#516) -- the same exclusion the name keys get (gate 1, BL-02).private static StringModuleFileTransactions.mainClassOf(ModuleFileTransactions.Reservation reservation, Function<UltiToolsPlugin, String> recorded) The module's main class: as the module loader recorded it, else as the old JAR's ownplugin.ymldeclares it -- the same entry the loader reads.voidModuleFileTransactions.observeAfterLoad(List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource) Decides every update applied at this start from what loaded: committed when the module is loaded from the new JAR at the new version, rolled back otherwise.voidModuleFileTransactions.observeAfterLoad(List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource) Decides every update applied at this start from what loaded: committed when the module is loaded from the new JAR at the new version, rolled back otherwise.private static voidPluginInstallUtils.readLoadedModules(PluginManager pluginManager, Function<UltiToolsPlugin, File> codeSource, List<UltiToolsPlugin> others, Map<UltiToolsPlugin, File> jars, Map<UltiToolsPlugin, String> declared, AtomicBoolean someUnknown) Reads every loaded module once: which JAR it came from, and what that JAR declares.private static voidPluginInstallUtils.readLoadedModules(PluginManager pluginManager, Function<UltiToolsPlugin, File> codeSource, List<UltiToolsPlugin> others, Map<UltiToolsPlugin, File> jars, Map<UltiToolsPlugin, String> declared, AtomicBoolean someUnknown) Reads every loaded module once: which JAR it came from, and what that JAR declares.private static voidPluginInstallUtils.readLoadedModules(PluginManager pluginManager, Function<UltiToolsPlugin, File> codeSource, List<UltiToolsPlugin> others, Map<UltiToolsPlugin, File> jars, Map<UltiToolsPlugin, String> declared, AtomicBoolean someUnknown) Reads every loaded module once: which JAR it came from, and what that JAR declares.private static PluginInstallUtils.RecordedPluginInstallUtils.recordedOf(PluginManager pluginManager, List<UltiToolsPlugin> targets, List<UltiToolsPlugin> others, Set<String> ownJars) What the loader recorded about the targets (#516) and what they report about themselves, read before they are unloaded.ModuleFileTransactions.refuseBeforeDownload(String identifyString, String link, String targetName, ModuleFileTransactions.Reservation reservation, Function<UltiToolsPlugin, String> mainClassOf) The refusals decided once the new JAR's file name is known, before anything is downloaded or written: no download offered, or another copy of the module that would load instead of the new JAR at the next start (maintainer follow-up 19).private static voidPluginInstallUtils.refuseIfAmbiguous(String requested, List<UltiToolsPlugin> candidates) Refuses when more than one module answers to a declared name.private static ModuleFileTransactions.StageResultModuleFileTransactions.refuseSharedOrAmbiguous(UltiToolsPlugin module, File oldJar, String key, String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource, String previousFailure) The refusal when the JAR to replace is not the selected module's alone, ornull: another loaded module came from the same JAR, or another loaded module in another JAR declares the same identify-string.private static ModuleFileTransactions.StageResultModuleFileTransactions.refuseSharedOrAmbiguous(UltiToolsPlugin module, File oldJar, String key, String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource, String previousFailure) The refusal when the JAR to replace is not the selected module's alone, ornull: another loaded module came from the same JAR, or another loaded module in another JAR declares the same identify-string.ModuleFileTransactions.reserve(ModuleFileTransactions.Record record, File work, String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource) The checks staging makes before it downloads, underModuleFileTransactions.LOCK: no download of this module running, no update already staged, no kept old JAR left without its record.ModuleFileTransactions.reserve(ModuleFileTransactions.Record record, File work, String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource) The checks staging makes before it downloads, underModuleFileTransactions.LOCK: no download of this module running, no update already staged, no kept old JAR left without its record.private static PluginInstallUtils.ModuleIdentityPluginInstallUtils.resolveIdentity(String requested, PluginManager pluginManager, Function<UltiToolsPlugin, File> codeSource) Resolves the operator's argument into the one identity every later decision reads.private static StringModuleFileTransactions.sharedWith(UltiToolsPlugin module, File oldJar, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource) The other loaded modules that came from the same JAR, ornullwhen there are none.private static StringModuleFileTransactions.sharedWith(UltiToolsPlugin module, File oldJar, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource) The other loaded modules that came from the same JAR, ornullwhen there are none.ModuleFileTransactions.stageUpdate(String identifyString, Supplier<List<UltiToolsPlugin>> loaded, Function<UltiToolsPlugin, File> codeSource, ModuleFileTransactions.Catalogue catalogue, ModuleFileTransactions.Downloader downloader, Function<UltiToolsPlugin, String> mainClassOf) Stages an update, asModuleFileTransactions.stageUpdate(String, List, Function, Catalogue, Downloader, Function)does, reading the loaded modules only under the lock that an uninstall's cancellation also takes (Codex round 16, #561).ModuleFileTransactions.stageUpdate(String identifyString, Supplier<List<UltiToolsPlugin>> loaded, Function<UltiToolsPlugin, File> codeSource, ModuleFileTransactions.Catalogue catalogue, ModuleFileTransactions.Downloader downloader, Function<UltiToolsPlugin, String> mainClassOf) Stages an update, asModuleFileTransactions.stageUpdate(String, List, Function, Catalogue, Downloader, Function)does, reading the loaded modules only under the lock that an uninstall's cancellation also takes (Codex round 16, #561).ModuleFileTransactions.stageUpdate(String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource, ModuleFileTransactions.Catalogue catalogue, ModuleFileTransactions.Downloader downloader) Stages an update of a loaded module: downloads its latest version into the transaction folder and records it, leaving the modules folder untouched.ModuleFileTransactions.stageUpdate(String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource, ModuleFileTransactions.Catalogue catalogue, ModuleFileTransactions.Downloader downloader) Stages an update of a loaded module: downloads its latest version into the transaction folder and records it, leaving the modules folder untouched.ModuleFileTransactions.stageUpdate(String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource, ModuleFileTransactions.Catalogue catalogue, ModuleFileTransactions.Downloader downloader, Function<UltiToolsPlugin, String> mainClassOf) Stages an update of a loaded module, asModuleFileTransactions.stageUpdate(String, List, Function, Catalogue, Downloader)does, with the module's main class as the module loader recorded it.ModuleFileTransactions.stageUpdate(String identifyString, List<UltiToolsPlugin> loaded, Function<UltiToolsPlugin, File> codeSource, ModuleFileTransactions.Catalogue catalogue, ModuleFileTransactions.Downloader downloader, Function<UltiToolsPlugin, String> mainClassOf) Stages an update of a loaded module, asModuleFileTransactions.stageUpdate(String, List, Function, Catalogue, Downloader)does, with the module's main class as the module loader recorded it.(package private) static PluginInstallUtils.UninstallReportPluginInstallUtils.uninstallPluginReporting(String name, Function<UltiToolsPlugin, File> codeSource) PluginInstallUtils.uninstallPluginReporting(String)with the code-source resolver to ask, which is how a test substitutes one without production code carrying a writable field (gate 1, IN-02).(package private) static PluginInstallUtils.UninstallReportPluginInstallUtils.uninstallPluginReporting(String name, Function<UltiToolsPlugin, File> codeSource, List<String> cancelledUpdates) PluginInstallUtils.uninstallPluginReporting(String, List)with the code-source resolver to ask.Constructors in com.ultikits.ultitools.utils with parameters of type UltiToolsPluginModifierConstructorDescriptionprivateOwner(UltiToolsPlugin owner, CloudPlayerLinks.LinkEventHandler handler) privateRegistered(UltiToolsPlugin module, AbstractConfigEntity entity, File file) (package private)Reservation(UltiToolsPlugin module, File oldJar, String oldSha256, String previousFailure, ModuleFileTransactions.StageResult refusal) Constructor parameters in com.ultikits.ultitools.utils with type arguments of type UltiToolsPluginModifierConstructorDescriptionprivateModuleIdentity(String requested, List<UltiToolsPlugin> loaded, Set<String> ownJars, Set<String> keys, PluginInstallUtils.Recorded recorded, Set<String> bystanderJars, Map<String, String> bystanderOf, boolean resolvedFromLoadedModule, boolean someCodeSourceUnknown) (package private)RemoteConfigHandler(Supplier<List<UltiToolsPlugin>> modules, ConfigManager configs, Executor configThread) Creates the handler that publishes paths relative to the process working directory, the root the remote file surface already uses.(package private)RemoteConfigHandler(Supplier<List<UltiToolsPlugin>> modules, ConfigManager configs, Executor configThread, File serverRoot) Creates the handler with an explicit server root; tests only, since the panel's paths are the paths a server operator would see under the working directory.(package private)RemoteConfigHandler(Supplier<List<UltiToolsPlugin>> modules, ConfigManager configs, Executor configThread, File serverRoot, Consumer<RemoteActionLog.Entry> actionLog) Creates the handler with an explicit server root and the action log that receives one entry perconfig.updaterequest. -
Uses of UltiToolsPlugin in com.ultikits.ultitools.websocket
Fields in com.ultikits.ultitools.websocket declared as UltiToolsPluginModifier and TypeFieldDescriptionprivate final UltiToolsPluginPanelResponderRegistry.Invocation.admittingScopeThis registry's registration scope on the admitting thread, possiblynull.private final UltiToolsPluginPanelResponderRegistry.ResponderEntry.ownerInstanceFields in com.ultikits.ultitools.websocket with type parameters of type UltiToolsPluginModifier and TypeFieldDescriptionprivate final ThreadLocal<UltiToolsPlugin> PanelResponderRegistry.registrationScopeOwnerThe module instance the framework is loading on this thread, if any (#506): set byPanelResponderRegistry.beginRegistrationScope(UltiToolsPlugin)while a module's container refreshes and itsregisterSelf()runs, and recorded on every responder registered meanwhile without an explicit owner instance.Methods in com.ultikits.ultitools.websocket that return UltiToolsPluginModifier and TypeMethodDescriptionprivate static UltiToolsPluginPanelResponderRegistry.listedCopyNamed(String moduleName) The copy listed as loaded undermoduleName, which a registration made by name outside every load scope belongs to (#562 item 1);nullbefore the framework is running.Methods in com.ultikits.ultitools.websocket with parameters of type UltiToolsPluginModifier and TypeMethodDescriptionvoidPanelResponderRegistry.beginRegistrationScope(UltiToolsPlugin owner) Attributes every responder registered on this thread, untilPanelResponderRegistry.endRegistrationScope(), toownerwhen the registration names no owner instance itself (#506).CloudPlayerLinks.create(UltiToolsPlugin requester, UUID playerUuid, String playerName, CloudPlayerLinks.GameAuth gameAuth, Set<CloudPlayerLinks.LinkProof> offeredProofs) Asks the gateway for a one-time link for one player, without blocking.CloudPlayerLinks.Transport.create(UltiToolsPlugin requester, UUID playerUuid, String playerName, CloudPlayerLinks.GameAuth gameAuth, Set<CloudPlayerLinks.LinkProof> offeredProofs) Sends oneplayer.link.createand tracks its answer.private voidPanelResponderRegistry.Invocation.installScope(UltiToolsPlugin scope) Sets this registry's registration scope on the current thread;nullremoves it.voidPanelResponderRegistry.registerResponder(String messageType, Function<com.google.gson.JsonObject, ? extends CompletableFuture<? extends com.google.gson.JsonElement>> responder, String ownerModule, UltiToolsPlugin ownerInstance) Same asPanelResponderRegistry.registerResponder(String, Function, String), and additionally records the module instance that owns the responder (#506), soPanelResponderRegistry.unregisterByOwnerInstance(UltiToolsPlugin)releases exactly that instance's responders whatever name they were filed under.PanelResponderRegistry.releaseForSupersede(UltiToolsPlugin ownerInstance) Releases every responder recorded againstownerInstanceand returns the action that gives them back (#562).voidCloudPlayerLinks.removeHandler(UltiToolsPlugin owner) Removes the handler whenowneris the module that set it; other owners are ignored.voidCloudPlayerLinks.Transport.removeHandler(UltiToolsPlugin owner) Removes the handler ifownerset it.voidCloudPlayerLinks.setHandler(UltiToolsPlugin owner, CloudPlayerLinks.LinkEventHandler handler) Registers the handler for completions and expiries of this server's links.voidCloudPlayerLinks.Transport.setHandler(UltiToolsPlugin owner, CloudPlayerLinks.LinkEventHandler handler) Installs the single-owner handler.voidPanelResponderRegistry.unregisterByOwnerInstance(UltiToolsPlugin ownerInstance) Removes every responder registered withownerInstanceas its owner (#506), whatever module name it was filed under.Constructors in com.ultikits.ultitools.websocket with parameters of type UltiToolsPluginModifierConstructorDescriptionprivateResponderEntry(Function<com.google.gson.JsonObject, ? extends CompletableFuture<? extends com.google.gson.JsonElement>> responder, String ownerModule, UltiToolsPlugin ownerInstance)
DataStoreimplementation that overrides this method directly must callDataStore.checkOwnership(UltiToolsPlugin, Class)as its own first statement to get the refusal; the three backends shipped by this framework all do (02-12).