mirror of
https://github.com/nasa/openmct.git
synced 2025-02-18 16:40:58 +00:00
[Persistence] Add capability decorator
Add capability decorator such that persistence queuing functionality can be added on to the regular persistence capability of a domain object. WTD-1033.
This commit is contained in:
parent
f0549db4fa
commit
62e88abbd2
@ -0,0 +1,75 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining CoreCapabilityProvider. Created by vwoeltje on 11/7/14.
|
||||
*/
|
||||
define(
|
||||
['./QueuingPersistenceCapability'],
|
||||
function (QueuingPersistenceCapability) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Capability decorator. Adds queueing support to persistence
|
||||
* capabilities for domain objects, such that persistence attempts
|
||||
* will be handled in batches (allowing failure notification to
|
||||
* also be presented in batches.)
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function QueuingPersistenceCapabilityDecorator(
|
||||
persistenceQueue,
|
||||
capabilityService
|
||||
) {
|
||||
|
||||
function decoratePersistence(capabilities) {
|
||||
var originalPersistence = capabilities.persistence;
|
||||
if (originalPersistence) {
|
||||
capabilities.persistence = function (domainObject) {
|
||||
// Get/instantiate the original
|
||||
var original =
|
||||
(typeof originalPersistence === 'function') ?
|
||||
originalPersistence(domainObject) :
|
||||
originalPersistence;
|
||||
|
||||
// Provide a decorated version
|
||||
return new QueuingPersistenceCapability(
|
||||
persistenceQueue,
|
||||
original,
|
||||
domainObject
|
||||
);
|
||||
};
|
||||
}
|
||||
return capabilities;
|
||||
}
|
||||
|
||||
function getCapabilities(model) {
|
||||
return capabilityService.getCapabilities(model)
|
||||
.then(decoratePersistence);
|
||||
}
|
||||
|
||||
return {
|
||||
/**
|
||||
* Get all capabilities associated with a given domain
|
||||
* object.
|
||||
*
|
||||
* This returns a promise for an object containing key-value
|
||||
* pairs, where keys are capability names and values are
|
||||
* either:
|
||||
*
|
||||
* * Capability instances
|
||||
* * Capability constructors (which take a domain object
|
||||
* as their argument.)
|
||||
*
|
||||
*
|
||||
* @param {*} model the object model
|
||||
* @returns {Object.<string,function|Capability>} all
|
||||
* capabilities known to be valid for this model, as
|
||||
* key-value pairs
|
||||
*/
|
||||
getCapabilities: getCapabilities
|
||||
};
|
||||
}
|
||||
|
||||
return QueuingPersistenceCapabilityDecorator;
|
||||
}
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user