Some improvements to the edit module. Add a few sample apps and test cases, show current user and links to app data.

git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1074923 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
jsdelfino 2011-02-26 20:59:26 +00:00
commit 0ee21c5d96
47 changed files with 1922 additions and 1001 deletions

View file

@ -18,23 +18,37 @@
# Apps collection implementation
import uuid
import sys
import os
from util import *
# Convert an id to an app id
def appid(id):
return ("'" + car(id), "'app.composite")
# Link implementation resources into an app
def mkapplink(id):
try:
os.symlink('../../../../../nuvem/nuvem-parallel/nuvem', 'apps/' + car(id) + '/nuvem')
os.mkdir('apps/' + car(id) + '/htdocs')
os.symlink('../../../htdocs/login', 'apps/' + car(id) + '/htdocs/login');
os.symlink('../../../htdocs/logout', 'apps/' + car(id) + '/htdocs/logout');
except:
pass
return True
# Post a new app to the apps db
def post(collection, app, cache):
id = appid((str(uuid.uuid1()),))
comp = caddr(app)
cache.put((id,), comp)
mkapplink((id,))
return id
# Put an app into the apps db
def put(id, app, cache):
comp = caddr(app)
cache.put(appid(id), comp)
mkapplink(id)
return True
# Get an app from the apps db

View file

@ -18,47 +18,47 @@
* under the License.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://me360" name="me360">
<component t:x="240" t:y="57" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>12345678</property>
</component>
<service name="opened" promote="opened"/>
<component t:x="3" t:y="2" name="opened" t:title="when page opened" t:color="green1">
<t:implementation.python script="opened.py"/>
<service name="opened" t:visible="false"/>
<reference target="assoc2" name="content"/>
</component>
<component t:x="135" t:y="2" name="assoc2" t:title="assoc" t:color="orange1">
<t:implementation.python script="assoc.py"/>
<service name="assoc"/>
<reference target="name2" name="name"/>
<reference target="append" name="value"/>
</component>
<component t:x="225" t:y="52" name="append" t:title="append" t:color="yellow1">
<t:implementation.python script="append.py"/>
<service name="append"/>
<reference target="fbprofile" name="first"/>
<reference target="twprofile" name="second"/>
</component>
<component t:x="297" t:y="53" name="fbprofile" t:title="facebook profile" t:color="blue1">
<t:implementation.python script="fbprofile.py"/>
<service name="fbprofile"/>
<reference target="text" name="id"/>
</component>
<component t:x="293" t:y="105" name="twprofile" t:title="twitter profile" t:color="blue1">
<t:implementation.python script="twprofile.py"/>
<service name="twprofile"/>
<reference target="text2" name="id"/>
</component>
<component t:x="219" t:y="0" name="name2" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>profiles</property>
</component>
<component t:x="358" t:y="98" name="text2" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>joe</property>
</component>
<component t:x="240" t:y="57" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>12345678</property>
</component>
<service name="opened" promote="opened"/>
<component t:x="3" t:y="2" name="opened" t:title="when page opened" t:color="green1">
<t:implementation.python script="opened.py"/>
<service name="opened" t:visible="false"/>
<reference target="assoc2" name="content"/>
</component>
<component t:x="135" t:y="2" name="assoc2" t:title="assoc" t:color="orange1">
<t:implementation.python script="assoc.py"/>
<service name="assoc"/>
<reference target="name2" name="name"/>
<reference target="append" name="value"/>
</component>
<component t:x="225" t:y="52" name="append" t:title="append" t:color="yellow1">
<t:implementation.python script="append.py"/>
<service name="append"/>
<reference target="fbprofile" name="first"/>
<reference target="twprofile" name="second"/>
</component>
<component t:x="297" t:y="53" name="fbprofile" t:title="facebook profile" t:color="blue1">
<t:implementation.python script="fbprofile.py"/>
<service name="fbprofile"/>
<reference target="text" name="id"/>
</component>
<component t:x="293" t:y="105" name="twprofile" t:title="twitter profile" t:color="blue1">
<t:implementation.python script="twprofile.py"/>
<service name="twprofile"/>
<reference target="text2" name="id"/>
</component>
<component t:x="219" t:y="0" name="name2" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>profiles</property>
</component>
<component t:x="358" t:y="98" name="text2" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>joe</property>
</component>
</composite>

View file

@ -18,28 +18,28 @@
* under the License.
-->
<DIV id="page">
<SPAN id="h1" class="h1" style="position: absolute; top: 6px; left: 0px; ">
<H1>My social profiles</H1>
</SPAN>
<SPAN id="getProfiles" class="button" style="position: absolute; top: 144px; left: 0px; ">
<INPUT type="button" value="Get my profiles"/>
</SPAN>
<SPAN id="h2" class="h2" style="position: absolute; top: 198px; left: 0px; ">
<H2>Facebook profile</H2>
</SPAN>
<SPAN id="fbprofile" class="text" style="position: absolute; top: 240px; left: 3px; ">
<SPAN>text</SPAN>
</SPAN>
<SPAN id="h2" class="h2" style="position: absolute; top: 283px; left: 1px; ">
<H2>Twitter profile</H2>
</SPAN>
<SPAN id="twprofile" class="text" style="position: absolute; top: 331px; left: 2px; ">
<SPAN>text</SPAN>
</SPAN>
<SPAN id="twid" class="entry" style="position: absolute; top: 99px; left: 0px; ">
<INPUT type="text" value="field" size="5"/>
</SPAN>
<SPAN id="fbid" class="entry" style="position: absolute; top: 56px; left: 0px; ">
<INPUT type="text" value="field" size="5"/>
</SPAN>
<SPAN id="h1" class="h1" style="position: absolute; top: 6px; left: 0px; ">
<H1>My social profiles</H1>
</SPAN>
<SPAN id="getProfiles" class="button" style="position: absolute; top: 144px; left: 0px; ">
<INPUT type="button" value="Get my profiles"/>
</SPAN>
<SPAN id="h2" class="h2" style="position: absolute; top: 198px; left: 0px; ">
<H2>Facebook profile</H2>
</SPAN>
<SPAN id="fbprofile" class="text" style="position: absolute; top: 240px; left: 3px; ">
<SPAN>text</SPAN>
</SPAN>
<SPAN id="h2" class="h2" style="position: absolute; top: 283px; left: 1px; ">
<H2>Twitter profile</H2>
</SPAN>
<SPAN id="twprofile" class="text" style="position: absolute; top: 331px; left: 2px; ">
<SPAN>text</SPAN>
</SPAN>
<SPAN id="twid" class="entry" style="position: absolute; top: 99px; left: 0px; ">
<INPUT type="text" value="field" size="5"/>
</SPAN>
<SPAN id="fbid" class="entry" style="position: absolute; top: 56px; left: 0px; ">
<INPUT type="text" value="field" size="5"/>
</SPAN>
</DIV>

View file

@ -18,101 +18,101 @@
* under the License.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://myprofile2" name="myprofile2">
<service name="opened" promote="opened"/>
<component t:x="0" t:y="13" name="opened" t:title="when page opened" t:color="green1">
<t:implementation.python script="opened.py"/>
<service name="opened" t:visible="false"/>
<reference target="nothing" name="content"/>
</component>
<component t:x="133" t:y="11" name="nothing" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="nothing"/>
</component>
<service name="getProfiles" promote="getProfiles"/>
<component name="getProfiles" t:x="0" t:y="99" t:title="when clicked" t:color="green1">
<t:implementation.python script="clicked.py"/>
<service name="clicked" t:visible="false"/>
<property>getProfiles</property>
<reference target="list5" name="content"/>
</component>
<component t:x="98" t:y="100" name="list5" t:title="make list" t:color="yellow1">
<t:implementation.python script="list_.py"/>
<service name="list"/>
<reference target="assoc" name="first"/>
<reference target="list6" name="rest"/>
</component>
<component t:x="223" t:y="140" name="fbprofile2" t:title="facebook profile" t:color="blue1">
<t:implementation.python script="fbprofile.py"/>
<service name="fbprofile"/>
<reference target="find3" name="id"/>
</component>
<component t:x="176" t:y="144" name="list6" t:title="make list" t:color="yellow1">
<t:implementation.python script="list_.py"/>
<service name="list"/>
<reference target="assoc2" name="first"/>
<reference target="empty" name="rest"/>
</component>
<component t:x="176" t:y="99" name="assoc" t:title="assoc" t:color="orange1">
<t:implementation.python script="assoc.py"/>
<service name="assoc"/>
<reference target="name" name="name"/>
<reference target="fbprofile2" name="value"/>
</component>
<component t:x="299" t:y="269" name="twprofile2" t:title="twitter profile" t:color="blue1">
<t:implementation.python script="twprofile.py"/>
<service name="twprofile"/>
<reference target="find4" name="id"/>
</component>
<component t:x="337" t:y="142" name="find3" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name4" name="name"/>
<reference target="params3" name="assoc"/>
</component>
<component t:x="439" t:y="140" name="name4" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>fbid</property>
</component>
<component t:x="399" t:y="344" name="find4" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name5" name="name"/>
<reference target="params4" name="assoc"/>
</component>
<component t:x="495" t:y="345" name="name5" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>twid</property>
</component>
<component t:x="221" t:y="99" name="name" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>fbprofile</property>
</component>
<component t:x="256" t:y="262" name="assoc2" t:title="assoc" t:color="orange1">
<t:implementation.python script="assoc.py"/>
<service name="assoc"/>
<reference target="name3" name="name"/>
<reference target="twprofile2" name="value"/>
</component>
<component t:x="256" t:y="424" name="empty" t:title="empty list" t:color="yellow1">
<t:implementation.python script="empty.py"/>
<service name="empty"/>
</component>
<component t:x="298" t:y="261" name="name3" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>twprofile</property>
</component>
<component t:x="436" t:y="183" name="params3" t:title="?params" t:color="green1">
<t:implementation.python script="params.py"/>
<service name="params"/>
<property>fbid=1234567&amp;twid=joe</property>
</component>
<component t:x="495" t:y="345" name="params4" t:title="?params" t:color="green1">
<t:implementation.python script="params.py"/>
<service name="params"/>
<property>fbid=1234567&amp;twid=joe</property>
</component>
<service name="opened" promote="opened"/>
<component t:x="0" t:y="13" name="opened" t:title="when page opened" t:color="green1">
<t:implementation.python script="opened.py"/>
<service name="opened" t:visible="false"/>
<reference target="nothing" name="content"/>
</component>
<component t:x="133" t:y="11" name="nothing" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="nothing"/>
</component>
<service name="getProfiles" promote="getProfiles"/>
<component name="getProfiles" t:x="0" t:y="99" t:title="when clicked" t:color="green1">
<t:implementation.python script="clicked.py"/>
<service name="clicked" t:visible="false"/>
<property>getProfiles</property>
<reference target="list5" name="content"/>
</component>
<component t:x="98" t:y="100" name="list5" t:title="make list" t:color="yellow1">
<t:implementation.python script="list_.py"/>
<service name="list"/>
<reference target="assoc" name="first"/>
<reference target="list6" name="rest"/>
</component>
<component t:x="223" t:y="140" name="fbprofile2" t:title="facebook profile" t:color="blue1">
<t:implementation.python script="fbprofile.py"/>
<service name="fbprofile"/>
<reference target="find3" name="id"/>
</component>
<component t:x="176" t:y="144" name="list6" t:title="make list" t:color="yellow1">
<t:implementation.python script="list_.py"/>
<service name="list"/>
<reference target="assoc2" name="first"/>
<reference target="empty" name="rest"/>
</component>
<component t:x="176" t:y="99" name="assoc" t:title="assoc" t:color="orange1">
<t:implementation.python script="assoc.py"/>
<service name="assoc"/>
<reference target="name" name="name"/>
<reference target="fbprofile2" name="value"/>
</component>
<component t:x="299" t:y="269" name="twprofile2" t:title="twitter profile" t:color="blue1">
<t:implementation.python script="twprofile.py"/>
<service name="twprofile"/>
<reference target="find4" name="id"/>
</component>
<component t:x="337" t:y="142" name="find3" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name4" name="name"/>
<reference target="params3" name="assoc"/>
</component>
<component t:x="439" t:y="140" name="name4" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>fbid</property>
</component>
<component t:x="399" t:y="344" name="find4" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name5" name="name"/>
<reference target="params4" name="assoc"/>
</component>
<component t:x="495" t:y="345" name="name5" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>twid</property>
</component>
<component t:x="221" t:y="99" name="name" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>fbprofile</property>
</component>
<component t:x="256" t:y="262" name="assoc2" t:title="assoc" t:color="orange1">
<t:implementation.python script="assoc.py"/>
<service name="assoc"/>
<reference target="name3" name="name"/>
<reference target="twprofile2" name="value"/>
</component>
<component t:x="256" t:y="424" name="empty" t:title="empty list" t:color="yellow1">
<t:implementation.python script="empty.py"/>
<service name="empty"/>
</component>
<component t:x="298" t:y="261" name="name3" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>twprofile</property>
</component>
<component t:x="436" t:y="183" name="params3" t:title="?params" t:color="green1">
<t:implementation.python script="params.py"/>
<service name="params"/>
<property>fbid=1234567&amp;twid=joe</property>
</component>
<component t:x="495" t:y="345" name="params4" t:title="?params" t:color="green1">
<t:implementation.python script="params.py"/>
<service name="params"/>
<property>fbid=1234567&amp;twid=joe</property>
</component>
</composite>

View file

