diff options
author | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2012-01-30 15:56:11 +0000 |
---|---|---|
committer | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2012-01-30 15:56:11 +0000 |
commit | f4c4803ce0c14585e3c2af3641d94b651877e04c (patch) | |
tree | 9f10df32f2d34a3c697aaee897bad0b180922095 /sca-cpp/trunk/hosting/server/store.py | |
parent | 1b10f18fce6baeb721a725661ded630614831304 (diff) |
Refactor server hosting module, rename it and move it under a hosting dir, and refactor its datastore components into a single component.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1237740 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp/trunk/hosting/server/store.py')
-rw-r--r-- | sca-cpp/trunk/hosting/server/store.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/sca-cpp/trunk/hosting/server/store.py b/sca-cpp/trunk/hosting/server/store.py new file mode 100644 index 0000000000..014c07050e --- /dev/null +++ b/sca-cpp/trunk/hosting/server/store.py @@ -0,0 +1,80 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# stores collection implementation +from util import * + +# Convert a particular store tag to a store id +def storeid(tag): + return ("'store", "'" + tag, "'store.apps") + +# Get a store from the cache +def getstore(id, cache): + store = cache.get(id) + if isNil(store) or store is None: + return () + return store + +# Put an app into a store +def put(key, app, cache): + def putapp(app, store): + if isNil(store): + return app + if cadr(caddr(car(app))) == cadr(caddr(car(store))): + return cons(car(app), cdr(store)) + return cons(car(store), putapp(app, cdr(store))) + + tag = car(key) + store = putapp(app, getstore(storeid(tag), cache)) + cache.put(storeid(tag), store) + return True + +# Get apps from a store +def get(key, cache): + tag = car(key) + id = cdr(key) + + def findapp(id, store): + if isNil(store): + return None + if car(id) == cadr(caddr(car(store))): + return (car(store),) + return findapp(id, cdr(store)) + + if isNil(id): + return ((("'feed", ("'title", "App Store"), ("'id", tag)) + getstore(storeid(tag), cache)),) + return findapp(id, getstore(storeid(tag), cache)) + +# Delete apps from a store +def delete(key, cache): + tag = car(key) + id = cdr(key) + + if isNil(id): + return cache.delete(storeid(tag)) + + def deleteapp(id, store): + if isNil(store): + return () + if car(id) == cadr(caddr(car(store))): + return cdr(store) + return cons(car(store), deleteapp(id, cdr(store))) + + store = deleteapp(id, getstore(storeid(tag), cache)) + cache.put(storeid(tag), store) + return True + |