Class JsonUtilHttpService

java.lang.Object
jmri.server.json.JsonHttpService
jmri.server.json.util.JsonUtilHttpService

  • Constructor Details

    • JsonUtilHttpService

      public JsonUtilHttpService(com.fasterxml.jackson.databind.ObjectMapper mapper)
  • Method Details

    • doGet

      public com.fasterxml.jackson.databind.JsonNode doGet(String type, @CheckForNull String name, com.fasterxml.jackson.databind.JsonNode data, JsonRequest request) throws JsonException
      Description copied from class: JsonHttpService
      Respond to an HTTP GET request for the requested name.

      If name is null, return a list of all objects for the given type, if appropriate.

      This method should throw a 500 Internal Server Error if type is not recognized.

      Specified by:
      doGet in class JsonHttpService
      Parameters:
      type - the type of the requested object
      name - the system name of the requested object
      data - JSON data set of attributes of the requested object
      request - the JSON request
      Returns:
      a JSON description of the requested object
      Throws:
      JsonException - if the named object does not exist or other error occurs
    • doGetList

      public com.fasterxml.jackson.databind.node.ArrayNode doGetList(String type, com.fasterxml.jackson.databind.JsonNode data, JsonRequest request) throws JsonException
      Description copied from class: JsonHttpService
      Respond to an HTTP GET request for a list of items of type.

      This is called by the JsonServlet to handle get requests for a type, but no name. Services that do not have named objects, such as the JsonTimeHttpService should respond to this with a list containing a single JSON object. Services that can't return a list may throw a 400 Bad Request JsonException in this case.

      Specified by:
      doGetList in class JsonHttpService
      Parameters:
      type - the type of the requested list
      data - JSON data set of attributes of the requested objects
      request - the JSON request
      Returns:
      a JSON list or message containing type "list", the list as data, and the passed in id
      Throws:
      JsonException - may be thrown by concrete implementations
    • doPost

      public com.fasterxml.jackson.databind.JsonNode doPost(String type, @CheckForNull String name, com.fasterxml.jackson.databind.JsonNode data, JsonRequest request) throws JsonException
      Description copied from class: JsonHttpService
      Respond to an HTTP POST request for the requested name.

      This method should throw a 400 Invalid Request error if the named object does not exist.

      Specified by:
      doPost in class JsonHttpService
      Parameters:
      type - the type of the requested object
      name - the system name of the requested object
      data - JSON data set of attributes of the requested object to be updated
      request - the JSON request
      Returns:
      a JSON description of the requested object after updates have been applied
      Throws:
      JsonException - if the named object does not exist or other error occurs
    • getVersion

      public com.fasterxml.jackson.databind.JsonNode getVersion() throws JsonException
      Returns:
      JSON map of complete versions and URL part for protocols
      Throws:
      JsonException - if a protocol version is not available
    • getHello

      public com.fasterxml.jackson.databind.JsonNode getHello(int heartbeat, @Nonnull JsonRequest request)
      Send a JSON JSON.HELLO message.
      Parameters:
      heartbeat - seconds in which a client must send a message before its connection is broken
      request - the JSON request
      Returns:
      the JSON hello message
    • getMetadata

      public com.fasterxml.jackson.databind.JsonNode getMetadata(@Nonnull String name, @Nonnull JsonRequest request) throws JsonException
      Get a JSON message with a metadata element from Metadata.
      Parameters:
      name - The metadata element to get
      request - the JSON request
      Returns:
      JSON metadata element
      Throws:
      JsonException - if name is not a recognized metadata element
    • getMetadata

      public com.fasterxml.jackson.databind.JsonNode getMetadata(Locale locale, String name, int id) throws JsonException
      Get a JSON message with a metadata element from Metadata.
      Parameters:
      locale - The client's Locale.
      name - The metadata element to get.
      id - message id set by client
      Returns:
      JSON metadata element.
      Throws:
      JsonException - if name is not a recognized metadata element.
    • getMetadata

      public com.fasterxml.jackson.databind.node.ArrayNode getMetadata(@Nonnull JsonRequest request) throws JsonException
      Get a JSON array of metadata elements as listed by Metadata.getSystemNameList().
      Parameters:
      request - the JSON request
      Returns:
      Array of JSON metadata elements
      Throws:
      JsonException - if thrown by getMetadata(java.util.Locale, java.lang.String, int)
    • getNetworkService

      public com.fasterxml.jackson.databind.JsonNode getNetworkService(@Nonnull String name, @Nonnull JsonRequest request) throws JsonException
      Get a running ZeroConfService using the protocol as the name of the service.
      Parameters:
      name - the service protocol
      request - the JSON request
      Returns:
      the JSON networkService message
      Throws:
      JsonException - if type is not a running zeroconf networking protocol
    • getNetworkServices

      public com.fasterxml.jackson.databind.node.ArrayNode getNetworkServices(@Nonnull JsonRequest request)
      Parameters:
      request - the JSON request
      Returns:
      the JSON networkServices message.
    • getNetworkServices

      public com.fasterxml.jackson.databind.node.ArrayNode getNetworkServices(Locale locale, int id)
      Parameters:
      locale - the client's Locale.
      id - message id set by client
      Returns:
      the JSON networkServices message.
    • getNode

      public com.fasterxml.jackson.databind.JsonNode getNode(JsonRequest request)
      Send a JSON JSON.NODE message containing the JMRI node identity and former identities.
      Parameters:
      request - the JSON request
      Returns:
      the JSON node message
      See Also:
    • getPanel

      public com.fasterxml.jackson.databind.JsonNode getPanel(Locale locale, String name, int id) throws JsonException
      return a JSON JSON.NODE message containing the requested panel details
      Parameters:
      locale - the client's Locale
      name - panel name to return
      id - message id set by client
      Returns:
      the JSON panel message.
      Throws:
      JsonException - if panel not found
    • getPanel

      public com.fasterxml.jackson.databind.node.ObjectNode getPanel(Editor editor, String format, int id)
    • getPanels

      public com.fasterxml.jackson.databind.node.ArrayNode getPanels(String format, int id)
    • getPanels

      public com.fasterxml.jackson.databind.node.ArrayNode getPanels(int id)
    • getRailroad

      public com.fasterxml.jackson.databind.JsonNode getRailroad(@Nonnull JsonRequest request)
      return a JSON JSON.NODE message containing the Railroad from the Railroad Name preferences.
      Parameters:
      request - the JSON request
      Returns:
      the JSON railroad name message
    • getSystemConnection

      public com.fasterxml.jackson.databind.JsonNode getSystemConnection(String name, JsonRequest request) throws JsonException
      return a JSON JSON.NODE message containing the requested systemConnection details
      Parameters:
      name - system connection name to return
      request - the JSON request
      Returns:
      the JSON systemConnections message
      Throws:
      JsonException - if systemConnection not found
    • getSystemConnections

      public com.fasterxml.jackson.databind.node.ArrayNode getSystemConnections(@Nonnull JsonRequest request)
      return a JSON array containing the defined system connections
      Parameters:
      request - the JSON request
      Returns:
      the JSON systemConnections message.
    • getConfigProfile

      public com.fasterxml.jackson.databind.JsonNode getConfigProfile(@Nonnull String name, @Nonnull JsonRequest request) throws JsonException
      Get the named configuration profile.
      Parameters:
      name - the Profile name
      request - the JSON request
      Returns:
      the JSON configProfiles message
      Throws:
      JsonException - if the requested configProfile is not found
    • getConfigProfiles

      public com.fasterxml.jackson.databind.node.ArrayNode getConfigProfiles(@Nonnull JsonRequest request)
      Get a JSON array of all configuration profiles.
      Parameters:
      request - the JSON request
      Returns:
      the JSON configProfiles message
    • addressForString

      public static DccLocoAddress addressForString(String address)
      Gets the DccLocoAddress for a String in the form number(type) or number.

      Type may be L for long or S for short. If the type is not specified, type is assumed to be short.

      Parameters:
      address - the address
      Returns:
      The DccLocoAddress for address
    • doSchema

      public com.fasterxml.jackson.databind.JsonNode doSchema(String type, boolean server, JsonRequest request) throws JsonException
      Description copied from class: JsonHttpService
      Get the JSON Schema for the data property of the requested type of JSON object. It is a invalid for implementations to not return a valid schema that clients can use to validate a request to or response from the JSON services.

      Note that a schema must be contained in a standard object as:

      {"type":"schema", "data":{"schema":<em>schema</em>, "server":boolean}}

      If using JsonHttpService.doSchema(String, boolean, String, String, int), an implementation can be as simple as: return doSchema(type, server, "path/to/client/schema.json", "path/to/server/schema.json", id);

      Specified by:
      doSchema in class JsonHttpService
      Parameters:
      type - the type for which a schema is requested
      server - true if the schema is for a message from the server; false if the schema is for a message from the client
      request - the JSON request
      Returns:
      a JSON Schema valid for the type
      Throws:
      JsonException - if an error occurs preparing schema; if type is is not a type handled by this service, this must be thrown with an error code of 500 and the localized message ERROR_UNKNOWN_TYPE