@ -18,28 +18,28 @@
* under the License.
-->
<DIV id="page">
<SPAN id="h1" class="h1" style="position: absolute; top: 6px; left: 0px; ">
<H1>My social profiles</H1>
</SPAN>
<SPAN id="getProfiles" class="button" style="position: absolute; top: 144px; left: 0px; ">
<INPUT type="button" value="Get my profiles"/>
</SPAN>
<SPAN id="h2" class="h2" style="position: absolute; top: 198px; left: 0px; ">
<H2>Facebook profile</H2>
</SPAN>
<SPAN id="fbprofile" class="text" style="position: absolute; top: 240px; left: 3px; ">
<SPAN>text</SPAN>
</SPAN>
<SPAN id="h2" class="h2" style="position: absolute; top: 283px; left: 1px; ">
<H2>Twitter profile</H2>
</SPAN>
<SPAN id="twprofile" class="text" style="position: absolute; top: 331px; left: 2px; ">
<SPAN>text</SPAN>
</SPAN>
<SPAN id="twid" class="entry" style="position: absolute; top: 99px; left: 0px; ">
<INPUT type="text" value="field" size="5"/>
</SPAN>
<SPAN id="fbid" class="entry" style="position: absolute; top: 56px; left: 0px; ">
<INPUT type="text" value="field" size="5"/>
</SPAN>
<SPAN id="h1" class="h1" style="position: absolute; top: 6px; left: 0px; ">
<H1>My social profiles</H1>
</SPAN>
<SPAN id="getProfiles" class="button" style="position: absolute; top: 144px; left: 0px; ">
<INPUT type="button" value="Get my profiles"/>
</SPAN>
<SPAN id="h2" class="h2" style="position: absolute; top: 198px; left: 0px; ">
<H2>Facebook profile</H2>
</SPAN>
<SPAN id="fbprofile" class="text" style="position: absolute; top: 240px; left: 3px; ">
<SPAN>text</SPAN>
</SPAN>
<SPAN id="h2" class="h2" style="position: absolute; top: 283px; left: 1px; ">
<H2>Twitter profile</H2>
</SPAN>
<SPAN id="twprofile" class="text" style="position: absolute; top: 331px; left: 2px; ">
<SPAN>text</SPAN>
</SPAN>
<SPAN id="twid" class="entry" style="position: absolute; top: 99px; left: 0px; ">
<INPUT type="text" value="field" size="5"/>
</SPAN>
<SPAN id="fbid" class="entry" style="position: absolute; top: 56px; left: 0px; ">
<INPUT type="text" value="field" size="5"/>
</SPAN>
</DIV>

View file

@ -18,105 +18,105 @@
* under the License.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://nearme" name="nearme">
<component t:x="234" t:y="25" name="fbfriend" t:color="yellow1">
<t:implementation.python script="item.py"/>
<service name="item"/>
<property name="property"/>
</component>
<component t:x="233" t:y="97" name="fbfriends" t:title="facebook friends" t:color="blue1">
<t:implementation.python script="fbfriends.py"/>
<service name="fbfriends"/>
<reference target="find" name="id"/>
</component>
<component t:x="352" t:y="96" name="find" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name" name="name"/>
<reference target="params" name="assoc"/>
</component>
<component t:x="453" t:y="97" name="name" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>fbid</property>
</component>
<component t:x="453" t:y="138" name="params" t:title="?params" t:color="green1">
<t:implementation.python script="params.py"/>
<service name="params"/>
<property>fbid=1234567</property>
</component>
<component t:x="274" t:y="97" name="mile" t:title="number" t:color="orange1">
<t:implementation.python script="number.py"/>
<service name="number"/>
<property>1</property>
</component>
<component t:x="484" t:y="68" name="name2" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>id</property>
</component>
<component t:x="226" t:y="29" name="lesser" t:title="lt" t:color="magenta1">
<t:implementation.python script="lesser.py"/>
<service name="lesser"/>
<reference target="distance" name="value1"/>
<reference target="mile" name="value2"/>
</component>
<component t:x="378" t:y="25" name="text2" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>jane</property>
</component>
<component t:x="227" t:y="240" name="nothing" t:title="nothing" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="nothing"/>
</component>
<component t:x="132" t:y="31" name="if" t:title="if" t:color="magenta1">
<t:implementation.python script="if_.py"/>
<service name="if"/>
<reference target="lesser" name="condition"/>
<reference target="assoc" name="then"/>
<reference target="nothing" name="else"/>
</component>
<component t:x="600" t:y="113" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>joe</property>
</component>
<service name="opened" promote="opened"/>
<component t:x="0" t:y="22" name="opened" t:title="when page opened" t:color="green1">
<t:implementation.python script="opened.py"/>
<service name="opened" t:visible="false"/>
<reference target="if" name="content"/>
</component>
<component t:x="175" t:y="198" name="assoc" t:title="assoc" t:color="orange1">
<t:implementation.python script="assoc.py"/>
<service name="assoc"/>
<reference target="name3" name="name"/>
<reference target="text3" name="value"/>
</component>
<component t:x="331" t:y="383" name="text3" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>jane</property>
</component>
<component t:x="218" t:y="195" name="name3" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>near</property>
</component>
<component t:x="216" t:y="23" name="distance" t:title="distance" t:color="red1">
<t:implementation.python script="distance.py"/>
<service name="distance"/>
<reference target="location" name="location1"/>
<reference target="location2" name="location2"/>
</component>
<component t:x="430" t:y="178" name="location" t:title="location" t:color="red1">
<t:implementation.python script="location.py"/>
<service name="location"/>
<reference target="text2" name="user"/>
</component>
<component t:x="429" t:y="234" name="location2" t:title="location" t:color="red1">
<t:implementation.python script="location.py"/>
<service name="location"/>
<reference target="text" name="user"/>
</component>
<component t:x="234" t:y="25" name="fbfriend" t:color="yellow1">
<t:implementation.python script="item.py"/>
<service name="item"/>
<property name="property"/>
</component>
<component t:x="233" t:y="97" name="fbfriends" t:title="facebook friends" t:color="blue1">
<t:implementation.python script="fbfriends.py"/>
<service name="fbfriends"/>
<reference target="find" name="id"/>
</component>
<component t:x="352" t:y="96" name="find" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name" name="name"/>
<reference target="params" name="assoc"/>
</component>
<component t:x="453" t:y="97" name="name" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>fbid</property>
</component>
<component t:x="453" t:y="138" name="params" t:title="?params" t:color="green1">
<t:implementation.python script="params.py"/>
<service name="params"/>
<property>fbid=1234567</property>
</component>
<component t:x="274" t:y="97" name="mile" t:title="number" t:color="orange1">
<t:implementation.python script="number.py"/>
<service name="number"/>
<property>1</property>
</component>
<component t:x="484" t:y="68" name="name2" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>id</property>
</component>
<component t:x="226" t:y="29" name="lesser" t:title="lt" t:color="magenta1">
<t:implementation.python script="lesser.py"/>
<service name="lesser"/>
<reference target="distance" name="value1"/>
<reference target="mile" name="value2"/>
</component>
<component t:x="378" t:y="25" name="text2" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>jane</property>
</component>
<component t:x="227" t:y="240" name="nothing" t:title="nothing" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="nothing"/>
</component>
<component t:x="132" t:y="31" name="if" t:title="if" t:color="magenta1">
<t:implementation.python script="if_.py"/>
<service name="if"/>
<reference target="lesser" name="condition"/>
<reference target="assoc" name="then"/>
<reference target="nothing" name="else"/>
</component>
<component t:x="600" t:y="113" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>joe</property>
</component>
<service name="opened" promote="opened"/>
<component t:x="0" t:y="22" name="opened" t:title="when page opened" t:color="green1">
<t:implementation.python script="opened.py"/>
<service name="opened" t:visible="false"/>
<reference target="if" name="content"/>
</component>
<component t:x="175" t:y="198" name="assoc" t:title="assoc" t:color="orange1">
<t:implementation.python script="assoc.py"/>
<service name="assoc"/>
<reference target="name3" name="name"/>
<reference target="text3" name="value"/>
</component>
<component t:x="331" t:y="383" name="text3" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>jane</property>
</component>
<component t:x="218" t:y="195" name="name3" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>near</property>
</component>
<component t:x="216" t:y="23" name="distance" t:title="distance" t:color="red1">
<t:implementation.python script="distance.py"/>
<service name="distance"/>
<reference target="location" name="location1"/>
<reference target="location2" name="location2"/>
</component>
<component t:x="430" t:y="178" name="location" t:title="location" t:color="red1">
<t:implementation.python script="location.py"/>
<service name="location"/>
<reference target="text2" name="user"/>
</component>
<component t:x="429" t:y="234" name="location2" t:title="location" t:color="red1">
<t:implementation.python script="location.py"/>
<service name="location"/>
<reference target="text" name="user"/>
</component>
</composite>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<DIV id="page"/>

View file

@ -18,106 +18,106 @@
* under the License.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://nearme2" name="nearme2">
<service name="every" promote="every"/>
<component t:x="0" t:y="25" name="every" t:title="every n secs" t:color="green1">
<t:implementation.python script="every.py"/>
<service name="every" t:visible="false"/>
<property>60</property>
<reference target="gtalksend" name="content"/>
</component>
<component t:x="100" t:y="25" name="gtalksend" t:title="send gtalk" t:color="blue1">
<t:implementation.python script="gtalksend.py"/>
<service name="gtalksend"/>
<reference target="filter" name="jid"/>
<reference target="user" name="to"/>
<reference target="text" name="msg"/>
</component>
<component t:x="184" t:y="54" name="user" t:title="user" t:color="green1">
<t:implementation.python script="user.py"/>
<service name="user"/>
<property name="user"/>
</component>
<component t:x="183" t:y="97" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>Hey I'm here!</property>
</component>
<component t:x="184" t:y="24" name="filter" t:title="filter" t:color="yellow1">
<t:implementation.python script="filter_.py"/>
<service name="filter"/>
<reference target="fbfriend" name="item"/>
<reference target="lesser" name="condition"/>
<reference target="fbfriends" name="list"/>
</component>
<component t:x="234" t:y="25" name="fbfriend" t:color="yellow1">
<t:implementation.python script="item.py"/>
<service name="item"/>
<property name="property"/>
</component>
<component t:x="233" t:y="97" name="fbfriends" t:title="facebook friends" t:color="blue1">
<t:implementation.python script="fbfriends.py"/>
<service name="fbfriends"/>
<reference target="find" name="id"/>
</component>
<component t:x="352" t:y="96" name="find" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name" name="name"/>
<reference target="params" name="assoc"/>
</component>
<component t:x="453" t:y="97" name="name" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>fbid</property>
</component>
<component t:x="453" t:y="138" name="params" t:title="?params" t:color="green1">
<t:implementation.python script="params.py"/>
<service name="params"/>
<property>fbid=1234567</property>
</component>
<component t:x="235" t:y="67" name="lesser" t:title="lt" t:color="magenta1">
<t:implementation.python script="lesser.py"/>
<service name="lesser"/>
<reference target="subtract" name="value1"/>
<reference target="mile" name="value2"/>
</component>
<component t:x="274" t:y="97" name="mile" t:title="number" t:color="orange1">
<t:implementation.python script="number.py"/>
<service name="number"/>
<property>1</property>
</component>
<component t:x="274" t:y="67" name="subtract" t:title="-" t:color="magenta1">
<t:implementation.python script="subtract.py"/>
<service name="subtract">
<documentation>-</documentation>
</service>
<reference target="location" name="value1"/>
<reference target="location2" name="value2"/>
</component>
<component t:x="316" t:y="68" name="location" t:title="location" t:color="red1">
<t:implementation.python script="location.py"/>
<service name="location"/>
<reference target="find2" name="user"/>
</component>
<component t:x="316" t:y="122" name="location2" t:title="location" t:color="red1">
<t:implementation.python script="location.py"/>
<service name="location"/>
<reference target="user2" name="user"/>
</component>
<component t:x="386" t:y="118" name="user2" t:title="user" t:color="green1">
<t:implementation.python script="user.py"/>
<service name="user"/>
<property name="user"/>
</component>
<component t:x="386" t:y="69" name="find2" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name2" name="name"/>
<reference target="fbfriend" name="assoc"/>
</component>
<component t:x="484" t:y="68" name="name2" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>id</property>
</component>
<service name="every" promote="every"/>
<component t:x="0" t:y="25" name="every" t:title="every n secs" t:color="green1">
<t:implementation.python script="every.py"/>
<service name="every" t:visible="false"/>
<property>60</property>
<reference target="gtalksend" name="content"/>
</component>
<component t:x="100" t:y="25" name="gtalksend" t:title="send gtalk" t:color="blue1">
<t:implementation.python script="gtalksend.py"/>
<service name="gtalksend"/>
<reference target="filter" name="jid"/>
<reference target="user" name="to"/>
<reference target="text" name="msg"/>
</component>
<component t:x="184" t:y="54" name="user" t:title="user" t:color="green1">
<t:implementation.python script="user.py"/>
<service name="user"/>
<property name="user"/>
</component>
<component t:x="183" t:y="97" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<service name="text"/>
<property>Hey I'm here!</property>
</component>
<component t:x="184" t:y="24" name="filter" t:title="filter" t:color="yellow1">
<t:implementation.python script="filter_.py"/>
<service name="filter"/>
<reference target="fbfriend" name="item"/>
<reference target="lesser" name="condition"/>
<reference target="fbfriends" name="list"/>
</component>
<component t:x="234" t:y="25" name="fbfriend" t:color="yellow1">
<t:implementation.python script="item.py"/>
<service name="item"/>
<property name="property"/>
</component>
<component t:x="233" t:y="97" name="fbfriends" t:title="facebook friends" t:color="blue1">
<t:implementation.python script="fbfriends.py"/>
<service name="fbfriends"/>
<reference target="find" name="id"/>
</component>
<component t:x="352" t:y="96" name="find" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name" name="name"/>
<reference target="params" name="assoc"/>
</component>
<component t:x="453" t:y="97" name="name" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>fbid</property>
</component>
<component t:x="453" t:y="138" name="params" t:title="?params" t:color="green1">
<t:implementation.python script="params.py"/>
<service name="params"/>
<property>fbid=1234567</property>
</component>
<component t:x="235" t:y="67" name="lesser" t:title="lt" t:color="magenta1">
<t:implementation.python script="lesser.py"/>
<service name="lesser"/>
<reference target="subtract" name="value1"/>
<reference target="mile" name="value2"/>
</component>
<component t:x="274" t:y="97" name="mile" t:title="number" t:color="orange1">
<t:implementation.python script="number.py"/>
<service name="number"/>
<property>1</property>
</component>
<component t:x="274" t:y="67" name="subtract" t:title="-" t:color="magenta1">
<t:implementation.python script="subtract.py"/>
<service name="subtract">
<documentation>-</documentation>
</service>
<reference target="location" name="value1"/>
<reference target="location2" name="value2"/>
</component>
<component t:x="316" t:y="68" name="location" t:title="location" t:color="red1">
<t:implementation.python script="location.py"/>
<service name="location"/>
<reference target="find2" name="user"/>
</component>
<component t:x="316" t:y="122" name="location2" t:title="location" t:color="red1">
<t:implementation.python script="location.py"/>
<service name="location"/>
<reference target="user2" name="user"/>
</component>
<component t:x="386" t:y="118" name="user2" t:title="user" t:color="green1">
<t:implementation.python script="user.py"/>
<service name="user"/>
<property name="user"/>
</component>
<component t:x="386" t:y="69" name="find2" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<service name="find"/>
<reference target="name2" name="name"/>
<reference target="fbfriend" name="assoc"/>
</component>
<component t:x="484" t:y="68" name="name2" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<service name="name"/>
<property>id</property>
</component>
</composite>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<DIV id="page"/>

