Fixes to the hosting module to correctly store ATOM feeds instead of raw collections and work with the sqldb component.

git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1291136 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
jsdelfino 2012-02-20 07:20:38 +00:00
commit 1a01ce4fe5
29 changed files with 56 additions and 56 deletions

View file

@ -20,7 +20,7 @@ from util import *
# Convert a particular user id to an account id
def accountid(user):
return ("'accounts", "'" + user.id(), "'user.account")
return ("accounts", user.id(), "user.account")
# Get the current user's account
def get(id, user, cache):

View file

@ -21,17 +21,7 @@ from util import *
# Convert an id to an app id
def appid(id):
return ("'apps", "'" + car(id), "'app.stats")
# Link implementation resources into an app
def mkapplink(id):
try:
os.symlink('../../../../../../nuvem/nuvem-parallel/nuvem', 'data/apps/' + car(id) + '/nuvem')
os.symlink('../../../../../components', 'data/apps/' + car(id) + '/lib')
os.mkdir('data/apps/' + car(id) + '/htdocs')
except:
pass
return True
return ("apps", car(id), "app.stats")
# Put an app into the apps db
def put(id, app, cache, store, composites, pages):
@ -41,12 +31,10 @@ def put(id, app, cache, store, composites, pages):
# Update app in apps db
if car(id) == eid:
cache.put(appid(id), appentry)
mkapplink(id)
return True
# Clone an app's composite and page
cache.put(appid(id), appentry)
mkapplink(id)
composites.put(id, composites.get((eid,)))
pages.put(id, pages.get((eid,)))
return True

View file

@ -20,7 +20,7 @@ from util import *
# Convert an id to an app id
def appid(id):
return ("'apps", "'" + car(id), "'app.composite")
return ("apps", car(id), "app.composite")
# Put an app into the apps db
def put(id, app, cache):

View file

@ -20,14 +20,18 @@ from util import *
# Convert a particular user id to a dashboard id
def dashboardid(user):
return ("'dashboards", "'" + user.id(), "'user.apps")
return ("dashboards", user.id(), "user.apps")
# Get a dashboard from the cache
def getdashboard(id, cache):
dashboard = cache.get(id)
if isNil(dashboard) or dashboard is None:
val = cache.get(id)
if isNil(val) or val is None:
return ()
return dashboard
return cdddr(car(val))
# Put a dashboard into the cache
def putdashboard(id, dashboard, cache):
val = ((("'feed", ("'title", "Your Apps"), ("'id", cadr(id))) + dashboard),)
# Put an app into the user's dashboard
def put(id, app, user, cache, apps):
@ -40,7 +44,7 @@ def put(id, app, user, cache, apps):
appentry = (("'entry", cadr(car(app)), ("'id", car(id))),)
dashboard = putapp(appentry, getdashboard(dashboardid(user), cache))
cache.put(dashboardid(user), dashboard)
putdashboard(dashboardid(user), dashboard, cache)
# Update app in app repository
apps.put(id, app);
@ -72,7 +76,7 @@ def delete(id, user, cache, apps):
return cons(car(dashboard), deleteapp(id, cdr(dashboard)))
dashboard = deleteapp(id, getdashboard(dashboardid(user), cache))
cache.put(dashboardid(user), dashboard)
putdashboard(dashboardid(user), dashboard, cache)
# Delete app from app repository
apps.delete(id);

View file

@ -123,7 +123,7 @@
<component name="name2" title="" color="orange1">
<implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>https://testhttp.sca-store.com:8453/components/property</property>
<property>https://testhttp.example.com:8453/components/property</property>
</component>
<component name="number" title="#" color="orange1">
<implementation.python script="nuvem/number.py"/>
@ -182,7 +182,7 @@
<component name="text5" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>https://testhttp.sca-store.com:8453/components/property</property>
<property>https://testhttp.example.com:8453/components/property</property>
</component>
<component x="13" y="58" name="timer3" title="timer" color="green1">
<implementation.python script="nuvem/timer.py"/>

View file

@ -146,7 +146,7 @@
<component name="name" title="" color="orange1">
<implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>https://testhttp.sca-store.com:8453/components/property</property>
<property>https://testhttp.example.com:8453/components/property</property>
</component>
<component x="630" y="350" name="name1" title="" color="orange1">
<implementation.python script="nuvem/name.py"/>

View file

@ -93,7 +93,7 @@
<component name="text" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>http://sca-store.com/</property>
<property>http://example.com/</property>
</component>
<component x="400" y="10" name="text1" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>

View file

@ -0,0 +1 @@
((feed (title "Your Apps") (id "jane@example.com") (entry (title "An empty test app") (id "test"))))

View file

@ -1 +1 @@
((entry (title "An empty test app") (id "test")))
((feed (title "Your Apps") (id "jane@localhost") (entry (title "An empty test app") (id "test"))))

View file

@ -1 +0,0 @@
((entry (title "An empty test app") (id "test")))

View file

@ -0,0 +1 @@
((feed (title "Your Apps") (id "john@example.com") (entry (title "An empty test app") (id "test"))))

View file

@ -1 +1 @@
((entry (title "An empty test app") (id "test")))
((feed (title "Your Apps") (id "john@localhost") (entry (title "An empty test app") (id "test"))))

View file

@ -1 +0,0 @@
((entry (title "An empty test app") (id "test")))

