org.apache.solr.rest

## Class ManagedResource

- java.lang.Object
- - org.apache.solr.rest.ManagedResource

- Direct Known Subclasses:
    ManagedSynonymFilterFactory.SynonymManager, ManagedWordSetResource

      public abstract class ManagedResource
      extends Object

  Supports Solr components that have external data that needs to be managed using the REST API.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `ManagedResource.ChildResourceSupport` Marker interface to indicate a ManagedResource implementation class also supports managing child resources at path: /<resource>/{child}

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `INIT_ARGS_JSON_FIELD`
    `static String` | `INITIALIZED_ON_JSON_FIELD`
    `protected Date` | `initializedOn`
    `protected Date` | `lastUpdateSinceInitialization`
    `static String` | `MANAGED_JSON_LIST_FIELD`
    `static String` | `MANAGED_JSON_MAP_FIELD`
    `protected NamedList<Object>` | `managedInitArgs`
    `protected SolrResourceLoader` | `solrResourceLoader`
    `protected ManagedResourceStorage` | `storage`
    `static String` | `UPDATED_SINCE_INIT_JSON_FIELD`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `ManagedResource(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

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract Object` | `applyUpdatesToManagedData(Object updates)` Called during PUT/POST processing to apply updates to the managed data passed from the client.
    `protected Map<String,Object>` | `buildMapToStore(Object managedData)` Builds the JSON object to be stored, containing initArgs and managed data fields.
    `protected Map<String,Object>` | `convertNamedListToMap(NamedList<?> args)` Converts a NamedList<?> into an ordered Map for returning as JSON.
    `protected ManagedResourceStorage` | `createStorage(ManagedResourceStorage.StorageIO storageIO, SolrResourceLoader loader)` Potential extension point allowing concrete implementations to supply their own storage implementation.
    `abstract void` | `doDeleteChild(BaseSolrResource endpoint, String childId)` Called by `RestManager.ManagedEndpoint.delete()` to delete a named part (the given childId) of the resource at the given endpoint
    `abstract void` | `doGet(BaseSolrResource endpoint, String childId)` Called by `RestManager.ManagedEndpoint.get()` to retrieve a named part (the given childId) of the resource at the given endpoint
    `void` | `doPost(BaseSolrResource endpoint, org.restlet.representation.Representation entity, Object json)` Just calls `doPut(BaseSolrResource,Representation,Object)`; override to change the behavior of POST handling.
    `void` | `doPut(BaseSolrResource endpoint, org.restlet.representation.Representation entity, Object json)` Applies changes to initArgs or managed data.
    `String` | `getInitializedOn()` Returns this resource's initialization timestamp.
    `String` | `getResourceId()` Gets the resource ID for this managed resource.
    `SolrResourceLoader` | `getResourceLoader()` Returns the resource loader used by this resource.
    `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.
    `String` | `getUpdatedSinceInitialization()` Returns the timestamp of the most recent update, or null if this resource has not been updated since initialization.
    `boolean` | `hasChangesSinceInitialization()` Returns true if this resource has been changed since initialization.
    `void` | `loadManagedDataAndNotify(List<ManagedResourceObserver> observers)` Called once during core initialization to get the managed data loaded from storage and notify observers.
    `protected void` | `notifyObserversDuringInit(NamedList<?> args, List<ManagedResourceObserver> observers)` Notifies all registered observers that the ManagedResource is initialized.
    `protected abstract void` | `onManagedDataLoadedFromStorage(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.
    `void` | `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.
    `protected Object` | `processStoredData(Object data)` Processes the stored data.
    `protected void` | `reloadFromStorage()` Invoked when this object determines it needs to reload the stored data.
    `void` | `storeManagedData(Object managedData)` Persists managed data to the configured storage IO as a JSON object.
    `protected boolean` | `updateInitArgs(NamedList<?> updatedArgs)` Called from `doPut(BaseSolrResource,Representation,Object)` to update this resource's init args using the given updatedArgs

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### INIT_ARGS_JSON_FIELD

          public static final String INIT_ARGS_JSON_FIELD

      See Also:
        Constant Field Values

    - #### MANAGED_JSON_LIST_FIELD

          public static final String MANAGED_JSON_LIST_FIELD

      See Also:
        Constant Field Values

    - #### MANAGED_JSON_MAP_FIELD

          public static final String MANAGED_JSON_MAP_FIELD

      See Also:
        Constant Field Values

    - #### INITIALIZED_ON_JSON_FIELD

          public static final String INITIALIZED_ON_JSON_FIELD

      See Also:
        Constant Field Values

    - #### UPDATED_SINCE_INIT_JSON_FIELD

          public static final String UPDATED_SINCE_INIT_JSON_FIELD

      See Also:
        Constant Field Values

    - #### solrResourceLoader

          protected final SolrResourceLoader solrResourceLoader

    - #### storage

          protected final ManagedResourceStorage storage

    - #### managedInitArgs

          protected NamedList<Object> managedInitArgs

    - #### initializedOn

          protected Date initializedOn

    - #### lastUpdateSinceInitialization

          protected Date lastUpdateSinceInitialization

  - ### Constructor Detail

    - #### ManagedResource

          protected ManagedResource(String resourceId,
                                    SolrResourceLoader loader,
                                    ManagedResourceStorage.StorageIO storageIO)
                             throws SolrException

      Initializes this managed resource, including setting up JSON-based storage using the provided storageIO implementation, such as ZK.
      Throws:
        `SolrException`

  - ### Method Detail

    - #### loadManagedDataAndNotify

          public void loadManagedDataAndNotify(List<ManagedResourceObserver> observers)
                                        throws SolrException

      Called once during core initialization to get the managed data loaded from storage and notify observers.
      Throws:
        `SolrException`

    - #### notifyObserversDuringInit

          protected void notifyObserversDuringInit(NamedList<?> args,
                                                   List<ManagedResourceObserver> observers)
                                            throws 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:
        `SolrException`

    - #### createStorage

          protected ManagedResourceStorage createStorage(ManagedResourceStorage.StorageIO storageIO,
                                                         SolrResourceLoader loader)
                                                  throws 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:
        `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(NamedList<?> updatedArgs)

      Called from `doPut(BaseSolrResource,Representation,Object)` to update this resource's init args using the given updatedArgs

    - #### reloadFromStorage

          protected void reloadFromStorage()
                                    throws SolrException

      Invoked when this object determines it needs to reload the stored data.
      Throws:
        `SolrException`

    - #### processStoredData

          protected Object processStoredData(Object data)
                                      throws SolrException

      Processes the stored data.
      Throws:
        `SolrException`

    - #### onManagedDataLoadedFromStorage

          protected abstract void onManagedDataLoadedFromStorage(NamedList<?> managedInitArgs,
                                                                 Object managedData)
                                                          throws SolrException

      Method called after data has been loaded from storage to give the concrete implementation a chance to post-process the data.
      Throws:
        `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(NamedList<?> args)

      Converts a NamedList<?> into an ordered Map for returning as JSON.

    - #### doPost

          public void doPost(BaseSolrResource endpoint,
                             org.restlet.representation.Representation entity,
                             Object json)

      Just calls `doPut(BaseSolrResource,Representation,Object)`; override to change the behavior of POST handling.

    - #### doPut

          public void doPut(BaseSolrResource endpoint,
                            org.restlet.representation.Representation entity,
                            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 by `RestManager.ManagedEndpoint.delete()` 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 by `RestManager.ManagedEndpoint.get()` to retrieve a named part (the given childId) of the resource at the given endpoint

Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.