...
Jira | ||||||||
---|---|---|---|---|---|---|---|---|
|
Decisions
...
/Open Issues
Warning | ||
---|---|---|
| ||
It is very important that the SPI doesn't expose any database implementation for example database ID's |
Description | Details | Decisions | |
---|---|---|---|
1 | Assume flat attributes (no complex data types) but data could be stored as json object in SPI impl. for convenience/PoC | ||
2 | SPI Implementation NOT using Model (service) current ENM SPI does! |
Open Issues
3 | |||||
# | Description | Details | Decisions | ||
---|---|---|---|---|---|
1 | Are we going to have XPath/query builder? |
| |||
4 | Having a fluent interface in my opinion would be way more intuitive and practical. E.g. //AND of two restrictions Restriction and(Restriction firstRestriction, Restriction secondRestriction) //OR of two restrictions Restriction or(Restriction firstRestriction, Restriction secondRestriction) //NOT of a restriction Restriction not(Restriction restriction) This will give any user of the API an intuitive way to build a complex query and the developer of the API a tree to navigate and translate to SQL (or any other query language). A developer could do something the likes of myQuery.setRestriction(restriction1.and(restrcition2).and(restriction3)) | 3 | SPI should be type safe (the SPI impl. has no access to models)
| We can do validation but still store as a string (JSON object).||
5 | When do we get attributes? | Maybe we dont need this because we dont have complex data attributes |
ENM SPI Study
Details about the ENM SPI can be found here: https://wiki.onap.org/pages/resumedraft.action?draftId=92998891&draftShareId=2f0190f4-bc97-47b7-bd82-6561f3606575&
NOTES
Proposed Future Implementation of CPS SPI
...
Name | Definition | Capabilities | ||
---|---|---|---|---|
1 | SimpleDataObject | Provides the basic information needed to access an object. |
| |
2 | DataPersistenceLayer | DataPersistenceService | Adding functionality for handling attributes
|
Gets the persistence layer object without any layers of decoration. If the innermost object is not a persistence layer object then a suitable exception will be thrown.
Passes the attributes supplied by the user for a new persistence object so that they may be verified as required.
Initializes the attributes for a new persistence object. This method should be invoked when creating a new persistence object rather than using setAttributes() as it will have different behavior, namely:
Gets the values for the attributes which have been specifically set on this object. This includes attributes which:
Note that an attribute may have been specifically set to null so the values returned in the map may contain nulls.
Determines if the supplied attribute has been specifically set (includes attributes which were set to null).
Gets all of the attribute names available in this persistence object.
Unsets the values of the supplied attributes. |
Dataspace SPI
Name | Definition | Capabilities | |
---|---|---|---|
1 | DataspaceObject | Create a simple CPS Dataspace Object |
|
2 | DataspacePersistenceService | Responsible for handling dataspace attributes |
|
Fragment SPI
Name | Definition | Capabilities | |
---|---|---|---|
1 | FragmentObject | Create a simple CPS Fragment Object |
|
2 | FragmentPersistenceService | Adding functionality for handling attributes |
|
Module SPI
Name | Definition | Capabilities | |
---|---|---|---|
1 |
ModulePersistenceService | Adding functionality for handling attributes |
Remove all associations of this persistence object.
Retrieves the namespace of the type of object the type query is to target.
| |
2 | BasicModuleObject | Create a simple CPS Module Object |
|
Query SPI
Name | Definition | Capabilities | |
---|---|---|---|
1 | Interface QueryService | Service responsible for dealing with query related features of CPS. |
Executes the query and presents the result as an iterator of objects queried for.
Executes the query and presents the result as a list. Returns a list of the type of which is based on the Projection used.
. Will returna list of type Object array.
Executes the query and presents the result as a count of how many instances are matched against the query.
Deletes all matching objects and where appropriate deletes any children.
Executes the query ands gets the result as an iterable of 'full' objects queried.
Project the results from points in the query path. Projections allow the user project a single data element from the objects which were found along a query path - these elements can be modelled (i.e. persistence object attributes) or non-modelled (i.e. object fields).
Retrieves the type of object that the type query is to target. |
2 | Interface QueryPathService | Service responsible for dealing with path query related features |
executes the path query against the db. returns a list of type Object.
Executes the query ands gets the result as an iterable of 'full' objects queried. |
3 | QueryBuilderService | Create queries using CPS query builder |
|
4 | Interface CpsRestriction | Creates a simple CPS restriction |
Gets the restriction used in the query criteria, including any internal restrictions added in addition to those set by the user.
Retrieves the name of the attribute that the restriction is. |
5 | SimpleRestriction | Creates a simple restriction (e.g. compare one field to one value). |
|
6 | PartialMatchRestriction | Implementation of the partial match restriction and not match restriction. |
|
7 | LogicalRestriction | Implement logical restriction (AND/OR) and the negation of this logical restriction. |
|