View file

@ -1 +1 @@
((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Where are my friends") (id "nearme2")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms")) (entry (title "An empty test app") (id "test")) (entry (title "Test values and lists") (id "testvalues")) (entry (title "Test social components") (id "testsocial")) (entry (title "Test URL components") (id "testurl")) (entry (title "Test logic components") (id "testlogic")) (entry (title "Test text processing components") (id "testtext")) (entry (title "Test HTTP components") (id "testhttp")) (entry (title "Test SMS API") (id "testsms")) (entry (title "Test widgets") (id "testwidgets")) (entry (title "Test more widgets") (id "testwidgets2")) (entry (title "Test event components") (id "testevents")) (entry (title "Test search components") (id "testsearch")) (entry (title "Test database components") (id "testdb")) (entry (title "Test HTML generator components") (id "testwidgets3")) (entry (title "Test animation components") (id "testanimation")))
((feed (title "App Store") (id "all") (entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Where are my friends") (id "nearme2")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms")) (entry (title "An empty test app") (id "test")) (entry (title "Test values and lists") (id "testvalues")) (entry (title "Test social components") (id "testsocial")) (entry (title "Test URL components") (id "testurl")) (entry (title "Test logic components") (id "testlogic")) (entry (title "Test text processing components") (id "testtext")) (entry (title "Test HTTP components") (id "testhttp")) (entry (title "Test SMS API") (id "testsms")) (entry (title "Test widgets") (id "testwidgets")) (entry (title "Test more widgets") (id "testwidgets2")) (entry (title "Test event components") (id "testevents")) (entry (title "Test search components") (id "testsearch")) (entry (title "Test database components") (id "testdb")) (entry (title "Test HTML generator components") (id "testwidgets3")) (entry (title "Test animation components") (id "testanimation"))))

View file

@ -1 +1 @@
((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Where are my friends") (id "nearme2")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms")))
((feed (title "App Store") (id "featured") (entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Where are my friends") (id "nearme2")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms"))))

View file

@ -1 +1 @@
((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Where are my friends") (id "nearme2")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms")))
((feed (title "App Store") (id "new") (entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Where are my friends") (id "nearme2")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms"))))

View file

@ -1 +1 @@
((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Where are my friends") (id "nearme2")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms")))
((feed (title "App Store") (id "top") (entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Where are my friends") (id "nearme2")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms"))))

View file

@ -1997,7 +1997,7 @@ function installpalette(name, pos, g, bg, palette, gpalettes) {
function save(savexml) {
showStatus('Saving');
savedcomposxml = savexml;
var entry = '<entry xmlns="http://www.w3.org/2005/Atom">' +
var entry = '<?xml version="1.0" encoding="UTF-8"?>\n' + '<entry xmlns="http://www.w3.org/2005/Atom">' +
'<title type="text">' + appname + '</title><id>' + appname + '</id><content type="application/xml">' +
savedcomposxml + '</content></entry>';
composites.put(appname, entry, function(e) {

View file

@ -872,7 +872,7 @@ function save(newxml) {
savedpagexhtml = newxml;
// Update the page ATOM entry
var entry = '<entry xmlns="http://www.w3.org/2005/Atom">' +
var entry = '<?xml version="1.0" encoding="UTF-8"?>\n' + '<entry xmlns="http://www.w3.org/2005/Atom">' +
'<title type="text">' + appname + '</title><id>' + appname + '</id><content type="application/xml">' +
newxml + '</content></entry>';

View file

@ -20,7 +20,7 @@ from util import *
# Convert an id to an app id
def appid(id):
return ("'apps", "'" + car(id), "'htdocs", "'app.html")
return ("apps", car(id), "htdocs", "app.html")
# Put an app page into the apps db
def put(id, app, cache):

View file

@ -20,7 +20,7 @@ from util import *
# Convert an id to a palette id
def paletteid(id):
return ("'palettes", "'" + car(id), "'palette.composite")
return ("palettes", car(id), "palette.composite")
# Put a palette into the palettes db
def put(id, palette, cache):

View file

@ -19,10 +19,10 @@
from util import *
# Get the database to use for a particular key
def get(id, db1, db2):
def get(id, db):
if isNil(id):
return db1
return db[0]
if cadr(id)[0:1].lower() < 'm':
return db1
return db2
return db[0]
return db[1]

View file

@ -20,14 +20,18 @@ from util import *
# Convert a particular store tag to a store id
def storeid(tag):
return ("'store", "'" + tag, "'store.apps")
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:
val = cache.get(id)
if isNil(val) or val is None:
return ()
return store
return cdddr(car(val))
# Put a store into the cache
def putstore(id, store, cache):
val = ((("'feed", ("'title", "App Store"), ("'id", cadr(id))) + store),)
# Put an app into a store
def put(key, app, cache):
@ -40,7 +44,7 @@ def put(key, app, cache):
tag = car(key)
store = putapp(app, getstore(storeid(tag), cache))
cache.put(storeid(tag), store)
putstore(storeid(tag), store, cache)
return True
# Get apps from a store
@ -75,6 +79,6 @@ def delete(key, cache):
return cons(car(store), deleteapp(id, cdr(store)))
store = deleteapp(id, getstore(storeid(tag), cache))
cache.put(storeid(tag), store)
putstore(storeid(tag), store, cache)
return True