Class ServerPropertiesManager

java.lang.Object
com.ultikits.ultitools.manager.ServerPropertiesManager

@Internal public class ServerPropertiesManager extends Object
Safe server.properties manager for remote editing via WebSocket. Only exposes a curated whitelist of non-sensitive keys.
  • Field Details

  • Constructor Details

    • ServerPropertiesManager

      public ServerPropertiesManager(File serverRoot)
  • Method Details

    • setWebSocketClient

      public void setWebSocketClient(UltiPanelWebSocketClient client)
    • getSafeProperties

      public Map<String,String> getSafeProperties()
    • setProperty

      public boolean setProperty(String key, String value)
    • writeProperty

      private ServerPropertiesManager.WriteOutcome writeProperty(String key, String value)
      Why this exists next to setProperty(String, String): the boolean is lossy. A false could mean "the key is not on the whitelist", "the running server version has no such key", "there is no server.properties to write to", or "the write itself failed" — four situations with four different fixes, collapsed into one value. The batch path has to tell the caller which one happened, so the real outcome is produced here and setProperty keeps its original contract by narrowing it.
    • describeOutcome

      private static String describeOutcome(ServerPropertiesManager.WriteOutcome outcome)
      One line naming why a single-key write did not happen, or null when it did. Exposed through handleSet(JsonObject)'s response so a panel operator is told the reason, not just success: false.
    • handleServerProperties

      public void handleServerProperties(com.google.gson.JsonObject data)
      Handle WebSocket message for server properties operations.
      Parameters:
      data - the message data
    • handleGet

      private void handleGet()
    • handleSet

      private void handleSet(com.google.gson.JsonObject data)
    • handleSetAll

      private void handleSetAll(com.google.gson.JsonObject data)
    • applySetAll

      public ServerPropertiesManager.SetAllResult applySetAll(com.google.gson.JsonObject values)
      Apply a batch of properties, report it over the socket, and hand the outcome back.

      The return value is the point. handleSetAll does not need it — it only ever builds a message — but update_config with fileName: server_properties routes through here too, and its config_update_response is supposed to distinguish "delivered" from "took effect". Before this returned anything, that path had no way to learn the answer and reported success unconditionally.

      Parameters:
      values - key → value, an explicit JSON null meaning "leave this key alone"
      Returns:
      what happened to each key
    • buildSetAllResponse

      private com.google.gson.JsonObject buildSetAllResponse(ServerPropertiesManager.SetAllResult result)
    • toJsonArray

      private static com.google.gson.JsonArray toJsonArray(List<String> keys)
    • warnIfIncomplete

      private void warnIfIncomplete(ServerPropertiesManager.SetAllResult result)
      The response above is what the panel reads; this is what a server operator reads. Both are needed: someone changing a setting that silently does not apply otherwise finds nothing on either side.
    • sendResponse

      private void sendResponse(com.google.gson.JsonObject response)