From 9e1b9e73145e00ea591bd1e0e9777625bad66dc9 Mon Sep 17 00:00:00 2001 From: jsdelfino Date: Thu, 3 Jan 2013 07:41:14 +0000 Subject: Add support for HTTP patch and application of patch scripts to server and data store components. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1428192 13f79535-47bb-0310-9956-ffa450edef68 --- sca-cpp/trunk/components/cache/partitioner.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'sca-cpp/trunk/components/cache/partitioner.cpp') diff --git a/sca-cpp/trunk/components/cache/partitioner.cpp b/sca-cpp/trunk/components/cache/partitioner.cpp index a38c053358..8a56a7f932 100644 --- a/sca-cpp/trunk/components/cache/partitioner.cpp +++ b/sca-cpp/trunk/components/cache/partitioner.cpp @@ -142,6 +142,23 @@ const failable put(const value& key, const value& val, const lvvlambda& s return trueValue; } +/** + * Patch an item in a partition. + */ +const failable patch(const value& key, const value& val, const lvvlambda& selector, const list& partitions) { + + // Select partition + const failable > p = partition(key, selector, partitions); + if (!hasContent(p)) + return mkfailure(p); + + // Path item in selected partition + const lvvlambda l = car(content(p)); + l(mklist("patch", key, val)); + + return trueValue; +} + /** * Delete an item from a partition. */ @@ -172,6 +189,8 @@ const tuscany::value apply(const tuscany::list& params) { return tuscany::partitioner::post(cadr(params), caddr(params), cadddr(params), cddddr(params)); if (func == "put") return tuscany::partitioner::put(cadr(params), caddr(params), cadddr(params), cddddr(params)); + if (func == "patch") + return tuscany::partitioner::patch(cadr(params), caddr(params), cadddr(params), cddddr(params)); if (func == "delete") return tuscany::partitioner::del(cadr(params), caddr(params), cdddr(params)); return tuscany::mkfailure(); -- cgit v1.2.3