Class ManagedResource

java.lang.Object
org.apache.solr.rest.ManagedResource
Direct Known Subclasses:
ManagedSynonymGraphFilterFactory.SynonymManager, ManagedWordSetResource

public abstract class ManagedResource extends Object
Supports Solr components that have external data that needs to be managed using the REST API.
  • Field Details

  • Constructor Details

    • ManagedResource

      protected ManagedResource(String resourceId, SolrResourceLoader loader, ManagedResourceStorage.StorageIO storageIO) throws org.apache.solr.common.SolrException
      Initializes this managed resource, including setting up JSON-based storage using the provided storageIO implementation, such as ZK.
      Throws:
      org.apache.solr.common.SolrException
  • Method Details

    • loadManagedDataAndNotify

      public void loadManagedDataAndNotify(Collection<ManagedResourceObserver> observers) throws org.apache.solr.common.SolrException
      Called once during core initialization to get the managed data loaded from storage and notify observers.
      Throws:
      org.apache.solr.common.SolrException
    • notifyObserversDuringInit

      protected void notifyObserversDuringInit(org.apache.solr.common.util.NamedList<?> args, Collection<ManagedResourceObserver> observers) throws org.apache.solr.common.SolrException
      Notifies all registered observers that the ManagedResource is initialized. This event only occurs once when the core is loaded. Thus, you need to reload the core to get updates applied to the analysis components that depend on the ManagedResource data.
      Throws:
      org.apache.solr.common.SolrException
    • createStorage

      protected ManagedResourceStorage createStorage(ManagedResourceStorage.StorageIO storageIO, SolrResourceLoader loader) throws org.apache.solr.common.SolrException
      Potential extension point allowing concrete implementations to supply their own storage implementation. The default implementation uses JSON as the storage format and delegates the loading and saving of JSON bytes to the supplied StorageIO class.
      Throws:
      org.apache.solr.common.SolrException
    • getResourceLoader

      public SolrResourceLoader getResourceLoader()
      Returns the resource loader used by this resource.
    • getResourceId

      public String getResourceId()
      Gets the resource ID for this managed resource.
    • getServerResourceClass

      public Class<? extends BaseSolrResource> getServerResourceClass()
      Gets the ServerResource class to register this endpoint with the Rest API router; in most cases, the default RestManager.ManagedEndpoint class is sufficient but ManagedResource implementations can override this method if a different ServerResource class is needed.
    • updateInitArgs

      protected boolean updateInitArgs(org.apache.solr.common.util.NamedList<?> updatedArgs)
      Called from doPut(BaseSolrResource,Object) to update this resource's init args using the given updatedArgs
    • reloadFromStorage

      protected void reloadFromStorage() throws org.apache.solr.common.SolrException
      Invoked when this object determines it needs to reload the stored data.
      Throws:
      org.apache.solr.common.SolrException
    • processStoredData

      protected Object processStoredData(Object data) throws org.apache.solr.common.SolrException
      Processes the stored data.
      Throws:
      org.apache.solr.common.SolrException
    • onManagedDataLoadedFromStorage

      protected abstract void onManagedDataLoadedFromStorage(org.apache.solr.common.util.NamedList<?> managedInitArgs, Object managedData) throws org.apache.solr.common.SolrException
      Method called after data has been loaded from storage to give the concrete implementation a chance to post-process the data.
      Throws:
      org.apache.solr.common.SolrException
    • storeManagedData

      public void storeManagedData(Object managedData)
      Persists managed data to the configured storage IO as a JSON object.
    • getInitializedOn

      public String getInitializedOn()
      Returns this resource's initialization timestamp.
    • getUpdatedSinceInitialization

      public String getUpdatedSinceInitialization()
      Returns the timestamp of the most recent update, or null if this resource has not been updated since initialization.
    • hasChangesSinceInitialization

      public boolean hasChangesSinceInitialization()
      Returns true if this resource has been changed since initialization.
    • buildMapToStore

      protected Map<String,Object> buildMapToStore(Object managedData)
      Builds the JSON object to be stored, containing initArgs and managed data fields.
    • convertNamedListToMap

      protected Map<String,Object> convertNamedListToMap(org.apache.solr.common.util.NamedList<?> args)
      Converts a NamedList<?> into an ordered Map for returning as JSON.
    • doPost

      public void doPost(BaseSolrResource endpoint, Object json)
      Just calls doPut(BaseSolrResource,Object); override to change the behavior of POST handling.
    • doPut

      public void doPut(BaseSolrResource endpoint, Object json)
      Applies changes to initArgs or managed data.
    • onResourceDeleted

      public void onResourceDeleted() throws IOException
      Called by the RestManager framework after this resource has been deleted to allow this resource to close and clean-up any resources used by this.
      Throws:
      IOException - if an error occurs in the underlying storage when trying to delete
    • applyUpdatesToManagedData

      protected abstract Object applyUpdatesToManagedData(Object updates)
      Called during PUT/POST processing to apply updates to the managed data passed from the client.
    • doDeleteChild

      public abstract void doDeleteChild(BaseSolrResource endpoint, String childId)
      Called to delete a named part (the given childId) of the resource at the given endpoint
    • doGet

      public abstract void doGet(BaseSolrResource endpoint, String childId)
      Called to retrieve a named part (the given childId) of the resource at the given endpoint