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)