Class ManagedResource

    • Constructor Detail

      • 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 Detail

      • 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.
      • 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