Package org.apache.solr.rest
Class ManagedResource
java.lang.Object
org.apache.solr.rest.ManagedResource
- Direct Known Subclasses:
ManagedSynonymGraphFilterFactory.SynonymManager,ManagedWordSetResource
Supports Solr components that have external data that needs to be managed using the REST API.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceMarker interface to indicate a ManagedResource implementation class also supports managing child resources at path: /<resource>/{child} -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringprotected Dateprotected Datestatic final Stringstatic final Stringprotected org.apache.solr.common.util.NamedList<Object> protected final SolrResourceLoaderprotected final ManagedResourceStoragestatic final String -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedManagedResource(String resourceId, SolrResourceLoader loader, ManagedResourceStorage.StorageIO storageIO) Initializes this managed resource, including setting up JSON-based storage using the provided storageIO implementation, such as ZK. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract ObjectapplyUpdatesToManagedData(Object updates) Called during PUT/POST processing to apply updates to the managed data passed from the client.buildMapToStore(Object managedData) Builds the JSON object to be stored, containing initArgs and managed data fields.convertNamedListToMap(org.apache.solr.common.util.NamedList<?> args) Converts a NamedList<?> into an ordered Map for returning as JSON.protected ManagedResourceStoragecreateStorage(ManagedResourceStorage.StorageIO storageIO, SolrResourceLoader loader) Potential extension point allowing concrete implementations to supply their own storage implementation.abstract voiddoDeleteChild(BaseSolrResource endpoint, String childId) Called to delete a named part (the given childId) of the resource at the given endpointabstract voiddoGet(BaseSolrResource endpoint, String childId) Called to retrieve a named part (the given childId) of the resource at the given endpointvoiddoPost(BaseSolrResource endpoint, Object json) Just callsdoPut(BaseSolrResource,Object); override to change the behavior of POST handling.voiddoPut(BaseSolrResource endpoint, Object json) Applies changes to initArgs or managed data.Returns this resource's initialization timestamp.Gets the resource ID for this managed resource.Returns the resource loader used by this resource.Class<? extends BaseSolrResource> 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.Returns the timestamp of the most recent update, or null if this resource has not been updated since initialization.booleanReturns true if this resource has been changed since initialization.voidCalled once during core initialization to get the managed data loaded from storage and notify observers.protected voidnotifyObserversDuringInit(org.apache.solr.common.util.NamedList<?> args, Collection<ManagedResourceObserver> observers) Notifies all registered observers that the ManagedResource is initialized.protected abstract voidonManagedDataLoadedFromStorage(org.apache.solr.common.util.NamedList<?> managedInitArgs, Object managedData) Method called after data has been loaded from storage to give the concrete implementation a chance to post-process the data.voidCalled by the RestManager framework after this resource has been deleted to allow this resource to close and clean-up any resources used by this.protected ObjectprocessStoredData(Object data) Processes the stored data.protected voidInvoked when this object determines it needs to reload the stored data.voidstoreManagedData(Object managedData) Persists managed data to the configured storage IO as a JSON object.protected booleanupdateInitArgs(org.apache.solr.common.util.NamedList<?> updatedArgs) Called fromdoPut(BaseSolrResource,Object)to update this resource's init args using the given updatedArgs
-
Field Details
-
INIT_ARGS_JSON_FIELD
- See Also:
-
MANAGED_JSON_LIST_FIELD
- See Also:
-
MANAGED_JSON_MAP_FIELD
- See Also:
-
INITIALIZED_ON_JSON_FIELD
- See Also:
-
UPDATED_SINCE_INIT_JSON_FIELD
- See Also:
-
solrResourceLoader
-
storage
-
managedInitArgs
-
initializedOn
-
lastUpdateSinceInitialization
-
-
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
Returns the resource loader used by this resource. -
getResourceId
Gets the resource ID for this managed resource. -
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 fromdoPut(BaseSolrResource,Object)to update this resource's init args using the given updatedArgs -
reloadFromStorage
protected void reloadFromStorage() throws org.apache.solr.common.SolrExceptionInvoked when this object determines it needs to reload the stored data.- Throws:
org.apache.solr.common.SolrException
-
processStoredData
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
Persists managed data to the configured storage IO as a JSON object. -
getInitializedOn
Returns this resource's initialization timestamp. -
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
Builds the JSON object to be stored, containing initArgs and managed data fields. -
convertNamedListToMap
Converts a NamedList<?> into an ordered Map for returning as JSON. -
doPost
Just callsdoPut(BaseSolrResource,Object); override to change the behavior of POST handling. -
doPut
Applies changes to initArgs or managed data. -
onResourceDeleted
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
Called during PUT/POST processing to apply updates to the managed data passed from the client. -
doDeleteChild
Called to delete a named part (the given childId) of the resource at the given endpoint -
doGet
Called to retrieve a named part (the given childId) of the resource at the given endpoint
-