View file

@ -17,54 +17,44 @@
* specific language governing permissions and limitations
* under the License.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
targetNamespace="http://store"
name="store">
<service name="Store" promote="Store"/>
<service name="ShoppingCart" promote="ShoppingCart"/>
<component name="Store" t:color="green1">
<t:implementation.python script="store.py"/>
<service name="Widget">
<t:binding.http uri="store"/>
</service>
<reference name="catalog" target="Catalog"/>
<reference name="shoppingCart" target="ShoppingCart"/>
<reference name="shoppingTotal" target="ShoppingCart"/>
</component>
<component name="Catalog" t:color="yellow1">
<t:implementation.python script="fruits-catalog.py"/>
<property name="currencyCode">USD</property>
<service name="Catalog">
<t:binding.jsonrpc uri="catalog"/>
</service>
<reference name="currencyConverter" target="CurrencyConverter"/>
</component>
<component name="ShoppingCart" t:color="magenta1">
<t:implementation.python script="shopping-cart.py"/>
<service name="ShoppingCart">
<t:binding.http uri="shoppingCart"/>
</service>
<reference name="cache" target="Cache"/>
</component>
<component name="CurrencyConverter" t:color="blue1">
<t:implementation.python script="currency-converter.py"/>
<service name="CurrencyConverter">
<t:binding.jsonrpc uri="currencyConverter"/>
</service>
</component>
<component name="Cache" t:color="orange1">
<implementation.cpp path="../../components/cache" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>
<property name="servers">localhost:11211</property>
</component>
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://store" name="store">
<service name="Store" promote="Store"/>
<service name="ShoppingCart" promote="ShoppingCart"/>
<component name="Store" t:color="green1">
<t:implementation.python script="store.py"/>
<service name="Widget">
<t:binding.http uri="store"/>
</service>
<reference name="catalog" target="Catalog"/>
<reference name="shoppingCart" target="ShoppingCart"/>
<reference name="shoppingTotal" target="ShoppingCart"/>
</component>
<component name="Catalog" t:color="yellow1">
<t:implementation.python script="fruits-catalog.py"/>
<property>USD</property>
<service name="Catalog">
<t:binding.jsonrpc uri="catalog"/>
</service>
<reference name="currencyConverter" target="CurrencyConverter"/>
</component>
<component name="ShoppingCart" t:color="magenta1">
<t:implementation.python script="shopping-cart.py"/>
<service name="ShoppingCart">
<t:binding.http uri="shoppingCart"/>
</service>
<reference name="cache" target="Cache"/>
</component>
<component name="CurrencyConverter" t:color="blue1">
<t:implementation.python script="currency-converter.py"/>
<service name="CurrencyConverter">
<t:binding.jsonrpc uri="currencyConverter"/>
</service>
</component>
<component name="Cache" t:color="orange1">
<implementation.cpp path="../../components/cache" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>
<property>localhost:11211</property>
</component>
</composite>

View file

@ -1,32 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
* 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.
-->
<div id="page">
<span id="storeh1" class="h1" style="position:absolute; left: 0px; top: 0px"><h1>Store</h1></span>
<span id="catalogh2" class="h2" style="position:absolute; left: 0px; top: 40px"><h2>Catalog</h2></span>
<span id="addToCart" class="button" style="position:absolute; left: 0px; top: 160px"><input type="button" value="Add to Cart"/></span>
<span id="carth2" class="h2" style="position:absolute; left: 0px; top: 200px"><h2>Your Shopping Cart</h2></span>
<span id="total" class="text" style="position:absolute; left: 0px; top: 300px"><span>total</span></span>
<span id="checkout" class="button" style="position:absolute; left: 0px; top: 340px"><input type="button" value="Checkout"/></span>
<span id="empty" class="button" style="position:absolute; left: 120px; top: 340px"><input type="button" value="Empty"/></span>
<span id="feed" class="link" style="position:absolute; left: 240px; top: 340px"><a href="shoppingCart/"><span>(feed)</span></a></span>
</div>
<DIV id="page">
<SPAN id="storeh1" class="h1" style="position: absolute; top: 0px; left: 0px; ">
<H1>Store</H1>
</SPAN>
<SPAN id="catalogh2" class="h2" style="position: absolute; top: 40px; left: 0px; ">
<H2>Catalog</H2>
</SPAN>
<SPAN id="addToCart" class="button" style="position: absolute; top: 160px; left: 0px; ">
<INPUT type="button" value="Add to Cart"/>
</SPAN>
<SPAN id="carth2" class="h2" style="position: absolute; top: 200px; left: 0px; ">
<H2>Your Shopping Cart</H2>
</SPAN>
<SPAN id="total" class="text" style="position: absolute; top: 300px; left: 0px; ">
<SPAN>total</SPAN>
</SPAN>
<SPAN id="checkout" class="button" style="position: absolute; top: 340px; left: 0px; ">
<INPUT type="button" value="Checkout"/>
</SPAN>
<SPAN id="empty" class="button" style="position: absolute; top: 340px; left: 120px; ">
<INPUT type="button" value="Empty"/>
</SPAN>
<SPAN id="feed" class="link" style="position: absolute; top: 340px; left: 240px; ">
<A href="shoppingCart/">
<SPAN>(feed)</SPAN>
</A>
</SPAN>
</DIV>

View file

@ -17,54 +17,44 @@
* specific language governing permissions and limitations
* under the License.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
targetNamespace="http://store"
name="store">
<service name="Store" promote="Store"/>
<service name="ShoppingCart" promote="ShoppingCart"/>
<component name="Store" t:color="green1">
<t:implementation.python script="store.py"/>
<service name="Widget">
<t:binding.http uri="store"/>
</service>
<reference name="catalog" target="Catalog" t:align="bottom"/>
<reference name="shoppingCart" target="ShoppingCart"/>
<reference name="shoppingTotal" target="ShoppingCart"/>
</component>
<component name="Catalog" t:color="yellow1">
<t:implementation.python script="fruits-catalog.py"/>
<property name="currencyCode">USD</property>
<service name="Catalog" t:align="top">
<t:binding.jsonrpc uri="catalog"/>
</service>
<reference name="currencyConverter" t:align="bottom" target="CurrencyConverter"/>
</component>
<component name="ShoppingCart" t:color="magenta1">
<t:implementation.python script="shopping-cart.py"/>
<service name="ShoppingCart">
<t:binding.http uri="shoppingCart"/>
</service>
<reference name="cache" target="Cache"/>
</component>
<component name="CurrencyConverter" t:color="blue1">
<t:implementation.python script="currency-converter.py"/>
<service name="CurrencyConverter" t:align="top">
<t:binding.jsonrpc uri="currencyConverter"/>
</service>
</component>
<component name="Cache" t:color="orange1">
<implementation.cpp path="../../components/cache" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>
<property name="servers">localhost:11211</property>
</component>
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://store" name="store">
<service name="Store" promote="Store"/>
<service name="ShoppingCart" promote="ShoppingCart"/>
<component name="Store" t:color="green1">
<t:implementation.python script="store.py"/>
<service name="Widget">
<t:binding.http uri="store"/>
</service>
<reference name="catalog" target="Catalog" t:align="bottom"/>
<reference name="shoppingCart" target="ShoppingCart"/>
<reference name="shoppingTotal" target="ShoppingCart"/>
</component>
<component name="Catalog" t:color="yellow1">
<t:implementation.python script="fruits-catalog.py"/>
<property>USD</property>
<service name="Catalog" t:align="top">
<t:binding.jsonrpc uri="catalog"/>
</service>
<reference name="currencyConverter" t:align="bottom" target="CurrencyConverter"/>
</component>
<component name="ShoppingCart" t:color="magenta1">
<t:implementation.python script="shopping-cart.py"/>
<service name="ShoppingCart">
<t:binding.http uri="shoppingCart"/>
</service>
<reference name="cache" target="Cache"/>
</component>
<component name="CurrencyConverter" t:color="blue1">
<t:implementation.python script="currency-converter.py"/>
<service name="CurrencyConverter" t:align="top">
<t:binding.jsonrpc uri="currencyConverter"/>
</service>
</component>
<component name="Cache" t:color="orange1">
<implementation.cpp path="../../components/cache" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>
<property>localhost:11211</property>
</component>
</composite>

View file

@ -1,32 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
* 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.
-->
<div id="page">
<span id="storeh1" class="h1" style="position:absolute; left: 0px; top: 0px"><h1>Store</h1></span>
<span id="catalogh2" class="h2" style="position:absolute; left: 0px; top: 40px"><h2>Catalog</h2></span>
<span id="addToCart" class="button" style="position:absolute; left: 0px; top: 160px"><input type="button" value="Add to Cart"/></span>
<span id="carth2" class="h2" style="position:absolute; left: 0px; top: 200px"><h2>Your Shopping Cart</h2></span>
<span id="total" class="text" style="position:absolute; left: 0px; top: 300px"><span>total</span></span>
<span id="checkout" class="button" style="position:absolute; left: 0px; top: 340px"><input type="button" value="Checkout"/></span>
<span id="empty" class="button" style="position:absolute; left: 120px; top: 340px"><input type="button" value="Empty"/></span>
<span id="feed" class="link" style="position:absolute; left: 240px; top: 340px"><a href="shoppingCart/"><span>(feed)</span></a></span>
</div>
<DIV id="page">
<SPAN id="storeh1" class="h1" style="position: absolute; top: 0px; left: 0px; ">
<H1>Store</H1>
</SPAN>
<SPAN id="catalogh2" class="h2" style="position: absolute; top: 40px; left: 0px; ">
<H2>Catalog</H2>
</SPAN>
<SPAN id="addToCart" class="button" style="position: absolute; top: 160px; left: 0px; ">
<INPUT type="button" value="Add to Cart"/>
</SPAN>
<SPAN id="carth2" class="h2" style="position: absolute; top: 200px; left: 0px; ">
<H2>Your Shopping Cart</H2>
</SPAN>
<SPAN id="total" class="text" style="position: absolute; top: 300px; left: 0px; ">
<SPAN>total</SPAN>
</SPAN>
<SPAN id="checkout" class="button" style="position: absolute; top: 340px; left: 0px; ">
<INPUT type="button" value="Checkout"/>
</SPAN>
<SPAN id="empty" class="button" style="position: absolute; top: 340px; left: 120px; ">
<INPUT type="button" value="Empty"/>
</SPAN>
<SPAN id="feed" class="link" style="position: absolute; top: 340px; left: 240px; ">
<A href="shoppingCart/">
<SPAN>(feed)</SPAN>
</A>
</SPAN>
</DIV>

View file

