You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by "Rupert Westenthaler (Created) (JIRA)" <ji...@apache.org> on 2011/11/07 10:31:51 UTC

[jira] [Created] (STANBOL-374) Add support for Resource Tracking to the DataFileProvider infrastructure

Add support for Resource Tracking to the DataFileProvider infrastructure
------------------------------------------------------------------------

                 Key: STANBOL-374
                 URL: https://issues.apache.org/jira/browse/STANBOL-374
             Project: Stanbol
          Issue Type: New Feature
          Components: Commons
            Reporter: Rupert Westenthaler
            Assignee: Rupert Westenthaler


Currently the DataFileProvider only supports requests for resources. If a specific resource is available the caller gets an InputStream for that Resource. Otherwise a IOException is thrown.

Here the proposal is to add an new ResourceTracker Service that allows to register/unregister ResourceListener instances

    @Service
    ResourceTracker
        /** adds an listener for a resource with that name and a bundle **/
        + void add(ResourceListener listener, String bundleSymbolicName, String name)

        /** adds an listener for a resource with a given name **/
        + void add(ResourceListener listener, String name)

        /** removes all resources for that specific listener instance. Useful if the listening components gets deactivated. **/
        + void removeAll(ResourceListener listener)

        /** removes listening to that the resource with that name/bundle for that listener **/
        + void remove(ResourceListener listener, String bundleSymbolicName, String name)

        /** removes listening to that  resource for that listener **/
        + void remove(ResourceListener listener, String name)

   ResourceListener (interface)
        /** Called as soon as a resource gets available. Also called for newly registered 
         * resources if the requested resource is already present at the time of registration
         * @param resource the name of the available resource
         * @param is the inputstream for that resource
         * @return If <code>true</code> the registration for this event is automatically removed.
         * Otherwise the registration is kept and can be used to track if the resource get unavailable.
         **/
        + boolean available(String resource, InputStream is)

        /** Called as soon as a previous available resource is no longer available 
         * @param resource The name of the unavailable resource
         * @return If <code>true</code>  the registration for this event is automatically removed.
         * Otherwise the component receiving this call needs to remove the registration them self.
         **/
        +boolean unavailable(String resource)

Implementation:

The suggestion is to

* add this to the "org.apache.stanbol.commons.stanboltools.datafileprovider" bundle
* add the "ResourceTracker" and "ResourceListener" interface to the "org.apache.stanbol.commons.stanboltools.datafileprovider" package
* add the implementation directly to the "org.apache.stanbol.commons.stanboltools.datafileprovider.impl.MainDataFileProvider"
* use an own Thread that calls "getInputStream(...)" for all registered resources in fixed intervals (e.g. 5sec) . Computational overhead for the periodical polls should be minimal.
* The poll interval should a configurable.

Intended Usage:

* Initially I require this feature to listen for archived Solr indexes copied to the /datafiles folders. Currently users need to manually restart the Component that manages SolrIndexes after the according file is available.
* This feature will also be handy if we implement a functionality that allows to download referenced datafiles via the web, because as soon as the downloads completes the components depending on a resource could be notified.
* This feature could also optionally be used to deactivate functionality by deleting the corresponding datafiles form the /datafiles folder. (e.g. the OpenNLP component loads Language models via the DatafileProvider. Currently the are kept in Memory even if the corresponding DataFile is no longer available. Even if the user provides an updated version. The old version is still available (in-memory) and the new one is only used after a restart of the Stanbol environment. This feature would allow to get notified as soon as a model is deleted and would trigger an re-initialisation of the model as soon as the updated datafile is available again.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Resolved] (STANBOL-374) Add support for Resource Tracking to the DataFileProvider infrastructure

Posted by "Rupert Westenthaler (Resolved) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/STANBOL-374?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rupert Westenthaler resolved STANBOL-374.
-----------------------------------------

    Resolution: Fixed

fixed with revision #1205331

NOTES: 

* The Interface of the implementation is slightly different as in the Description. 
* The DataFileTracker is an own Service with a dependency to the DataFileProvider
* The DataFileTracker includes also a constructor that allows it usage outside an OSGI environment.
                
> Add support for Resource Tracking to the DataFileProvider infrastructure
> ------------------------------------------------------------------------
>
>                 Key: STANBOL-374
>                 URL: https://issues.apache.org/jira/browse/STANBOL-374
>             Project: Stanbol
>          Issue Type: New Feature
>          Components: Commons
>            Reporter: Rupert Westenthaler
>            Assignee: Rupert Westenthaler
>              Labels: DataFileProvider
>
> Currently the DataFileProvider only supports requests for resources. If a specific resource is available the caller gets an InputStream for that Resource. Otherwise a IOException is thrown.
> Here the proposal is to add an new ResourceTracker Service that allows to register/unregister ResourceListener instances
>     @Service
>     ResourceTracker
>         /** adds an listener for a resource with that name and a bundle **/
>         + void add(ResourceListener listener, String bundleSymbolicName, String name)
>         /** adds an listener for a resource with a given name **/
>         + void add(ResourceListener listener, String name)
>         /** removes all resources for that specific listener instance. Useful if the listening components gets deactivated. **/
>         + void removeAll(ResourceListener listener)
>         /** removes listening to that the resource with that name/bundle for that listener **/
>         + void remove(ResourceListener listener, String bundleSymbolicName, String name)
>         /** removes listening to that  resource for that listener **/
>         + void remove(ResourceListener listener, String name)
>    ResourceListener (interface)
>         /** Called as soon as a resource gets available. Also called for newly registered 
>          * resources if the requested resource is already present at the time of registration
>          * @param resource the name of the available resource
>          * @param is the inputstream for that resource
>          * @return If <code>true</code> the registration for this event is automatically removed.
>          * Otherwise the registration is kept and can be used to track if the resource get unavailable.
>          **/
>         + boolean available(String resource, InputStream is)
>         /** Called as soon as a previous available resource is no longer available 
>          * @param resource The name of the unavailable resource
>          * @return If <code>true</code>  the registration for this event is automatically removed.
>          * Otherwise the component receiving this call needs to remove the registration them self.
>          **/
>         +boolean unavailable(String resource)
> Implementation:
> The suggestion is to
> * add this to the "org.apache.stanbol.commons.stanboltools.datafileprovider" bundle
> * add the "ResourceTracker" and "ResourceListener" interface to the "org.apache.stanbol.commons.stanboltools.datafileprovider" package
> * add the implementation directly to the "org.apache.stanbol.commons.stanboltools.datafileprovider.impl.MainDataFileProvider"
> * use an own Thread that calls "getInputStream(...)" for all registered resources in fixed intervals (e.g. 5sec) . Computational overhead for the periodical polls should be minimal.
> * The poll interval should a configurable.
> Intended Usage:
> * Initially I require this feature to listen for archived Solr indexes copied to the /datafiles folders. Currently users need to manually restart the Component that manages SolrIndexes after the according file is available.
> * This feature will also be handy if we implement a functionality that allows to download referenced datafiles via the web, because as soon as the downloads completes the components depending on a resource could be notified.
> * This feature could also optionally be used to deactivate functionality by deleting the corresponding datafiles form the /datafiles folder. (e.g. the OpenNLP component loads Language models via the DatafileProvider. Currently the are kept in Memory even if the corresponding DataFile is no longer available. Even if the user provides an updated version. The old version is still available (in-memory) and the new one is only used after a restart of the Stanbol environment. This feature would allow to get notified as soon as a model is deleted and would trigger an re-initialisation of the model as soon as the updated datafile is available again.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira