Class JerseyResource

java.lang.Object
org.apache.solr.api.JerseyResource
Direct Known Subclasses:
AdminAPIBase, ClusterFileStore, ConfigSetAPIBase, CoreAdminAPIBase, GetPublicKey, GetSchema, GetSchemaField, GetSegmentData, ListConfigSets, NodeLogging, ReplicationAPIBase, SnapshotBackupAPI, UpdateSchema

public class JerseyResource extends Object
A marker parent type for all Jersey "resource" classes.

"Resources" in Jersey are classes that define one or more API endpoints. As such they're analogous to the v1 SolrRequestHandler or the v2 Api.

  • Field Details

    • containerRequestContext

      @Context public jakarta.ws.rs.container.ContainerRequestContext containerRequestContext
  • Constructor Details

    • JerseyResource

      public JerseyResource()
  • Method Details

    • instantiateJerseyResponse

      protected <T extends SolrJerseyResponse> T instantiateJerseyResponse(Class<T> clazz)
      Create an instance of the SolrJerseyResponse subclass; registering it with the Jersey request-context upon creation.

      This utility method primarily exists to allow Jersey resources to return error responses that match those returned by Solr's v1 APIs.

      When a severe-enough exception halts a v1 request, Solr generates a summary of the error and attaches it to the SolrQueryResponse given to the request handler. This SolrQueryResponse may already hold some portion of the normal "success" response for that API.

      The JAX-RS framework isn't well suited to mimicking responses of this sort, as the "response" from a Jersey resource is its return value (instead of a mutable method parameter that gets modified). This utility works around this limitation by attaching the eventual return value of a JerseyResource to the context associated with the Jersey request, as soon as its created. This allows partially-constructed responses to be accessed later in the case of an exception.

      In order to instantiate arbitrary SolrJerseyResponse subclasses, this utility uses reflection to find and invoke the first (no-arg) constructor for the specified type. SolrJerseyResponse subclasses without a no-arg constructor can be instantiated and registered using instantiateJerseyResponse(Supplier)

      Parameters:
      clazz - the SolrJerseyResponse class to instantiate and register
      See Also:
    • instantiateJerseyResponse

      protected <T extends SolrJerseyResponse> T instantiateJerseyResponse(Supplier<T> instantiator)
      Create an instance of the SolrJerseyResponse subclass; registering it with the Jersey request-context upon creation.

      This utility method primarily exists to allow Jersey resources to return responses, especially error responses, that match some of the particulars of Solr's traditional/v1 APIs. See the companion method instantiateJerseyResponse(Class) for more details.

      Parameters:
      instantiator - a lambda to create the desired SolrJerseyResponse
      See Also:
    • ensureRequiredParameterProvided

      protected void ensureRequiredParameterProvided(String parameterName, Object parameterValue)
    • ensureRequiredRequestBodyProvided

      protected void ensureRequiredRequestBodyProvided(Object requestBody)