@ -17,54 +17,44 @@
* specific language governing permissions and limitations
* under the License.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
targetNamespace="http://store"
name="store">
<service name="Store" promote="Store"/>
<service name="ShoppingCart" promote="ShoppingCart"/>
<component name="Store" t:color="green1">
<t:implementation.python script="store.py"/>
<service name="Widget">
<t:binding.http uri="store"/>
</service>
<reference name="catalog" target="Catalog"/>
<reference name="shoppingCart" target="ShoppingCart"/>
<reference name="shoppingTotal" target="ShoppingCart"/>
</component>
<component name="Catalog" t:color="yellow1">
<t:implementation.python script="fruits-catalog.py"/>
<property name="currencyCode">USD</property>
<service name="Catalog">
<t:binding.jsonrpc uri="catalog"/>
</service>
<reference name="currencyConverter" t:align="bottom" target="CurrencyConverter"/>
</component>
<component name="ShoppingCart" t:color="magenta1">
<t:implementation.python script="shopping-cart.py"/>
<service name="ShoppingCart">
<t:binding.http uri="shoppingCart"/>
</service>
<reference name="cache" target="Cache"/>
</component>
<component name="CurrencyConverter" t:color="blue1">
<t:implementation.python script="currency-converter.py"/>
<service name="CurrencyConverter" t:align="top">
<t:binding.jsonrpc uri="currencyConverter"/>
</service>
</component>
<component name="Cache" t:color="orange1">
<implementation.cpp path="../../components/cache" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>
<property name="servers">localhost:11211</property>
</component>
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://store" name="store">
<service name="Store" promote="Store"/>
<service name="ShoppingCart" promote="ShoppingCart"/>
<component name="Store" t:color="green1">
<t:implementation.python script="store.py"/>
<service name="Widget">
<t:binding.http uri="store"/>
</service>
<reference name="catalog" target="Catalog"/>
<reference name="shoppingCart" target="ShoppingCart"/>
<reference name="shoppingTotal" target="ShoppingCart"/>
</component>
<component name="Catalog" t:color="yellow1">
<t:implementation.python script="fruits-catalog.py"/>
<property>USD</property>
<service name="Catalog">
<t:binding.jsonrpc uri="catalog"/>
</service>
<reference name="currencyConverter" t:align="bottom" target="CurrencyConverter"/>
</component>
<component name="ShoppingCart" t:color="magenta1">
<t:implementation.python script="shopping-cart.py"/>
<service name="ShoppingCart">
<t:binding.http uri="shoppingCart"/>
</service>
<reference name="cache" target="Cache"/>
</component>
<component name="CurrencyConverter" t:color="blue1">
<t:implementation.python script="currency-converter.py"/>
<service name="CurrencyConverter" t:align="top">
<t:binding.jsonrpc uri="currencyConverter"/>
</service>
</component>
<component name="Cache" t:color="orange1">
<implementation.cpp path="../../components/cache" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>
<property>localhost:11211</property>
</component>
</composite>

View file

@ -1,32 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
* 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.
-->
<div id="page">
<span id="storeh1" class="h1" style="position:absolute; left: 0px; top: 0px"><h1>Store</h1></span>
<span id="catalogh2" class="h2" style="position:absolute; left: 0px; top: 40px"><h2>Catalog</h2></span>
<span id="addToCart" class="button" style="position:absolute; left: 0px; top: 160px"><input type="button" value="Add to Cart"/></span>
<span id="carth2" class="h2" style="position:absolute; left: 0px; top: 200px"><h2>Your Shopping Cart</h2></span>
<span id="total" class="text" style="position:absolute; left: 0px; top: 300px"><span>total</span></span>
<span id="checkout" class="button" style="position:absolute; left: 0px; top: 340px"><input type="button" value="Checkout"/></span>
<span id="empty" class="button" style="position:absolute; left: 120px; top: 340px"><input type="button" value="Empty"/></span>
<span id="feed" class="link" style="position:absolute; left: 240px; top: 340px"><a href="shoppingCart/"><span>(feed)</span></a></span>
</div>
<DIV id="page">
<SPAN id="storeh1" class="h1" style="position: absolute; top: 0px; left: 0px; ">
<H1>Store</H1>
</SPAN>
<SPAN id="catalogh2" class="h2" style="position: absolute; top: 40px; left: 0px; ">
<H2>Catalog</H2>
</SPAN>
<SPAN id="addToCart" class="button" style="position: absolute; top: 160px; left: 0px; ">
<INPUT type="button" value="Add to Cart"/>
</SPAN>
<SPAN id="carth2" class="h2" style="position: absolute; top: 200px; left: 0px; ">
<H2>Your Shopping Cart</H2>
</SPAN>
<SPAN id="total" class="text" style="position: absolute; top: 300px; left: 0px; ">
<SPAN>total</SPAN>
</SPAN>
<SPAN id="checkout" class="button" style="position: absolute; top: 340px; left: 0px; ">
<INPUT type="button" value="Checkout"/>
</SPAN>
<SPAN id="empty" class="button" style="position: absolute; top: 340px; left: 120px; ">
<INPUT type="button" value="Empty"/>
</SPAN>
<SPAN id="feed" class="link" style="position: absolute; top: 340px; left: 240px; ">
<A href="shoppingCart/">
<SPAN>(feed)</SPAN>
</A>
</SPAN>
</DIV>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://test" name="test"/>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<DIV id="page"/>

View file

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://testlogic" name="testlogic">
<service name="if" promote="if"/>
<component t:x="34" t:y="24" name="if" t:title="if" t:color="magenta1">
<t:implementation.python script="nuvem/if_.py"/>
<service name="if"/>
<reference target="greater" name="condition"/>
<reference target="text" name="then"/>
<reference target="text2" name="else"/>
</component>
<component t:x="123" t:y="21" name="item" t:title="item" t:color="yellow1">
<t:implementation.python script="nuvem/item.py"/>
<service name="item"/>
<property>item</property>
</component>
<component t:x="75" t:y="24" name="greater" t:title="gt" t:color="magenta1">
<t:implementation.python script="nuvem/greater.py"/>
<service name="greater"/>
<reference target="item" name="value1"/>
<reference target="number" name="value2"/>
</component>
<component t:x="118" t:y="66" name="number" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>5</property>
</component>
<component t:x="78" t:y="118" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>greater than 5</property>
</component>
<component t:x="76" t:y="162" name="text2" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>not greater than 5</property>
</component>
</composite>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<DIV id="page"/>

View file

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://testsocial" name="testsocial">
<component t:x="317" t:y="44" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>100001053301307</property>
</component>
<component t:x="166" t:y="52" name="fbprofile" t:title="facebook profile" t:color="blue1">
<t:implementation.python script="nuvem/fbprofile.py"/>
<service name="fbprofile"/>
<reference target="text" name="id"/>
<reference name="fb" t:visible="false">
<t:binding.http uri="https://graph.facebook.com"/>
</reference>
</component>
<component t:x="111" t:y="18" name="assoc" t:title="assoc" t:color="orange1">
<t:implementation.python script="nuvem/assoc.py"/>
<service name="assoc"/>
<reference target="name" name="name"/>
<reference target="fbprofile" name="value"/>
</component>
<component t:x="187" t:y="155" name="assoc2" t:title="assoc" t:color="orange1">
<t:implementation.python script="nuvem/assoc.py"/>
<service name="assoc"/>
<reference target="name2" name="name"/>
<reference target="twprofile" name="value"/>
</component>
<component t:x="169" t:y="17" name="name" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>facebook</property>
</component>
<component t:x="68" t:y="350" name="list" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="assoc" name="first"/>
<reference target="list2" name="rest"/>
</component>
<component t:x="66" t:y="14" name="name3" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>me360</property>
</component>
<component t:x="131" t:y="12" name="me360" t:title="assoc" t:color="orange1">
<t:implementation.python script="nuvem/assoc.py"/>
<service name="assoc"/>
<reference target="name3" name="name"/>
<reference target="list" name="value"/>
</component>
<service name="page" promote="page"/>
<component t:x="0" t:y="12" name="page" t:title="when page opened" t:color="green1">
<t:implementation.python script="nuvem/page.py"/>
<service name="page" t:visible="false">
<t:binding.http uri="index.html"/>
</service>
<reference target="me360" name="content"/>
</component>
<component t:x="269" t:y="163" name="list2" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="assoc2" name="first"/>
<reference name="rest"/>
</component>
<component t:x="404" t:y="162" name="name2" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>twitter</property>
</component>
<component t:x="505" t:y="204" name="text3" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>jsdelfino</property>
</component>
<component t:x="410" t:y="205" name="twprofile" t:title="twitter profile" t:color="blue1">
<t:implementation.python script="nuvem/twprofile.py"/>
<service name="twprofile"/>
<reference target="text3" name="id"/>
<reference name="tw" t:visible="false">
<t:binding.http uri="http://api.twitter.com/1/users/show.json"/>
</reference>
</component>
</composite>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<DIV id="page"/>

View file

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://testtext" name="testtext">
<service name="contains" promote="contains"/>
<component t:x="34" t:y="14" name="contains" t:title="contains" t:color="magenta1">
<t:implementation.python script="nuvem/contains.py"/>
<service name="contains"/>
<reference target="text10" name="search"/>
<reference target="text9" name="string"/>
</component>
<service name="split" promote="split"/>
<component t:x="36" t:y="152" name="split" t:title="split" t:color="magenta1">
<t:implementation.python script="nuvem/split.py"/>
<service name="split"/>
<reference target="text11" name="separator"/>
<reference target="text12" name="string"/>
</component>
<service name="join" promote="join"/>
<component t:x="543" t:y="20" name="join" t:title="join" t:color="magenta1">
<t:implementation.python script="nuvem/join.py"/>
<service name="join"/>
<reference target="text6" name="separator"/>
<reference target="list" name="list"/>
</component>
<service name="replace" promote="replace"/>
<component t:x="310" t:y="21" name="replace" t:title="replace" t:color="magenta1">
<t:implementation.python script="nuvem/replace.py"/>
<service name="replace"/>
<reference target="text4" name="from"/>
<reference target="text5" name="to"/>
<reference target="text3" name="string"/>
</component>
<service name="lowercase" promote="lowercase"/>
<component t:x="305" t:y="307" name="lowercase" t:title="lowercase" t:color="magenta1">
<t:implementation.python script="nuvem/lowercase.py"/>
<service name="lowercase"/>
<reference target="text2" name="string"/>
</component>
<service name="uppercase" promote="uppercase"/>
<component t:x="306" t:y="222" name="uppercase" t:title="uppercase" t:color="magenta1">
<t:implementation.python script="nuvem/uppercase.py"/>
<service name="uppercase"/>
<reference target="text" name="string"/>
</component>
<component t:x="391" t:y="223" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>abc</property>
</component>
<component t:x="391" t:y="150" name="text2" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>ABC</property>
</component>
<component t:x="376" t:y="81" name="text3" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>abcxdefxghi</property>
</component>
<component t:x="377" t:y="20" name="text4" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>x</property>
</component>
<component t:x="376" t:y="63" name="text5" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>y</property>
</component>
<component t:x="88" t:y="256" name="list" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="text7" name="first"/>
<reference target="list2" name="rest"/>
</component>
<component t:x="165" t:y="288" name="list2" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="text8" name="first"/>
<reference name="rest"/>
</component>
<component t:x="165" t:y="262" name="text7" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>abc</property>
</component>
<component t:x="244" t:y="302" name="text8" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>def</property>
</component>
<component t:x="107" t:y="56" name="text9" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>abcdef</property>
</component>
<component t:x="107" t:y="14" name="text10" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>cd</property>
</component>
<component t:x="587" t:y="20" name="text6" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>x</property>
</component>
<component t:x="85" t:y="156" name="text11" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>x</property>
</component>
<component t:x="89" t:y="193" name="text12" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>abcxdefxghi</property>
</component>
</composite>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<DIV id="page"/>

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://testurl" name="testurl">
<service name="host" promote="host"/>
<component t:x="29" t:y="14" name="host" t:title="host" t:color="green1">
<t:implementation.python script="nuvem/host.py"/>
<service name="host"/>
<property name="host"/>
</component>
<service name="path" promote="path"/>
<component t:x="29" t:y="80" name="path" t:title="path" t:color="green1">
<t:implementation.python script="nuvem/path.py"/>
<service name="path"/>
<property name="path"/>
</component>
<service name="params" promote="params"/>
<component t:x="28" t:y="141" name="params" t:title="?params" t:color="green1">
<t:implementation.python script="nuvem/params.py"/>
<service name="params"/>
<property name="params"/>
</component>
<service name="user" promote="user"/>
<component t:x="25" t:y="205" name="user" t:title="user" t:color="green1">
<t:implementation.python script="nuvem/user.py"/>
<service name="user"/>
<property name="user"/>
</component>
<service name="realm" promote="realm"/>
<component t:x="22" t:y="265" name="realm" t:title="realm" t:color="green1">
<t:implementation.python script="nuvem/realm.py"/>
<service name="realm"/>
<property name="realm"/>
</component>
<service name="email" promote="email"/>
<component t:x="26" t:y="328" name="email" t:title="email" t:color="green1">
<t:implementation.python script="nuvem/email.py"/>
<service name="email"/>
<property name="email"/>
</component>
</composite>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<DIV id="page"/>

View file

