You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@airavata.apache.org by "Chathuri Wimalasena (JIRA)" <ji...@apache.org> on 2014/02/05 16:40:24 UTC

[jira] [Issue Comment Deleted] (AIRAVATA-1006) Craft the Registry 1.0 CPI

     [ https://issues.apache.org/jira/browse/AIRAVATA-1006?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chathuri Wimalasena updated AIRAVATA-1006:
------------------------------------------

    Comment: was deleted

(was: Hi Suresh / Marlon, 

Here is one approach that I came to define Registry CPI. Will this be too abstract ? A programmer who is going to program against this should only know about the thrift models. He does not have to know about the registry structure. Please give feedback. 

/**
 * This is the interface for Registry CPI
 */
public interface Registry {

    /**
     * This method is to add an object in to the registry
     * @param dataType Data type is a predefined type which the programmer should choose according to the object he
     *                 is going to save in to registry
     * @param newObjectToAdd Object which contains the fields that need to be saved in to registry. This object is a
     *                       thrift model object. In experiment case this object can be BasicMetadata, ConfigurationData
     *                       etc
     */
    public void add(DataType dataType, Object newObjectToAdd);

    /**
     * This method is to update the whole object in registry
     * @param dataType Data type is a predefined type which the programmer should choose according to the object he
     *                 is going to save in to registry
     * @param newObjectToUpdate Object which contains the fields that need to be updated in to registry. This object is a
     *                       thrift model object. In experiment case this object can be BasicMetadata, ConfigurationData
     *                       etc. CPI programmer can only fill necessary fields that need to be updated. He does not
     *                       have to fill the whole object. He needs to only fill the mandatory fields and whatever the
     *                       other fields that need to be updated.
     *
     */
    public void update(DataType dataType, Object newObjectToUpdate);

    /**
     * This method is to update a specific field of the data model
     * @param dataType Data type is a predefined type which the programmer should choose according to the object he
     *                 is going to save in to registry
     * @param identifier Identifier which will uniquely identify the data model. For example, in Experiment_Basic_Type,
     *                   identifier will be generated experimentID
     * @param field Field which need to be updated in the registry. In Experiment_Basic_Type, if you want to update the
     *              description, field will be "description"
     * @param value Value by which the given field need to be updated. If the field is "description", that field will be
     *              updated by given value
     */
    public void update(DataType dataType, Object identifier, Object field, Object value);

    /**
     * This method is to retrieve list of objects according to a given criteria
     * @param dataType Data type is a predefined type which the programmer should choose according to the object he
     *                 is going to save in to registry
     * @param filteredBy FilterBy is the field that filtering should be done. For example, if we want to retrieve all
     *                   the experiments for a given user, filterBy will be "userName"
     * @param value value for the filtering field. In the experiment case, value for "userName" can be "admin"
     * @return List of objects according to the given criteria
     */
    public List<Object> get(DataType dataType, Object filteredBy, Object value);

    /**
     * This method is to retrieve a specific value for a given field.
     * @param dataType Data type is a predefined type which the programmer should choose according to the object he
     *                 is going to save in to registry
     * @param identifier Identifier which will uniquely identify the data model. For example, in Experiment_Basic_Type,
     *                   identifier will be generated experimentID
     * @param field field that filtering should be done. For example, if we want to execution user for a given
     *              experiment, field will be "userName"
     * @return return the value for the specific field where data model is identified by the unique identifier that has
     *         given
     */
    public Object getValue (DataType dataType, Object identifier, Object field);

    /**
     * This method is to remove a item from the registry
     * @param dataType Data type is a predefined type which the programmer should choose according to the object he
     *                 is going to save in to registry
     * @param identifier Identifier which will uniquely identify the data model. For example, in Experiment_Basic_Type,
     *                   identifier will be generated experimentID
     */
    public void remove (DataType dataType, Object identifier);

    /**
     * This method will check whether a given data type which can be identified with the identifier exists or not
     * @param dataType Data type is a predefined type which the programmer should choose according to the object he
     *                 is going to save in to registry
     * @param identifier Identifier which will uniquely identify the data model. For example, in Experiment_Basic_Type,
     *                   identifier will be generated experimentID
     * @return whether the given data type exists or not
     */
    public boolean isExist(DataType dataType, Object identifier);


})

> Craft the Registry 1.0 CPI
> --------------------------
>
>                 Key: AIRAVATA-1006
>                 URL: https://issues.apache.org/jira/browse/AIRAVATA-1006
>             Project: Airavata
>          Issue Type: Sub-task
>            Reporter: Suresh Marru
>             Fix For: 0.12
>
>
> As the Airavata API is evolving towards 1.0 version, we need to refine the currently Registry API (and the current Airavata Client->Registry API) into a unified and well defined Registry CPI. 
> This registry CPI is targeted to be invoked by the Airavata API functions and use of Registry by all internal Airavata internal components like Orchestrator, Workflow Interpreter and GFac.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)