@ -0,0 +1,281 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://testvalues" name="testvalues">
<service name="text" promote="text"/>
<component t:x="7" t:y="14" name="text" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>xyz</property>
</component>
<service name="name" promote="name"/>
<component t:x="5" t:y="71" name="name" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>abc</property>
</component>
<service name="true" promote="true"/>
<component t:x="5" t:y="140" name="true" t:title="true" t:color="orange1">
<t:implementation.python script="nuvem/true_.py"/>
<service name="true"/>
</component>
<service name="false" promote="false"/>
<component t:x="6" t:y="205" name="false" t:title="false" t:color="orange1">
<t:implementation.python script="nuvem/false_.py"/>
<service name="false"/>
</component>
<service name="nothing" promote="nothing"/>
<component t:x="4" t:y="263" name="nothing" t:title="nothing" t:color="orange1">
<t:implementation.python script="nuvem/nothing.py"/>
<service name="nothing"/>
</component>
<component t:x="190" t:y="250" name="list" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="number2" name="first"/>
<reference target="list2" name="rest"/>
</component>
<component t:x="286" t:y="213" name="list2" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="number3" name="first"/>
<reference name="rest"/>
</component>
<component t:x="285" t:y="170" name="number2" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>123</property>
</component>
<component t:x="359" t:y="214" name="number3" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>456</property>
</component>
<service name="find" promote="find"/>
<component t:x="728" t:y="9" name="find" t:title="find by name" t:color="yellow1">
<t:implementation.python script="nuvem/find.py"/>
<service name="find"/>
<reference target="name3" name="name"/>
<reference target="list3" name="assoc"/>
</component>
<component t:x="283" t:y="351" name="name3" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>d</property>
</component>
<component t:x="281" t:y="390" name="list3" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="assoc2" name="first"/>
<reference target="list4" name="rest"/>
</component>
<component t:x="360" t:y="392" name="assoc2" t:title="assoc" t:color="orange1">
<t:implementation.python script="nuvem/assoc.py"/>
<service name="assoc"/>
<reference target="name4" name="name"/>
<reference target="text3" name="value"/>
</component>
<component t:x="420" t:y="390" name="name4" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>a</property>
</component>
<component t:x="421" t:y="436" name="text3" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>abc</property>
</component>
<component t:x="358" t:y="487" name="list4" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="assoc3" name="first"/>
<reference name="rest"/>
</component>
<component t:x="433" t:y="485" name="assoc3" t:title="assoc" t:color="orange1">
<t:implementation.python script="nuvem/assoc.py"/>
<service name="assoc"/>
<reference target="name5" name="name"/>
<reference target="text4" name="value"/>
</component>
<component t:x="495" t:y="486" name="name5" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>d</property>
</component>
<component t:x="787" t:y="217" name="text4" t:title="text" t:color="orange1">
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property>def</property>
</component>
<component t:x="433" t:y="37" name="range" t:title="range" t:color="yellow1">
<t:implementation.python script="nuvem/range_.py"/>
<service name="range"/>
<reference target="number4" name="first"/>
<reference target="number5" name="last"/>
</component>
<component t:x="378" t:y="48" name="number4" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>0</property>
</component>
<component t:x="378" t:y="90" name="number5" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>10</property>
</component>
<service name="first" promote="first"/>
<component t:x="93" t:y="10" name="first" t:title="first item" t:color="yellow1">
<t:implementation.python script="nuvem/first.py"/>
<service name="first"/>
<reference target="list" name="list"/>
</component>
<service name="rest" promote="rest"/>
<component t:x="408" t:y="6" name="rest" t:title="rest of list" t:color="yellow1">
<t:implementation.python script="nuvem/rest.py"/>
<service name="rest"/>
<reference target="list5" name="list"/>
</component>
<component t:x="210" t:y="210" name="list5" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="number" name="first"/>
<reference target="list6" name="rest"/>
</component>
<component t:x="286" t:y="251" name="list6" t:title="make list" t:color="yellow1">
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="number7" name="first"/>
<reference name="rest"/>
</component>
<component t:x="284" t:y="207" name="number" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>12</property>
</component>
<component t:x="361" t:y="249" name="number7" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>34</property>
</component>
<service name="empty" promote="empty"/>
<component t:x="5" t:y="320" name="empty" t:title="empty list" t:color="yellow1">
<t:implementation.python script="nuvem/empty.py"/>
<service name="empty"/>
</component>
<service name="itemnb" promote="itemnb"/>
<component t:x="97" t:y="184" name="itemnb" t:title="item number" t:color="yellow1">
<t:implementation.python script="nuvem/itemnb.py"/>
<service name="itemnb"/>
<reference target="number8" name="index"/>
<reference target="foreach" name="list"/>
</component>
<component t:x="208" t:y="187" name="number8" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>3</property>
</component>
<component t:x="228" t:y="324" name="multiply" t:title="*" t:color="magenta1">
<t:implementation.python script="nuvem/multiply.py"/>
<service name="multiply">
<documentation>*</documentation>
</service>
<reference target="valueof" name="value1"/>
<reference target="number6" name="value2"/>
</component>
<component t:x="228" t:y="358" name="reverse" t:title="reverse" t:color="yellow1">
<t:implementation.python script="nuvem/reverse.py"/>
<service name="reverse"/>
<reference target="range" name="list"/>
</component>
<component t:x="225" t:y="293" name="name2" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>nb</property>
</component>
<service name="reduce" promote="reduce"/>
<component t:x="486" t:y="191" name="reduce" t:title="reduce" t:color="yellow1">
<t:implementation.python script="nuvem/reduce_.py"/>
<service name="reduce"/>
<reference target="name6" name="item"/>
<reference target="name7" name="accum"/>
<reference target="add" name="transform"/>
<reference target="range2" name="list"/>
</component>
<component t:x="449" t:y="259" name="name6" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>sum</property>
</component>
<component t:x="442" t:y="299" name="name7" t:title="name" t:color="orange1">
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property>i</property>
</component>
<component t:x="444" t:y="341" name="add" t:title="+" t:color="magenta1">
<t:implementation.python script="nuvem/add.py"/>
<service name="add">
<documentation>+</documentation>
</service>
<reference target="valueof2" name="value1"/>
<reference target="valueof3" name="value2"/>
</component>
<component t:x="444" t:y="437" name="range2" t:title="range" t:color="yellow1">
<t:implementation.python script="nuvem/range_.py"/>
<service name="range"/>
<reference target="number9" name="first"/>
<reference target="number10" name="last"/>
</component>
<component t:x="498" t:y="437" name="number9" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>0</property>
</component>
<component t:x="547" t:y="403" name="number10" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>10</property>
</component>
<component t:x="226" t:y="373" name="number6" t:title="number" t:color="orange1">
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property>2</property>
</component>
<component t:x="226" t:y="331" name="valueof" t:title="value of" t:color="orange1">
<t:implementation.python script="nuvem/valueof.py"/>
<service name="valueof"/>
<property>nb</property>
</component>
<component t:x="533" t:y="265" name="valueof2" t:title="value of" t:color="orange1">
<t:implementation.python script="nuvem/valueof.py"/>
<service name="valueof"/>
<property>sum</property>
</component>
<component t:x="533" t:y="307" name="valueof3" t:title="value of" t:color="orange1">
<t:implementation.python script="nuvem/valueof.py"/>
<service name="valueof"/>
<property>i</property>
</component>
<component t:x="193" t:y="226" name="foreach" t:title="foreach" t:color="yellow1">
<t:implementation.python script="nuvem/map_.py"/>
<service name="foreach"/>
<reference target="name2" name="item"/>
<reference target="multiply" name="transform"/>
<reference target="reverse" name="list"/>
</component>
</composite>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<DIV id="page"/>

View file

@ -1,240 +1,181 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
targetNamespace="http://tuscanyscatours.com/"
name="travel">
<service name="SCAToursUserInterface" promote="SCAToursUserInterface"/>
<component name="SCAToursUserInterface" t:color="green1">
<t:implementation.widget location="scatours.html"/>
<service name="Widget">
<t:binding.http uri="/scatours"/>
</service>
<reference name="scaToursCatalog" target="SCATours/SCAToursSearch" t:align="bottom">
<t:binding.jsonrpc/>
</reference>
<!-- Comment out multiple references wired to the same target -->
<!--
<reference name="scaToursBooking" target="SCATours/SCAToursBooking">
<t:binding.jsonrpc/>
</reference>
<reference name="scaToursCart" target="SCATours/SCAToursCart">
<t:binding.jsonrpc/>
</reference>
-->
</component>
<component name="SCATours">
<implementation.java class="com.tuscanyscatours.impl.SCAToursImpl"/>
<service name="SCAToursSearch" t:align="top">
<t:binding.jsonrpc/>
</service>
<!-- Comment out multiple services -->
<!--
<service name="SCAToursBooking">
<t:binding.jsonrpc/>
</service>
<service name="SCAToursCart">
<t:binding.jsonrpc/>
</service>
-->
<reference name="travelCatalogSearch" target="TravelCatalog/TravelCatalogSearch"/>
<reference name="tripBooking" target="TripBooking"/>
<!-- Comment out multiple references wired to the same target -->
<!--
<reference name="cartInitialize" target="ShoppingCart/CartInitialize"/>
-->
<reference name="cartCheckout" target="ShoppingCart/CartCheckout"/>
</component>
<component name="CreditCardPayment">
<implementation.java class="com.tuscanyscatours.payment.creditcard.impl.CreditCardPaymentImpl" />
<service name="CreditCardPayment">
<interface.wsdl interface="http://www.tuscanyscatours.com/CreditCardPayment/#wsdl.interface(CreditCardPayment)" />
<binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/>
<binding.sca/>
</service>
</component>
<component name="CurrencyConverter">
<implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl" />
<service name="CurrencyConverter"/>
</component>
<component name="HotelPartner" t:color="orange1">
<implementation.java class="com.tuscanyscatours.hotel.impl.HotelImpl"/>
<service name="Search">
<binding.ws name="searchws" uri="http://localhost:8086/Hotel/Search"/>
<!-- t:binding.jsonrpc name="searchjsonrpc"/-->
<callback>
<binding.ws/>
</callback>
</service>
<service name="Book"/>
</component>
<component name="FlightPartner" t:color="orange1">
<implementation.java class="com.tuscanyscatours.flight.impl.FlightImpl"/>
<service name="Search">
<interface.java interface="com.tuscanyscatours.common.Search"
callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
<binding.ws name="searchws" uri="http://localhost:8086/Flight/Search"/>
<t:binding.jsonrpc name="searchjsonrpc"/>
<callback>
<binding.ws/>
</callback>
</service>
<service name="Book"/>
</component>
<component name="CarPartner" t:color="orange1">
<implementation.java class="com.tuscanyscatours.car.impl.CarImpl"/>
<service name="Search">
<binding.ws name="searchws" uri="http://localhost:8086/Car/Search"/>
<t:binding.jsonrpc name="searchjsonrpc"/>
<callback>
<binding.ws/>
</callback>
</service>
<service name="Book"/>
</component>
<component name="TravelCatalog">
<implementation.java class="com.tuscanyscatours.travelcatalog.impl.TravelCatalogImpl"/>
<service name="TravelCatalogSearch"/>
<!-- Wire to placeholder component representing external endpoint -->
<reference name="hotelSearch" target="HotelSearch">
<binding.ws uri="http://localhost:8086/Hotel/Search"/>
<callback>
<binding.ws name="callback"
uri="http://localhost:8084/Hotel/SearchCallback"/>
</callback>
</reference>
<!-- Wire to placeholder component representing external endpoint -->
<reference name="flightSearch" target="FlightSearch">
<interface.java interface="com.tuscanyscatours.common.Search"
callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
<binding.ws uri="http://localhost:8086/Flight/Search"/>
<callback>
<binding.ws name="callback"
uri="http://localhost:8084/Flight/SearchCallback"/>
</callback>
</reference>
<!-- Wire to placeholder component representing external endpoint -->
<reference name="carSearch" target="CarSearch">
<binding.ws uri="http://localhost:8086/Car/Search"/>
<callback>
<binding.ws name="callback"
uri="http://localhost:8084/Car/SearchCallback"/>
</callback>
</reference>
<!-- Wire to placeholder component representing external endpoint -->
<reference name="tripSearch" target="TripSearch">
<binding.ws uri="http://localhost:8085/Trip/Search"/>
<callback>
<binding.ws name="callback"
uri="http://localhost:8084/Trip/SearchCallback"/>
</callback>
</reference>
<reference name="currencyConverter" target="CurrencyConverter">
</reference>
<property name="quoteCurrencyCode">GBP</property>
</component>
<component name="TripBooking">
<implementation.java class="com.tuscanyscatours.tripbooking.impl.TripBookingImpl"/>
<service name="TripBooking"/>
<reference name="hotelBook" target="HotelPartner/Book"/>
<reference name="flightBook" target="FlightPartner/Book"/>
<reference name="carBook" target="CarPartner/Book"/>
<reference name="tripBook" target="TripPartner/Book"/>
<reference name="cartUpdates" target="ShoppingCart/CartUpdates"/>
</component>
<component name="TripPartner" t:color="orange1">
<implementation.java class="com.tuscanyscatours.trip.impl.TripImpl"/>
<service name="Search">
<binding.ws name="searchws" uri="http://localhost:8085/Trip/Search"/>
<t:binding.jsonrpc name="searchjsonrpc"/>
<callback>
<binding.ws/>
</callback>
</service>
<service name="Book"/>
</component>
<component name="ShoppingCart">
<implementation.java class="com.tuscanyscatours.shoppingcart.impl.ShoppingCartImpl"/>
<reference name="cartStore" target="CartStore" t:align="bottom"/>
<!-- Wire to placeholder component representing external endpoint -->
<reference name="payment" target="Payment">
<binding.ws uri="http://localhost:8081/Payment" />
</reference>
</component>
<component name="CartStore" t:color="yellow1">
<!-- Add service element to specify alignment -->
<service name="CartStore" t:align="top"/>
<implementation.java class="com.tuscanyscatours.shoppingcart.impl.CartStoreImpl"/>
</component>
<component name="Payment">
<implementation.spring location="Payment-context.xml"/>
<service name="Payment">
<binding.ws uri="http://localhost:8081/Payment"/>
</service>
<!-- Wire to placeholder component representing external endpoint -->
<reference name="creditCardPaymentReference" target="CreditCardPayment">
<binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/>
</reference>
<reference name="emailGateway" target="EmailGateway"/>
<reference name="customerRegistry" target="CustomerRegistry"/>
<property name="transactionFee">1.23</property>
</component>
<component name="CustomerRegistry">
<implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" />
</component>
<component name="EmailGateway">
<implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" />
</component>
<!-- Add placeholder components representing external endpoints -->
<component name="HotelSearch" t:color="red1">
<service name="HotelSearch"/>
<implementation.java class="com.tuscanyscatours.PlaceHolderImpl" />
</component>
<component name="FlightSearch" t:color="red1">
<service name="FlightSearch"/>
<implementation.java class="com.tuscanyscatours.PlaceHolderImpl" />
</component>
<component name="CarSearch" t:color="red1">
<service name="CarSearch"/>
<implementation.java class="com.tuscanyscatours.PlaceHolderImpl" />
</component>
<component name="TripSearch" t:color="red1">
<service name="TripSearch"/>
<implementation.java class="com.tuscanyscatours.PlaceHolderImpl" />
</component>
</composite>
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://tuscanyscatours.com/" name="travel">
<service name="SCAToursUserInterface" promote="SCAToursUserInterface"/>
<component name="SCAToursUserInterface" t:color="green1">
<t:implementation.widget location="scatours.html"/>
<service name="Widget">
<t:binding.http uri="/scatours"/>
</service>
<reference name="scaToursCatalog" target="SCATours/SCAToursSearch" t:align="bottom">
<t:binding.jsonrpc></t:binding.jsonrpc>
</reference>
</component>
<component name="SCATours">
<implementation.java class="com.tuscanyscatours.impl.SCAToursImpl"/>
<service name="SCAToursSearch" t:align="top">
<t:binding.jsonrpc></t:binding.jsonrpc>
</service>
<reference name="travelCatalogSearch" target="TravelCatalog/TravelCatalogSearch"/>
<reference name="tripBooking" target="TripBooking"/>
<reference name="cartCheckout" target="ShoppingCart/CartCheckout"/>
</component>
<component name="CreditCardPayment">
<implementation.java class="com.tuscanyscatours.payment.creditcard.impl.CreditCardPaymentImpl"/>
<service name="CreditCardPayment">
<interface.wsdl interface="http://www.tuscanyscatours.com/CreditCardPayment/#wsdl.interface(CreditCardPayment)"/>
<binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/>
<binding.sca></binding.sca>
</service>
</component>
<component name="CurrencyConverter">
<implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl"/>
<service name="CurrencyConverter"/>
</component>
<component name="HotelPartner" t:color="orange1">
<implementation.java class="com.tuscanyscatours.hotel.impl.HotelImpl"/>
<service name="Search">
<binding.ws name="searchws" uri="http://localhost:8086/Hotel/Search"/>
<callback>
<binding.ws></binding.ws>
</callback>
</service>
<service name="Book"/>
</component>
<component name="FlightPartner" t:color="orange1">
<implementation.java class="com.tuscanyscatours.flight.impl.FlightImpl"/>
<service name="Search">
<interface.java interface="com.tuscanyscatours.common.Search" callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
<binding.ws name="searchws" uri="http://localhost:8086/Flight/Search"/>
<t:binding.jsonrpc name="searchjsonrpc"/>
<callback>
<binding.ws></binding.ws>
</callback>
</service>
<service name="Book"/>
</component>
<component name="CarPartner" t:color="orange1">
<implementation.java class="com.tuscanyscatours.car.impl.CarImpl"/>
<service name="Search">
<binding.ws name="searchws" uri="http://localhost:8086/Car/Search"/>
<t:binding.jsonrpc name="searchjsonrpc"/>
<callback>
<binding.ws></binding.ws>
</callback>
</service>
<service name="Book"/>
</component>
<component name="TravelCatalog">
<implementation.java class="com.tuscanyscatours.travelcatalog.impl.TravelCatalogImpl"/>
<service name="TravelCatalogSearch"/>
<reference name="hotelSearch" target="HotelSearch">
<binding.ws uri="http://localhost:8086/Hotel/Search"/>
<callback>
<binding.ws name="callback" uri="http://localhost:8084/Hotel/SearchCallback"/>
</callback>
</reference>
<reference name="flightSearch" target="FlightSearch">
<interface.java interface="com.tuscanyscatours.common.Search" callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
<binding.ws uri="http://localhost:8086/Flight/Search"/>
<callback>
<binding.ws name="callback" uri="http://localhost:8084/Flight/SearchCallback"/>
</callback>
</reference>
<reference name="carSearch" target="CarSearch">
<binding.ws uri="http://localhost:8086/Car/Search"/>
<callback>
<binding.ws name="callback" uri="http://localhost:8084/Car/SearchCallback"/>
</callback>
</reference>
<reference name="tripSearch" target="TripSearch">
<binding.ws uri="http://localhost:8085/Trip/Search"/>
<callback>
<binding.ws name="callback" uri="http://localhost:8084/Trip/SearchCallback"/>
</callback>
</reference>
<reference name="currencyConverter" target="CurrencyConverter"/>
<property>GBP</property>
</component>
<component name="TripBooking">
<implementation.java class="com.tuscanyscatours.tripbooking.impl.TripBookingImpl"/>
<service name="TripBooking"/>
<reference name="hotelBook" target="HotelPartner/Book"/>
<reference name="flightBook" target="FlightPartner/Book"/>
<reference name="carBook" target="CarPartner/Book"/>
<reference name="tripBook" target="TripPartner/Book"/>
<reference name="cartUpdates" target="ShoppingCart/CartUpdates"/>
</component>
<component name="TripPartner" t:color="orange1">
<implementation.java class="com.tuscanyscatours.trip.impl.TripImpl"/>
<service name="Search">
<binding.ws name="searchws" uri="http://localhost:8085/Trip/Search"/>
<t:binding.jsonrpc name="searchjsonrpc"/>
<callback>
<binding.ws></binding.ws>
</callback>
</service>
<service name="Book"/>
</component>
<component name="ShoppingCart">
<implementation.java class="com.tuscanyscatours.shoppingcart.impl.ShoppingCartImpl"/>
<reference name="cartStore" target="CartStore" t:align="bottom"/>
<reference name="payment" target="Payment">
<binding.ws uri="http://localhost:8081/Payment"/>
</reference>
</component>
<component name="CartStore" t:color="yellow1">
<service name="CartStore" t:align="top"/>
<implementation.java class="com.tuscanyscatours.shoppingcart.impl.CartStoreImpl"/>
</component>
<component name="Payment">
<implementation.spring location="Payment-context.xml"/>
<service name="Payment">
<binding.ws uri="http://localhost:8081/Payment"/>
</service>
<reference name="creditCardPaymentReference" target="CreditCardPayment">
<binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/>
</reference>
<reference name="emailGateway" target="EmailGateway"/>
<reference name="customerRegistry" target="CustomerRegistry"/>
<property>1.23</property>
</component>
<component name="CustomerRegistry">
<implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl"/>
</component>
<component name="EmailGateway">
<implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl"/>
</component>
<component name="HotelSearch" t:color="red1">
<service name="HotelSearch"/>
<implementation.java class="com.tuscanyscatours.PlaceHolderImpl"/>
</component>
<component name="FlightSearch" t:color="red1">
<service name="FlightSearch"/>
<implementation.java class="com.tuscanyscatours.PlaceHolderImpl"/>
</component>
<component name="CarSearch" t:color="red1">
<service name="CarSearch"/>
<implementation.java class="com.tuscanyscatours.PlaceHolderImpl"/>
</component>
<component name="TripSearch" t:color="red1">
<service name="TripSearch"/>
<implementation.java class="com.tuscanyscatours.PlaceHolderImpl"/>
</component>
</composite>

View file

@ -1,24 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* 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.
* 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.
-->
<div id="page">
<span id="header" class="h1" style="position:absolute; left: 0px; top: 0px"><h1>Welcome to SCATours Online Travel</h1></span>
<span id="book" class="button" style="position:absolute; left: 0px; top: 60px"><input type="button" value="Book a Trip"/></span>
</div>
<DIV id="page">
<SPAN id="header" class="h1" style="position: absolute; top: 0px; left: 0px; ">
<H1>Welcome to SCATours Online Travel</H1>
</SPAN>
<SPAN id="book" class="button" style="position: absolute; top: 60px; left: 0px; ">
<INPUT type="button" value="Book a Trip"/>
</SPAN>
</DIV>

View file

@ -1 +1 @@
(("An App that shows my Aggregated Social Profile" "myprofile" ()) ("An advanced version of the Aggregated Social Profile App" "myprofile2" ()) ("An App that shows Friends Near Me" "nearme" ()) ("An advanced version of the Friends Near Me App" "nearme2" ()) ("Sample Online Store App" "store" ()) ("Layout Variation of the Online Store App" "store2" ()) ("Another Variation of the Online Store App" "store3" ()) ("Travel Tutorial App" "travel" ()) ("An Empty Test App" "test" ()))
(("An App that shows my Aggregated Social Profile" "myprofile" ()) ("An advanced version of the Aggregated Social Profile App" "myprofile2" ()) ("An App that shows Friends Near Me" "nearme" ()) ("An advanced version of the Friends Near Me App" "nearme2" ()) ("Sample Online Store App" "store" ()) ("Layout Variation of the Online Store App" "store2" ()) ("Another Variation of the Online Store App" "store3" ()) ("Travel Tutorial App" "travel" ()) ("An Empty Test App" "test" ()) ("Test Values and Lists" "testvalues" ()) ("Test Social Components" "testsocial" ()) ("Test URL Components" "testurl" ()) ("Test Logic Components" "testlogic" ()) ("Test Text Processing Components" "testtext" ()))

View file

@ -25,7 +25,7 @@
<component name="User">
<t:implementation.python script="user.py"/>
<property name="user">?</property>
<property name="email">joe@localhost</property>
<property name="email">?</property>
<property name="nickname">?</property>
<property name="fullname">?</property>
<property name="firstname">?</property>
@ -36,6 +36,11 @@
</service>
</component>
<component name="MenuWidget">
<t:implementation.widget location="/menu.html"/>
<reference name="user" target="User"/>
</component>
<component name="EditWidget">
<t:implementation.widget location="/index.html"/>
<reference name="dashboard" target="Dashboard"/>

View file

@ -146,7 +146,7 @@ $('createAppOKButton').onclick = function() {
var entry = atom.writeATOMEntry(app);
dashboard.put(name, car(entry));
getapps();
div.style.visibility = 'hidden';
$('newApp').style.visibility = 'hidden';
return false;
};

View file

@ -43,7 +43,9 @@ ui.loadwidget('menu', '/menu.html');
<script type="text/javascript">
// Load the dashboard
ui.loadiframe('dashboard', 'dashboard.html');
$('dashboard').innerHTML =
'<iframe id="dashboardFrame" style="height: 5000px; width: 100%; border: 0px;" scrolling="no" frameborder="0" src="dashboard.html"></iframe>';
</script>
</body>
</html>

View file

@ -39,6 +39,7 @@
<th class="thr" style="padding-left: 4px; padding-top: 0px; padding-bottom: 0px;">
<input id="compName" type="text" value="component name" style="position: relative; width: 200px;"/>
<input id="propValue" type="text" value="property value" style="position: relative; width: 300px;"/>
<span id="compValue" style="position: relative"></span>
</th>
<th class="thl thr" style="padding-top: 0px; padding-bottom: 0px; padding-right: 0px; text-align: right;">
@ -99,7 +100,7 @@ function getapp(name, g) {
'</composite>';
composite = readXML(mklist(x));
}
graph.edit(composite, graph.composite(composite, graph.mkpath().move(palcx,0)), g);
graph.edit(name, composite, graph.composite(composite, graph.mkpath().move(palcx,0)), g);
});
}
@ -147,7 +148,7 @@ $('saveButton').onclick = function(e) {
};
// Create editor graph area
var g = graph.mkgraph(graph.mkpath().move(0,40), $('compName'), $('propValue'));
var g = graph.mkgraph(graph.mkpath().move(0,40), $('compName'), $('propValue'), $('compValue'));
var bg = graph.mkgroup(graph.mkpath());
// Install the palettes
@ -155,14 +156,14 @@ var gpalettes = new Array();
var spalette = 'events';
var pos = graph.mkpath();
installpalette('events', pos.rmove(0,0), g, bg, spalette, gpalettes);
installpalette('values', pos.rmove(0,50), g, bg, spalette, gpalettes);
installpalette('url', pos.rmove(0, 50), g, bg, spalette, gpalettes);
installpalette('lists', pos.rmove(0, 50), g, bg, spalette, gpalettes);
installpalette('text', pos.rmove(0, 50), g, bg, spalette, gpalettes);
installpalette('logic', pos.rmove(0, 50), g, bg, spalette, gpalettes);
installpalette('math', pos.rmove(0, 50), g, bg, spalette, gpalettes);
installpalette('social', pos.rmove(0, 50), g, bg, spalette, gpalettes);
installpalette('sensors', pos.rmove(0, 50), g, bg, spalette, gpalettes);
installpalette('values', pos.rmove(0,40), g, bg, spalette, gpalettes);
installpalette('url', pos.rmove(0, 40), g, bg, spalette, gpalettes);
installpalette('lists', pos.rmove(0, 40), g, bg, spalette, gpalettes);
installpalette('text', pos.rmove(0, 40), g, bg, spalette, gpalettes);
installpalette('logic', pos.rmove(0, 40), g, bg, spalette, gpalettes);
installpalette('math', pos.rmove(0, 40), g, bg, spalette, gpalettes);
installpalette('social', pos.rmove(0, 40), g, bg, spalette, gpalettes);
installpalette('sensors', pos.rmove(0, 40), g, bg, spalette, gpalettes);
// Get and display the current app
getapp(appname, g);

View file

@ -56,7 +56,7 @@ var trashcx = 230;
var proxcx = 20;
var proxcy = 20;
var buttoncx = 70;
var buttoncy = 40;
var buttoncy = 30;
var curvsz = 6;
var tabsz = 3;
@ -114,7 +114,7 @@ if (ui.isIE()) {
/**
* Make a VML graph.
*/
graph.mkgraph = function(pos, cname, pvalue) {
graph.mkgraph = function(pos, cname, pvalue, cvalue) {
// Create div element to host the graph
var div = document.createElement('div');
@ -160,6 +160,7 @@ if (ui.isIE()) {
// Reset current selection
cname.value = '';
pvalue.value = '';
cvalue.innerHTML = '';
return false;
}
@ -185,6 +186,7 @@ if (ui.isIE()) {
// Update the component name and property value fields
cname.value = graph.selected.id;
pvalue.value = graph.property(graph.selected.comp);
cvalue.innerHTML = graph.compvaluelink(vmlg.appname, graph.selected.id);
return false;
};
@ -232,6 +234,7 @@ if (ui.isIE()) {
graph.selected = null;
cname.value = '';
pvalue.value = '';
cvalue.innerHTML = '';
}
}
@ -281,6 +284,7 @@ if (ui.isIE()) {
var compos = scdl.composite(svg.compos);
cname.value = graph.ucid(cname.value, compos);
graph.selected.id = cname.value;
cvalue.innerHTML = graph.compvaluelink(svg.appname, graph.selected.id);
setElement(compos, graph.renamecomp(graph.selected.comp, compos, cname.value));
// Refresh the composite
@ -575,7 +579,7 @@ if (ui.isIE()) {
/**
* Make an SVG graph.
*/
graph.mkgraph = function(pos, cname, pvalue) {
graph.mkgraph = function(pos, cname, pvalue, cvalue) {
// Create a div element to host the graph
var div = document.createElement('div');
@ -624,6 +628,7 @@ if (ui.isIE()) {
// Reset current selection
cname.value = '';
pvalue.value = '';
cvalue.innerHTML ='';
return false;
}
@ -649,6 +654,7 @@ if (ui.isIE()) {
// Update the component name and property value fields
cname.value = graph.selected.id;
pvalue.value = graph.property(graph.selected.comp);
cvalue.innerHTML = graph.compvaluelink(svg.appname, graph.selected.id);
return false;
};
@ -699,6 +705,7 @@ if (ui.isIE()) {
graph.selected = null;
cname.value = '';
pvalue.value = '';
cvalue.innerHTML = '';
}
}
@ -766,6 +773,7 @@ if (ui.isIE()) {
var compos = scdl.composite(svg.compos);
cname.value = graph.ucid(cname.value, compos);
graph.selected.id = cname.value;
cvalue.innerHTML = graph.compvaluelink(svg.appname, graph.selected.id);
setElement(compos, graph.renamecomp(graph.selected.comp, compos, cname.value));
// Refresh the composite
@ -1121,7 +1129,7 @@ graph.lsvcs = function(comp) {
*/
graph.brefs = function(comp) {
return memo(comp, 'brefs', function() {
return filter(function(r) { return scdl.align(r) == 'bottom'; }, scdl.references(comp));
return filter(function(r) { return scdl.align(r) == 'bottom' && scdl.visible(r) != 'false'; }, scdl.references(comp));
});
};
@ -1130,7 +1138,11 @@ graph.brefs = function(comp) {
*/
graph.rrefs = function(comp) {
return memo(comp, 'rrefs', function() {
return filter(function(r) { var a = scdl.align(r); return a == null || a == 'right'; }, scdl.references(comp));
return filter(function(r) {
var a = scdl.align(r);
var v = scdl.visible(r);
return (a == null || a == 'right') && v != 'false';
}, scdl.references(comp));
});
};
@ -1791,12 +1803,25 @@ graph.refresh = function(g) {
* Display and enable editing of a composite and the graphical
* nodes that represent it.
*/
graph.edit = function(compos, nodes, g, cname, pvalue) {
graph.edit = function(appname, compos, nodes, g) {
// Store the composite in the graphical canvas
// Store the appname and composite in the graphical canvas
g.appname = appname;
g.compos = compos;
// Display the composite nodes
return graph.display(nodes, g);
};
/**
* Return the link to a component value.
*/
graph.compvaluelink = function(appname, cname) {
var scheme = 'http';
var domain = "sca-store.com";
var port = '8090';
var link = scheme + '://' + appname + '.' + domain + ':' + port + '/components/' + cname;
return '<a href="' + link + '">' + link + '</a>';
};

View file

@ -21,6 +21,7 @@
<link rel="stylesheet" type="text/css" href="/ui.css">
<script type="text/javascript" src="/util.js"></script>
<script type="text/javascript" src="/ui.js"></script>
<script type="text/javascript" src="/component.js"></script>
</head>
<body>
<div id="menu"></div>
@ -28,6 +29,21 @@
<script type="text/javascript">
ui.installwidget();
var menuWidget = sca.component("MenuWidget");
var user = sca.defun(sca.reference(menuWidget, "user"), "id");
/**
* Display the current signed in user.
*/
function userMenu() {
function UserMenu() {
this.content = function() {
return '<span><b>' + user.id() + '</b></span>';
};
}
return new UserMenu();
}
/**
* Return the current app name.
*/
@ -41,7 +57,7 @@ var name = appname();
mdiv.innerHTML = ui.menubar(
append(mklist(ui.menu('Home', '/'), ui.menu('Dashboard', '/dash')),
(isNil(name) || name == 'undefined')? mklist() : mklist(ui.menu('Composition', '/graph/?app=' + name), ui.menu('Page', '/page/?app=' + name), ui.menu('Settings', '/app/?app=' + name))),
mklist(ui.menu('Sign out', '/logout')));
mklist(userMenu(), ui.menu('Sign out', '/logout')));
</script>
</body>

View file

@ -22,25 +22,27 @@
targetNamespace="http://events"
name="palette">
<service name="opened" promote="opened"/>
<service name="clicked" promote="clicked"/>
<service name="page" promote="page"/>
<service name="button" promote="button"/>
<service name="every" promote="every"/>
<component name="opened" t:title="when page opened" t:color="green1">
<t:implementation.python script="opened.py"/>
<service name="opened" t:visible="false"/>
<component name="page" t:title="when page opened" t:color="green1">
<t:implementation.python script="nuvem/page.py"/>
<service name="page" t:visible="false">
<t:binding.http uri="index.html"/>
</service>
<reference name="content"/>
</component>
<component name="clicked" t:title="when clicked" t:color="green1">
<t:implementation.python script="clicked.py"/>
<service name="clicked" t:visible="false"/>
<component name="button" t:title="when clicked" t:color="green1">
<t:implementation.python script="nuvem/button.py"/>
<service name="button" t:visible="false"/>
<property name="property">button</property>
<reference name="content"/>
</component>
<component name="every" t:title="every n secs" t:color="green1">
<t:implementation.python script="every.py"/>
<t:implementation.python script="nuvem/every.py"/>
<service name="every" t:visible="false"/>
<property name="property">60</property>
<reference name="content"/>

View file

@ -29,7 +29,6 @@
<service name="itemnb" promote="itemnb"/>
<service name="find" promote="find"/>
<service name="foreach" promote="foreach"/>
<service name="item" promote="item"/>
<service name="filter" promote="filter"/>
<service name="reduce" promote="reduce"/>
<service name="range" promote="range"/>
@ -37,59 +36,53 @@
<service name="reverse" promote="reverse"/>
<component name="list" t:title="make list" t:color="yellow1">
<t:implementation.python script="list_.py"/>
<t:implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference name="first"/>
<reference name="rest"/>
</component>
<component name="first" t:title="first item" t:color="yellow1">
<t:implementation.python script="first.py"/>
<t:implementation.python script="nuvem/first.py"/>
<service name="first"/>
<reference name="list"/>
</component>
<component name="rest" t:title="rest of list" t:color="yellow1">
<t:implementation.python script="rest.py"/>
<t:implementation.python script="nuvem/rest.py"/>
<service name="rest"/>
<reference name="list"/>
</component>
<component name="empty" t:title="empty list" t:color="yellow1">
<t:implementation.python script="empty.py"/>
<t:implementation.python script="nuvem/empty.py"/>
<service name="empty"/>
</component>
<component name="itemnb" t:title="item number" t:color="yellow1">
<t:implementation.python script="itemnb.py"/>
<t:implementation.python script="nuvem/itemnb.py"/>
<service name="itemnb"/>
<reference name="index"/>
<reference name="list"/>
</component>
<component name="find" t:title="find by name" t:color="yellow1">
<t:implementation.python script="find.py"/>
<t:implementation.python script="nuvem/find.py"/>
<service name="find"/>
<reference name="name"/>
<reference name="assoc"/>
</component>
<component name="foreach" t:title="foreach" t:color="yellow1">
<t:implementation.python script="foreach.py"/>
<t:implementation.python script="nuvem/map_.py"/>
<service name="foreach"/>
<reference name="item"/>
<reference name="transform"/>
<reference name="list"/>
</component>
<component name="item" t:color="yellow1">
<t:implementation.python script="item.py"/>
<service name="item"/>
<property name="property"></property>
</component>
<component name="filter" t:title="filter" t:color="yellow1">
<t:implementation.python script="filter_.py"/>
<t:implementation.python script="nuvem/filter_.py"/>
<service name="filter"/>
<reference name="item"/>
<reference name="condition"/>
@ -97,30 +90,30 @@
</component>
<component name="reduce" t:title="reduce" t:color="yellow1">
<t:implementation.python script="reduce.py"/>
<t:implementation.python script="nuvem/reduce_.py"/>
<service name="reduce"/>
<reference name="transform"/>
<reference name="initial"/>
<reference name="item"/>
<reference name="accum"/>
<reference name="transform"/>
<reference name="list"/>
</component>
<component name="range" t:title="range" t:color="yellow1">
<t:implementation.python script="range.py"/>
<t:implementation.python script="nuvem/range_.py"/>
<service name="range"/>
<reference name="first"/>
<reference name="last"/>
</component>
<component name="append" t:title="append" t:color="yellow1">
<t:implementation.python script="append.py"/>
<t:implementation.python script="nuvem/append.py"/>
<service name="append"/>
<reference name="first"/>
<reference name="second"/>
</component>
<component name="reverse" t:title="reverse" t:color="yellow1">
<t:implementation.python script="reverse.py"/>
<t:implementation.python script="nuvem/reverse.py"/>
<service name="reverse"/>
<reference name="list"/>
</component>

View file

@ -31,7 +31,7 @@
<service name="lesser" promote="lesser"/>
<component name="if" t:title="if" t:color="magenta1">
<t:implementation.python script="if_.py"/>
<t:implementation.python script="nuvem/if_.py"/>
<service name="if"/>
<reference name="condition"/>
<reference name="then"/>
@ -39,41 +39,41 @@
</component>
<component name="and" t:title="and" t:color="magenta1">
<t:implementation.python script="and_.py"/>
<t:implementation.python script="nuvem/and_.py"/>
<service name="and"/>
<reference name="value1"/>
<reference name="value2"/>
</component>
<component name="or" t:title="or" t:color="magenta1">
<t:implementation.python script="or_.py"/>
<t:implementation.python script="nuvem/or_.py"/>
<service name="or"/>
<reference name="value1"/>
<reference name="value2"/>
</component>
<component name="not" t:title="not" t:color="magenta1">
<t:implementation.python script="not_.py"/>
<t:implementation.python script="nuvem/not_.py"/>
<service name="not"/>
<reference name="value"/>
</component>
<component name="equals" t:title="=" t:color="magenta1">
<t:implementation.python script="equals.py"/>
<t:implementation.python script="nuvem/equals.py"/>
<service name="equals"/>
<reference name="value1"/>
<reference name="value2"/>
</component>
<component name="greater" t:title="gt" t:color="magenta1">
<t:implementation.python script="greater.py"/>
<t:implementation.python script="nuvem/greater.py"/>
<service name="greater"/>
<reference name="value1"/>
<reference name="value2"/>
</component>
<component name="lesser" t:title="lt" t:color="magenta1">
<t:implementation.python script="lesser.py"/>
<t:implementation.python script="nuvem/lesser.py"/>
<service name="lesser"/>
<reference name="value1"/>
<reference name="value2"/>

View file

@ -28,7 +28,7 @@
<service name="subtract" promote="subtract"/>
<component name="multiply" t:title="*" t:color="magenta1">
<t:implementation.python script="multiply.py"/>
<t:implementation.python script="nuvem/multiply.py"/>
<service name="multiply">
<documentation>*</documentation>
</service>
@ -37,7 +37,7 @@
</component>
<component name="divide" t:title="/" t:color="magenta1">
<t:implementation.python script="divide.py"/>
<t:implementation.python script="nuvem/divide.py"/>
<service name="divide">
<documentation>/</documentation>
</service>
@ -46,7 +46,7 @@
</component>
<component name="add" t:title="+" t:color="magenta1">
<t:implementation.python script="add.py"/>
<t:implementation.python script="nuvem/add.py"/>
<service name="add">
<documentation>+</documentation>
</service>
@ -55,7 +55,7 @@
</component>
<component name="subtract" t:title="-" t:color="magenta1">
<t:implementation.python script="subtract.py"/>
<t:implementation.python script="nuvem/subtract.py"/>
<service name="subtract">
<documentation>-</documentation>
</service>

View file

@ -35,55 +35,64 @@
<service name="smssend" promote="smssend"/>
<component name="fbprofile" t:title="facebook profile" t:color="blue1">
<t:implementation.python script="fbprofile.py"/>
<t:implementation.python script="nuvem/fbprofile.py"/>
<service name="fbprofile"/>
<reference name="id"/>
<reference name="fb" t:visible="false">
<t:binding.http uri="https://graph.facebook.com"/>
</reference>
</component>
<component name="fbalbum" t:title="facebook album" t:color="blue1">
<t:implementation.python script="fbalbum.py"/>
<t:implementation.python script="nuvem/fbalbum.py"/>
<service name="fbalbum"/>
<reference name="id"/>
</component>
<component name="fbfriends" t:title="facebook friends" t:color="blue1">
<t:implementation.python script="fbfriends.py"/>
<t:implementation.python script="nuvem/fbfriends.py"/>
<service name="fbfriends"/>
<reference name="id"/>
</component>
<component name="fbgroup" t:title="facebook group" t:color="blue1">
<t:implementation.python script="fbgroup.py"/>
<t:implementation.python script="nuvem/fbgroup.py"/>
<service name="fbgroup"/>
<reference name="id"/>
</component>
<component name="twprofile" t:title="twitter profile" t:color="blue1">
<t:implementation.python script="twprofile.py"/>
<t:implementation.python script="nuvem/twprofile.py"/>
<service name="twprofile"/>
<reference name="id"/>
<reference name="tw" t:visible="false">
<t:binding.http uri="http://api.twitter.com/1/users/show.json"/>
</reference>
</component>
<component name="twfriends" t:title="twitter friends" t:color="blue1">
<t:implementation.python script="twfriends.py"/>
<t:implementation.python script="nuvem/twfriends.py"/>
<service name="twfriends"/>
<reference name="id"/>
</component>
<component name="twstatus" t:title="twitter status" t:color="blue1">
<t:implementation.python script="twstatus.py"/>
<t:implementation.python script="nuvem/twstatus.py"/>
<service name="twstatus"/>
<reference name="id"/>
</component>
<component name="twtimeline" t:title="twitter timeline" t:color="blue1">
<t:implementation.python script="twtimeline.py"/>
<t:implementation.python script="nuvem/twtimeline.py"/>
<service name="twtimeline"/>
<reference name="id"/>
<reference name="tw" t:visible="false">
<t:binding.http uri="http://api.twitter.com/1/statuses/user_timeline.json"/>
</reference>
</component>
<component name="gtalksend" t:title="send gtalk" t:color="blue1">
<t:implementation.python script="gtalksend.py"/>
<t:implementation.python script="nuvem/gtalksend.py"/>
<service name="gtalksend"/>
<reference name="jid"/>
<reference name="to"/>
@ -91,13 +100,13 @@
</component>
<component name="gtalkreceive" t:title="when gtalk received" t:color="blue1">
<t:implementation.python script="gtalkreceive.py"/>
<t:implementation.python script="nuvem/gtalkreceive.py"/>
<service name="gtalkreceive"/>
<reference name="jid"/>
</component>
<component name="smssend" t:title="send sms" t:color="blue1">
<t:implementation.python script="smssend.py"/>
<t:implementation.python script="nuvem/smssend.py"/>
<service name="smssend"/>
<reference name="user"/>
<reference name="to"/>

View file

@ -30,28 +30,28 @@
<service name="uppercase" promote="uppercase"/>
<component name="contains" t:title="contains" t:color="magenta1">
<t:implementation.python script="contains.py"/>
<t:implementation.python script="nuvem/contains.py"/>
<service name="contains"/>
<reference name="search"/>
<reference name="string"/>
</component>
<component name="split" t:title="split" t:color="magenta1">
<t:implementation.python script="split.py"/>
<t:implementation.python script="nuvem/split.py"/>
<service name="split"/>
<reference name="separator"/>
<reference name="string"/>
</component>
<component name="join" t:title="join" t:color="magenta1">
<t:implementation.python script="join.py"/>
<t:implementation.python script="nuvem/join.py"/>
<service name="join"/>
<reference name="separator"/>
<reference name="list"/>
</component>
<component name="replace" t:title="replace" t:color="magenta1">
<t:implementation.python script="replace.py"/>
<t:implementation.python script="nuvem/replace.py"/>
<service name="replace"/>
<reference name="from"/>
<reference name="to"/>
@ -59,13 +59,13 @@
</component>
<component name="lowercase" t:title="lowercase" t:color="magenta1">
<t:implementation.python script="lowercase.py"/>
<t:implementation.python script="nuvem/lowercase.py"/>
<service name="lowercase"/>
<reference name="string"/>
</component>
<component name="uppercase" t:title="uppercase" t:color="magenta1">
<t:implementation.python script="uppercase.py"/>
<t:implementation.python script="nuvem/uppercase.py"/>
<service name="uppercase"/>
<reference name="string"/>
</component>

View file

@ -30,37 +30,37 @@
<service name="email" promote="email"/>
<component name="host" t:title="host" t:color="green1">
<t:implementation.python script="host.py"/>
<t:implementation.python script="nuvem/host.py"/>
<service name="host"/>
<property name="host"></property>
</component>
<component name="path" t:title="path" t:color="green1">
<t:implementation.python script="path.py"/>
<t:implementation.python script="nuvem/path.py"/>
<service name="path"/>
<property name="path"></property>
</component>
<component name="params" t:title="?params" t:color="green1">
<t:implementation.python script="params.py"/>
<t:implementation.python script="nuvem/params.py"/>
<service name="params"/>
<property name="params"></property>
<property name="query"></property>
</component>
<component name="user" t:title="user" t:color="green1">
<t:implementation.python script="user.py"/>
<t:implementation.python script="nuvem/user.py"/>
<service name="user"/>
<property name="user"></property>
</component>
<component name="realm" t:title="realm" t:color="green1">
<t:implementation.python script="realm.py"/>
<t:implementation.python script="nuvem/realm.py"/>
<service name="realm"/>
<property name="realm"></property>
</component>
<component name="email" t:title="email" t:color="green1">
<t:implementation.python script="email.py"/>
<t:implementation.python script="nuvem/email.py"/>
<service name="email"/>
<property name="email"></property>
</component>

View file

@ -25,48 +25,55 @@
<service name="text" promote="text"/>
<service name="number" promote="number"/>
<service name="name" promote="name"/>
<service name="valueof" promote="valueof"/>
<service name="assoc" promote="assoc"/>
<service name="nothing" promote="nothing"/>
<service name="true" promote="true"/>
<service name="false" promote="false"/>
<component name="text" t:title="text" t:color="orange1">
<t:implementation.python script="text.py"/>
<t:implementation.python script="nuvem/text.py"/>
<service name="text"/>
<property name="property">abc</property>
</component>
<component name="number" t:title="number" t:color="orange1">
<t:implementation.python script="number.py"/>
<t:implementation.python script="nuvem/number.py"/>
<service name="number"/>
<property name="property">0</property>
</component>
<component name="name" t:title="name" t:color="orange1">
<t:implementation.python script="name.py"/>
<t:implementation.python script="nuvem/name.py"/>
<service name="name"/>
<property name="property">name</property>
</component>
<component name="valueof" t:title="value of" t:color="orange1">
<t:implementation.python script="nuvem/valueof.py"/>
<service name="valueof"/>
<property name="name">name</property>
</component>
<component name="assoc" t:title="assoc" t:color="orange1">
<t:implementation.python script="assoc.py"/>
<t:implementation.python script="nuvem/assoc.py"/>
<service name="assoc"/>
<reference name="name"/>
<reference name="value"/>
</component>
<component name="nothing" t:title="nothing" t:color="orange1">
<t:implementation.python script="text.py"/>
<t:implementation.python script="nuvem/nothing.py"/>
<service name="nothing"/>
</component>
<component name="true" t:title="true" t:color="orange1">
<t:implementation.python script="true_.py"/>
<t:implementation.python script="nuvem/true_.py"/>
<service name="true"/>
</component>
<component name="false" t:title="false" t:color="orange1">
<t:implementation.python script="false_.py"/>
<t:implementation.python script="nuvem/false_.py"/>
<service name="false"/>
</component>

View file

@ -17,21 +17,62 @@
# specific language governing permissions and limitations
# under the License.
../../modules/http/ssl-ca-conf tmp localhost
../../modules/http/ssl-cert-conf tmp localhost
../http/httpd-conf tmp localhost 8090 htdocs
# For this module to work, add the app domains to your /etc/hosts as follows:
# 127.0.0.1 sca-store.com joe.sca-store.com jane.sca-store.com myprofile.sca-store.com myprofile2.sca-store.com nearme.sca-store.com nearme2.sca-store.com testvalues.sca-store.com testurl.sca-store.com testsocial.sca-store.com testlogic.sca-store.com testtext.sca-store.com
here=`readlink -f $0`; here=`dirname $here`
jsprefix=`readlink -f $here/../js`
# Create SSL certificates
../../modules/http/ssl-ca-conf tmp sca-store.com
../../modules/http/ssl-cert-conf tmp sca-store.com server
../../modules/http/ssl-cert-conf tmp *.sca-store.com vhost
# Configure server with virtual hosting
../../modules/http/httpd-conf tmp sca-store.com 8090 htdocs
../../modules/http/vhost-conf tmp apps htdocs
../../modules/http/httpd-ssl-conf tmp 8453
../../modules/http/vhost-ssl-conf tmp
# Configure authentication
../../modules/http/open-auth-conf tmp
../../modules/http/passwd-auth-conf tmp foo foo
../server/server-conf tmp
../python/python-conf tmp
../../modules/http/passwd-auth-conf tmp joe joe
../../modules/http/passwd-auth-conf tmp jane jane
# Configure Python component support
../../modules/server/server-conf tmp
../../modules/python/python-conf tmp
# Configure app home pages
cat >>tmp/conf/dvhost.conf <<EOF
# Redirect to app home page
RewriteEngine On
RewriteRule ^/$ /index.html [R]
EOF
# Configure SCA contributions
cat >>tmp/conf/httpd.conf <<EOF
# Configure SCA Composite
SCAContribution `pwd`/
SCAComposite edit.composite
# Configure SCA Composite for mass dynamic virtual Hosting
SCAVirtualContribution `pwd`/apps/
SCAVirtualComposite app.composite
EOF
../../components/cache/memcached-start 11211
../http/httpd-start tmp
# Configure look and feel
cat >>tmp/conf/httpd.conf <<EOF
# Override CSS
Alias /ui.css $jsprefix/htdocs/uicyan.css
EOF
# Start memcached
../../components/cache/memcached-start
# Start server
../../modules/http/httpd-start tmp

View file

@ -17,24 +17,63 @@
# specific language governing permissions and limitations
# under the License.
# For this module to work, add the app domains to your /etc/hosts as follows:
# 127.0.0.1 sca-store.com joe.sca-store.com jane.sca-store.com myprofile.sca-store.com myprofile2.sca-store.com nearme.sca-store.com nearme2.sca-store.com testvalues.sca-store.com testurl.sca-store.com testsocial.sca-store.com testlogic.sca-store.com testtext.sca-store.com
here=`readlink -f $0`; here=`dirname $here`
jsprefix=`readlink -f $here/../js`
../http/httpd-conf tmp localhost 8090 htdocs
cat >>tmp/conf/httpd.conf <<EOF
# Override CSS
Alias /ui.css $jsprefix/htdocs/uicyan.css
# Configure server with virtual hosting
../../modules/http/httpd-conf tmp sca-store.com 8090 htdocs
../../modules/http/vhost-conf tmp apps htdocs
# Configure authentication
../../modules/http/open-auth-conf tmp
../../modules/http/passwd-auth-conf tmp joe joe
../../modules/http/passwd-auth-conf tmp jane jane
cat >>tmp/conf/dvhost.conf <<EOF
# Grant access to apps
<Location />
AuthType None
Require all granted
</Location>
EOF
# Configure Python component support
../server/server-conf tmp
../python/python-conf tmp
# Configure app home pages
cat >>tmp/conf/dvhost.conf <<EOF
# Redirect to app home page
RewriteEngine On
RewriteRule ^/$ /index.html [R]
EOF
# Configure SCA contributions
cat >>tmp/conf/httpd.conf <<EOF
# Configure SCA Composite
SCAContribution `pwd`/
SCAComposite edit.composite
# Configure SCA Composite for mass dynamic virtual Hosting
SCAVirtualContribution `pwd`/apps/
SCAVirtualComposite app.composite
EOF
# Configure look and feel
cat >>tmp/conf/httpd.conf <<EOF
# Override CSS
Alias /ui.css $jsprefix/htdocs/uicyan.css
EOF
# Start memcached
../../components/cache/memcached-start 11211
# Start server
../http/httpd-start tmp

View file

@ -23,5 +23,6 @@ def id(user, email, nick, full, first, last, realm):
return email.eval()
if nick.eval() != '?':
return nick.eval() + '@' + realm.eval()
return user.eval() + '@' + realm.eval()
if user.eval() != '?':
return user.eval() + '@' + realm.eval()
return 'joe@localhost'