summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/test
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-05-13 05:28:37 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-05-13 05:28:37 +0000
commitd97c0ec46c554920350403623d70938216b5a2b0 (patch)
treed9b5c381b64bae295b407353685207a02bd7f772 /sca-cpp/trunk/test
parent1e5e2e13bee367edc36aa6ee94be4ddfb34378ec (diff)
Move samples to samples directory.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@943805 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp/trunk/test')
-rw-r--r--sca-cpp/trunk/test/Makefile.am19
-rw-r--r--sca-cpp/trunk/test/store-cpp/Makefile.am27
-rw-r--r--sca-cpp/trunk/test/store-cpp/currency-converter.cpp67
-rw-r--r--sca-cpp/trunk/test/store-cpp/fruits-catalog.cpp85
-rw-r--r--sca-cpp/trunk/test/store-cpp/htdocs/.htaccess19
-rw-r--r--sca-cpp/trunk/test/store-cpp/htdocs/store.html169
-rw-r--r--sca-cpp/trunk/test/store-cpp/htdocs/store.js661
-rwxr-xr-xsca-cpp/trunk/test/store-cpp/server-test40
-rw-r--r--sca-cpp/trunk/test/store-cpp/shopping-cart.cpp152
-rwxr-xr-xsca-cpp/trunk/test/store-cpp/ssl-start34
-rwxr-xr-xsca-cpp/trunk/test/store-cpp/start31
-rwxr-xr-xsca-cpp/trunk/test/store-cpp/stop21
-rw-r--r--sca-cpp/trunk/test/store-cpp/store.composite59
-rw-r--r--sca-cpp/trunk/test/store-gae/Makefile.am35
-rw-r--r--sca-cpp/trunk/test/store-gae/app.yaml52
-rw-r--r--sca-cpp/trunk/test/store-gae/currency-converter.py29
-rw-r--r--sca-cpp/trunk/test/store-gae/domain-backend.composite32
-rw-r--r--sca-cpp/trunk/test/store-gae/domain-frontend.composite70
-rw-r--r--sca-cpp/trunk/test/store-gae/domain-single.composite69
-rw-r--r--sca-cpp/trunk/test/store-gae/domain.composite69
-rw-r--r--sca-cpp/trunk/test/store-gae/fruits-catalog.py34
-rw-r--r--sca-cpp/trunk/test/store-gae/gmemcache.py45
-rw-r--r--sca-cpp/trunk/test/store-gae/htdocs/store.html169
-rw-r--r--sca-cpp/trunk/test/store-gae/htdocs/store.js661
-rw-r--r--sca-cpp/trunk/test/store-gae/htpasswd.py21
-rwxr-xr-xsca-cpp/trunk/test/store-gae/server-test41
-rw-r--r--sca-cpp/trunk/test/store-gae/shopping-cart.py77
-rwxr-xr-xsca-cpp/trunk/test/store-gae/start21
-rwxr-xr-xsca-cpp/trunk/test/store-gae/stop21
-rw-r--r--sca-cpp/trunk/test/store-gae/store.py44
-rw-r--r--sca-cpp/trunk/test/store-java/Makefile.am30
-rw-r--r--sca-cpp/trunk/test/store-java/htdocs/.htaccess19
-rw-r--r--sca-cpp/trunk/test/store-java/htdocs/store.html169
-rw-r--r--sca-cpp/trunk/test/store-java/htdocs/store.js661
-rwxr-xr-xsca-cpp/trunk/test/store-java/server-test40
-rwxr-xr-xsca-cpp/trunk/test/store-java/ssl-start36
-rwxr-xr-xsca-cpp/trunk/test/store-java/start33
-rwxr-xr-xsca-cpp/trunk/test/store-java/stop23
-rw-r--r--sca-cpp/trunk/test/store-java/store.composite59
-rw-r--r--sca-cpp/trunk/test/store-java/store/CurrencyConverter.java28
-rw-r--r--sca-cpp/trunk/test/store-java/store/CurrencyConverterImpl.java45
-rw-r--r--sca-cpp/trunk/test/store-java/store/FruitsCatalogImpl.java58
-rw-r--r--sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java119
-rw-r--r--sca-cpp/trunk/test/store-nosql/Makefile.am19
-rw-r--r--sca-cpp/trunk/test/store-nosql/currency-converter.scm27
-rw-r--r--sca-cpp/trunk/test/store-nosql/fruits-catalog.scm33
-rw-r--r--sca-cpp/trunk/test/store-nosql/htdocs/.htaccess19
-rw-r--r--sca-cpp/trunk/test/store-nosql/htdocs/store.html169
-rw-r--r--sca-cpp/trunk/test/store-nosql/htdocs/store.js661
-rwxr-xr-xsca-cpp/trunk/test/store-nosql/server-test40
-rw-r--r--sca-cpp/trunk/test/store-nosql/shopping-cart.scm84
-rwxr-xr-xsca-cpp/trunk/test/store-nosql/ssl-start34
-rwxr-xr-xsca-cpp/trunk/test/store-nosql/start31
-rwxr-xr-xsca-cpp/trunk/test/store-nosql/stop20
-rw-r--r--sca-cpp/trunk/test/store-nosql/store.composite70
-rw-r--r--sca-cpp/trunk/test/store-nosql/store.scm50
-rw-r--r--sca-cpp/trunk/test/store-python/Makefile.am22
-rw-r--r--sca-cpp/trunk/test/store-python/currency-converter.py29
-rw-r--r--sca-cpp/trunk/test/store-python/fruits-catalog.py34
-rw-r--r--sca-cpp/trunk/test/store-python/htdocs/.htaccess19
-rw-r--r--sca-cpp/trunk/test/store-python/htdocs/store.html169
-rw-r--r--sca-cpp/trunk/test/store-python/htdocs/store.js661
-rwxr-xr-xsca-cpp/trunk/test/store-python/server-test40
-rw-r--r--sca-cpp/trunk/test/store-python/shopping-cart.py78
-rwxr-xr-xsca-cpp/trunk/test/store-python/ssl-start34
-rwxr-xr-xsca-cpp/trunk/test/store-python/start31
-rwxr-xr-xsca-cpp/trunk/test/store-python/stop21
-rw-r--r--sca-cpp/trunk/test/store-python/store.composite69
-rw-r--r--sca-cpp/trunk/test/store-python/store.py44
-rw-r--r--sca-cpp/trunk/test/store-scheme/Makefile.am23
-rw-r--r--sca-cpp/trunk/test/store-scheme/currency-converter.scm27
-rw-r--r--sca-cpp/trunk/test/store-scheme/fruits-catalog.scm33
-rw-r--r--sca-cpp/trunk/test/store-scheme/htdocs/.htaccess19
-rw-r--r--sca-cpp/trunk/test/store-scheme/htdocs/store.html169
-rw-r--r--sca-cpp/trunk/test/store-scheme/htdocs/store.js661
-rw-r--r--sca-cpp/trunk/test/store-scheme/script-test.cpp96
-rw-r--r--sca-cpp/trunk/test/store-scheme/script-test.scm140
-rwxr-xr-xsca-cpp/trunk/test/store-scheme/server-test40
-rw-r--r--sca-cpp/trunk/test/store-scheme/shopping-cart.scm84
-rwxr-xr-xsca-cpp/trunk/test/store-scheme/ssl-start34
-rwxr-xr-xsca-cpp/trunk/test/store-scheme/start31
-rwxr-xr-xsca-cpp/trunk/test/store-scheme/stop21
-rw-r--r--sca-cpp/trunk/test/store-scheme/store.composite69
-rw-r--r--sca-cpp/trunk/test/store-scheme/store.scm50
-rw-r--r--sca-cpp/trunk/test/store-sql/Makefile.am19
-rw-r--r--sca-cpp/trunk/test/store-sql/currency-converter.scm27
-rw-r--r--sca-cpp/trunk/test/store-sql/fruits-catalog.scm33
-rw-r--r--sca-cpp/trunk/test/store-sql/htdocs/.htaccess19
-rw-r--r--sca-cpp/trunk/test/store-sql/htdocs/store.html169
-rw-r--r--sca-cpp/trunk/test/store-sql/htdocs/store.js661
-rwxr-xr-xsca-cpp/trunk/test/store-sql/server-test40
-rw-r--r--sca-cpp/trunk/test/store-sql/shopping-cart.scm84
-rwxr-xr-xsca-cpp/trunk/test/store-sql/ssl-start35
-rwxr-xr-xsca-cpp/trunk/test/store-sql/start32
-rwxr-xr-xsca-cpp/trunk/test/store-sql/stop21
-rw-r--r--sca-cpp/trunk/test/store-sql/store.composite71
-rw-r--r--sca-cpp/trunk/test/store-sql/store.scm50
97 files changed, 0 insertions, 9460 deletions
diff --git a/sca-cpp/trunk/test/Makefile.am b/sca-cpp/trunk/test/Makefile.am
deleted file mode 100644
index a3e0cfa6b8..0000000000
--- a/sca-cpp/trunk/test/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-# 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.
-
-SUBDIRS = store-scheme store-cpp store-python store-java store-gae store-sql store-nosql
-
diff --git a/sca-cpp/trunk/test/store-cpp/Makefile.am b/sca-cpp/trunk/test/store-cpp/Makefile.am
deleted file mode 100644
index 00d037cc97..0000000000
--- a/sca-cpp/trunk/test/store-cpp/Makefile.am
+++ /dev/null
@@ -1,27 +0,0 @@
-# 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.
-
-test_LTLIBRARIES = libcurrency-converter.la libfruits-catalog.la libshopping-cart.la
-testdir = $(prefix)/test
-
-libcurrency_converter_la_SOURCES = currency-converter.cpp
-
-libfruits_catalog_la_SOURCES = fruits-catalog.cpp
-
-libshopping_cart_la_SOURCES = shopping-cart.cpp
-
-TESTS = server-test
diff --git a/sca-cpp/trunk/test/store-cpp/currency-converter.cpp b/sca-cpp/trunk/test/store-cpp/currency-converter.cpp
deleted file mode 100644
index 5f0702490a..0000000000
--- a/sca-cpp/trunk/test/store-cpp/currency-converter.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.
- */
-
-/* $Rev$ $Date$ */
-
-/**
- * Currency converter component implementation.
- */
-
-#include "string.hpp"
-#include "function.hpp"
-#include "list.hpp"
-#include "value.hpp"
-#include "monad.hpp"
-
-namespace tuscany {
-namespace store {
-
-/**
- * Convert an amount from USD to a currency.
- */
-const failable<value> convert(unused const value& from, const value& to, const value& amount) {
- if (to == string("EUR"))
- return value(0.70 * (double)amount);
- return amount;
-}
-
-/**
- * Return a currency symbol.
- */
-const failable<value> symbol(const value& currency) {
- if (currency == string("EUR"))
- return value(string("E"));
- return value(string("$"));
-}
-
-}
-}
-
-extern "C" {
-
-const tuscany::value apply(const tuscany::list<tuscany::value>& params) {
- const tuscany::value func(car(params));
- if (func == "convert")
- return tuscany::store::convert(cadr(params), caddr(params), cadddr(params));
- if (func == "symbol")
- return tuscany::store::symbol(cadr(params));
- return tuscany::mkfailure<tuscany::value>();
-}
-
-}
diff --git a/sca-cpp/trunk/test/store-cpp/fruits-catalog.cpp b/sca-cpp/trunk/test/store-cpp/fruits-catalog.cpp
deleted file mode 100644
index 20f2bd35f7..0000000000
--- a/sca-cpp/trunk/test/store-cpp/fruits-catalog.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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.
- */
-
-/* $Rev$ $Date$ */
-
-/**
- * Catalog component implementation.
- */
-
-#include "string.hpp"
-#include "function.hpp"
-#include "list.hpp"
-#include "value.hpp"
-#include "monad.hpp"
-
-namespace tuscany {
-namespace store {
-
-/**
- * Returns the catalog.
- */
-struct convert {
- const lambda<value(const list<value>&)> converter;
- const string currency;
- convert(const lambda<value(const list<value>&)>& converter, const string& currency) : converter(converter), currency(currency) {
- }
- const value operator()(const value& price) const {
- return converter(mklist<value>("convert", string("USD"), currency, price));
- }
-};
-
-const list<value> mkfruit(const string& name, const string& code, const string& symbol, const double price) {
- return list<value>() +
- mklist<value>("javaClass", string("services.Item")) + mklist<value>("name", name) + mklist<value>("currencyCode", code) + mklist<value>("currencySymbol", symbol) + mklist<value>("price", price);
-}
-
-const failable<value> get(const lambda<value(const list<value>&)> converter, const lambda<value(const list<value>&)> currencyCode) {
- const string currency(currencyCode(list<value>()));
- const string symbol(converter(mklist<value>("symbol", currency)));
- const lambda<value(const value&)> conv(convert(converter, currency));
-
- return value(list<value>() +
- mkfruit("Apple", currency, symbol, conv(2.99)) +
- mkfruit("Orange", currency, symbol, conv(3.55)) +
- mkfruit("Pear", currency, symbol, conv(1.55)));
-}
-
-/**
- * TODO remove this JSON-RPC specific function.
- */
-const failable<value> listMethods(unused const lambda<value(const list<value>&)> converter, unused const lambda<value(const list<value>&)> currencyCode) {
- return value(mklist<value>(string("Service.get")));
-}
-
-}
-}
-
-extern "C" {
-
-const tuscany::value apply(const tuscany::list<tuscany::value>& params) {
- const tuscany::value func(car(params));
- if (func == "get")
- return tuscany::store::get(cadr(params), caddr(params));
- if (func == "listMethods")
- return tuscany::store::listMethods(cadr(params), caddr(params));
- return tuscany::mkfailure<tuscany::value>();
-}
-
-}
diff --git a/sca-cpp/trunk/test/store-cpp/htdocs/.htaccess b/sca-cpp/trunk/test/store-cpp/htdocs/.htaccess
deleted file mode 100644
index e2e343b6b2..0000000000
--- a/sca-cpp/trunk/test/store-cpp/htdocs/.htaccess
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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.
-
-DirectoryIndex store.html
diff --git a/sca-cpp/trunk/test/store-cpp/htdocs/store.html b/sca-cpp/trunk/test/store-cpp/htdocs/store.html
deleted file mode 100644
index 21eabca7a7..0000000000
--- a/sca-cpp/trunk/test/store-cpp/htdocs/store.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>Store</title>
-
-<script type="text/javascript" src="store.js"></script>
-
-<script language="JavaScript">
-
- //@Reference
- var catalog = new tuscany.sca.Reference("catalog");
-
- //@Reference
- var shoppingCart = new tuscany.sca.Reference("shoppingCart");
-
- //@Reference
- var shoppingTotal = new tuscany.sca.Reference("shoppingTotal");
-
- var catalogItems;
-
- function catalog_getResponse(items,exception) {
- if(exception){
- alert(exception.message);
- return;
- }
- var catalog = "";
-
- for (var i=0; i<items.length; i++) {
- var item = items[i].name + ' - ' + items[i].price;
- catalog += '<input name="items" type="checkbox" value="' +
- item + '">' + item + ' <br>';
- }
- document.getElementById('catalog').innerHTML=catalog;
- catalogItems = items;
-
- // TEMP
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
-
- function shoppingCart_getResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var list = "";
- for (var i=0; i<entries.length; i++) {
- var content = entries[i].getElementsByTagName("content")[0];
- var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
- var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
- list += name + ' - ' + price + ' <br>';
- }
- document.getElementById("shoppingCart").innerHTML = list;
-
- if (entries.length != 0) {
- try {
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
- catch(e){
- alert(e);
- }
- }
- }
- }
-
- function shoppingTotal_getTotalResponse(total,exception) {
- if(exception) {
- alert(exception.message);
- return;
- }
- document.getElementById('total').innerHTML = total;
- }
-
- function shoppingCart_postResponse(entry) {
- shoppingCart.get("", shoppingCart_getResponse);
- }
-
- function addToCart() {
- var items = document.catalogForm.items;
- var j = 0;
- for (var i=0; i<items.length; i++)
- if (items[i].checked) {
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title type="text">Item</title><content type="application/xml">' +
- '<item>' +
- '<javaClass>' + catalogItems[i].javaClass + '</javaClass>' +
- '<name>' + catalogItems[i].name + '</name>' +
- '<currencyCode>' + catalogItems[i].currencyCode + '</currencyCode>' +
- '<currencySymbol>' + catalogItems[i].currencySymbol + '</currencySymbol>' +
- '<price>' + catalogItems[i].price + '</price>' +
- '</item>' +
- '</content></entry>';
- shoppingCart.post(entry, shoppingCart_postResponse);
- items[i].checked = false;
- }
- }
- function checkoutCart() {
- document.getElementById('store').innerHTML='<h2>' +
- 'Thanks for Shopping With Us!</h2>'+
- '<h2>Your Order</h2>'+
- '<form name="orderForm">'+
- document.getElementById('shoppingCart').innerHTML+
- '<br>'+
- document.getElementById('total').innerHTML+
- '<br>'+
- '<br>'+
- '<input type="submit" value="Continue Shopping">'+
- '</form>';
- shoppingCart.del("", null);
- }
- function deleteCart() {
- shoppingCart.del("", null);
- document.getElementById('shoppingCart').innerHTML = "";
- document.getElementById('total').innerHTML = "";
- }
-
- function init() {
-
- try {
- catalog.get(catalog_getResponse);
- shoppingCart.get("", shoppingCart_getResponse);
- }
- catch(e){
- alert(e);
- }
- }
-
-</script>
-
-</head>
-
-<body onload="init()">
-<h1>Store</h1>
- <div id="store">
- <h2>Catalog</h2>
- <form name="catalogForm">
- <div id="catalog" ></div>
- <br>
- <input type="button" onClick="addToCart()" value="Add to Cart">
- </form>
-
- <br>
-
- <h2>Your Shopping Cart</h2>
- <form name="shoppingCartForm">
- <div id="shoppingCart"></div>
- <br>
- <div id="total"></div>
- <br>
- <input type="button" onClick="checkoutCart()" value="Checkout">
- <input type="button" onClick="deleteCart()" value="Empty">
- <a href="../shoppingCart/">(feed)</a>
- </form>
- </div>
-</body>
-</html>
diff --git a/sca-cpp/trunk/test/store-cpp/htdocs/store.js b/sca-cpp/trunk/test/store-cpp/htdocs/store.js
deleted file mode 100644
index 9cd8eb526d..0000000000
--- a/sca-cpp/trunk/test/store-cpp/htdocs/store.js
+++ /dev/null
@@ -1,661 +0,0 @@
-
-/* Apache Tuscany SCA Widget header */
-
-/*
- * JSON-RPC JavaScript client
- *
- * $Id: jsonrpc.js,v 1.36.2.3 2006/03/08 15:09:37 mclark Exp $
- *
- * Copyright (c) 2003-2004 Jan-Klaas Kollhof
- * Copyright (c) 2005 Michael Clark, Metaparadigm Pte Ltd
- *
- * This code is based on Jan-Klaas' JavaScript o lait library (jsolait).
- *
- * Licensed 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.
- *
- */
-
-/*
- * Modifications for Apache Tuscany:
- * - JSONRpcClient_createMethod changed so callback is last arg
- */
-
-/* escape a character */
-
-escapeJSONChar =
-function escapeJSONChar(c)
-{
- if(c == "\"" || c == "\\") return "\\" + c;
- else if (c == "\b") return "\\b";
- else if (c == "\f") return "\\f";
- else if (c == "\n") return "\\n";
- else if (c == "\r") return "\\r";
- else if (c == "\t") return "\\t";
- var hex = c.charCodeAt(0).toString(16);
- if(hex.length == 1) return "\\u000" + hex;
- else if(hex.length == 2) return "\\u00" + hex;
- else if(hex.length == 3) return "\\u0" + hex;
- else return "\\u" + hex;
-};
-
-
-/* encode a string into JSON format */
-
-escapeJSONString =
-function escapeJSONString(s)
-{
- /* The following should suffice but Safari's regex is b0rken
- (doesn't support callback substitutions)
- return "\"" + s.replace(/([^\u0020-\u007f]|[\\\"])/g,
- escapeJSONChar) + "\"";
- */
-
- /* Rather inefficient way to do it */
- var parts = s.split("");
- for(var i=0; i < parts.length; i++) {
- var c =parts[i];
- if(c == '"' ||
- c == '\\' ||
- c.charCodeAt(0) < 32 ||
- c.charCodeAt(0) >= 128)
- parts[i] = escapeJSONChar(parts[i]);
- }
- return "\"" + parts.join("") + "\"";
-};
-
-
-/* Marshall objects to JSON format */
-
-toJSON = function toJSON(o)
-{
- if(o == null) {
- return "null";
- } else if(o.constructor == String) {
- return escapeJSONString(o);
- } else if(o.constructor == Number) {
- return o.toString();
- } else if(o.constructor == Boolean) {
- return o.toString();
- } else if(o.constructor == Date) {
- return '{javaClass: "java.util.Date", time: ' + o.valueOf() +'}';
- } else if(o.constructor == Array) {
- var v = [];
- for(var i = 0; i < o.length; i++) v.push(toJSON(o[i]));
- return "[" + v.join(", ") + "]";
- } else {
- var v = [];
- for(attr in o) {
- if(o[attr] == null) v.push("\"" + attr + "\": null");
- else if(typeof o[attr] == "function"); /* skip */
- else v.push(escapeJSONString(attr) + ": " + toJSON(o[attr]));
- }
- return "{" + v.join(", ") + "}";
- }
-};
-
-
-/* JSONRpcClient constructor */
-
-JSONRpcClient =
-function JSONRpcClient_ctor(serverURL, user, pass, objectID)
-{
- this.serverURL = serverURL;
- this.user = user;
- this.pass = pass;
- this.objectID = objectID;
-
- /* Add standard methods */
- if(this.objectID) {
- this._addMethods(["listMethods"]);
- var req = this._makeRequest("listMethods", []);
- } else {
- this._addMethods(["system.listMethods"]);
- var req = this._makeRequest("system.listMethods", []);
- }
- var m = this._sendRequest(req);
- this._addMethods(m);
-};
-
-
-/* JSONRpcCLient.Exception */
-
-JSONRpcClient.Exception =
-function JSONRpcClient_Exception_ctor(code, message, javaStack)
-{
- this.code = code;
- var name;
- if(javaStack) {
- this.javaStack = javaStack;
- var m = javaStack.match(/^([^:]*)/);
- if(m) name = m[0];
- }
- if(name) this.name = name;
- else this.name = "JSONRpcClientException";
- this.message = message;
-};
-
-JSONRpcClient.Exception.CODE_REMOTE_EXCEPTION = 490;
-JSONRpcClient.Exception.CODE_ERR_CLIENT = 550;
-JSONRpcClient.Exception.CODE_ERR_PARSE = 590;
-JSONRpcClient.Exception.CODE_ERR_NOMETHOD = 591;
-JSONRpcClient.Exception.CODE_ERR_UNMARSHALL = 592;
-JSONRpcClient.Exception.CODE_ERR_MARSHALL = 593;
-
-JSONRpcClient.Exception.prototype = new Error();
-
-JSONRpcClient.Exception.prototype.toString =
-function JSONRpcClient_Exception_toString(code, msg)
-{
- return this.name + ": " + this.message;
-};
-
-
-/* Default top level exception handler */
-
-JSONRpcClient.default_ex_handler =
-function JSONRpcClient_default_ex_handler(e) { alert(e); };
-
-
-/* Client settable variables */
-
-JSONRpcClient.toplevel_ex_handler = JSONRpcClient.default_ex_handler;
-JSONRpcClient.profile_async = false;
-JSONRpcClient.max_req_active = 1;
-JSONRpcClient.requestId = 1;
-
-
-/* JSONRpcClient implementation */
-
-JSONRpcClient.prototype._createMethod =
-function JSONRpcClient_createMethod(methodName)
-{
- var fn=function()
- {
- var args = [];
- var callback = null;
- for(var i=0;i<arguments.length;i++) args.push(arguments[i]);
-
-/* TUSCANY change callback to be last arg instead of first to match binding.ajax
- if(typeof args[0] == "function") callback = args.shift();
-*/
- if(typeof args[arguments.length-1] == "function") callback = args.pop();
-
- var req = fn.client._makeRequest.call(fn.client, fn.methodName,
- args, callback);
- if(callback == null) {
- return fn.client._sendRequest.call(fn.client, req);
- } else {
- JSONRpcClient.async_requests.push(req);
- JSONRpcClient.kick_async();
- return req.requestId;
- }
- };
- fn.client = this;
- fn.methodName = methodName;
- return fn;
-};
-
-JSONRpcClient.prototype._addMethods =
-function JSONRpcClient_addMethods(methodNames)
-{
- for(var i=0; i<methodNames.length; i++) {
- var obj = this;
- var names = methodNames[i].split(".");
- for(var n=0; n<names.length-1; n++) {
- var name = names[n];
- if(obj[name]) {
- obj = obj[name];
- } else {
- obj[name] = new Object();
- obj = obj[name];
- }
- }
- var name = names[names.length-1];
- if(!obj[name]) {
- var method = this._createMethod(methodNames[i]);
- obj[name] = method;
- }
- }
-};
-
-JSONRpcClient._getCharsetFromHeaders =
-function JSONRpcClient_getCharsetFromHeaders(http)
-{
- try {
- var contentType = http.getResponseHeader("Content-type");
- var parts = contentType.split(/\s*;\s*/);
- for(var i =0; i < parts.length; i++) {
- if(parts[i].substring(0, 8) == "charset=")
- return parts[i].substring(8, parts[i].length);
- }
- } catch (e) {}
- return "UTF-8"; /* default */
-};
-
-/* Async queue globals */
-JSONRpcClient.async_requests = [];
-JSONRpcClient.async_inflight = {};
-JSONRpcClient.async_responses = [];
-JSONRpcClient.async_timeout = null;
-JSONRpcClient.num_req_active = 0;
-
-JSONRpcClient._async_handler =
-function JSONRpcClient_async_handler()
-{
- JSONRpcClient.async_timeout = null;
-
- while(JSONRpcClient.async_responses.length > 0) {
- var res = JSONRpcClient.async_responses.shift();
- if(res.canceled) continue;
- if(res.profile) res.profile.dispatch = new Date();
- try {
- res.cb(res.result, res.ex, res.profile);
- } catch(e) {
- JSONRpcClient.toplevel_ex_handler(e);
- }
- }
-
- while(JSONRpcClient.async_requests.length > 0 &&
- JSONRpcClient.num_req_active < JSONRpcClient.max_req_active) {
- var req = JSONRpcClient.async_requests.shift();
- if(req.canceled) continue;
- req.client._sendRequest.call(req.client, req);
- }
-};
-
-JSONRpcClient.kick_async =
-function JSONRpcClient_kick_async()
-{
- if(JSONRpcClient.async_timeout == null)
- JSONRpcClient.async_timeout =
- setTimeout(JSONRpcClient._async_handler, 0);
-};
-
-JSONRpcClient.cancelRequest =
-function JSONRpcClient_cancelRequest(requestId)
-{
- /* If it is in flight then mark it as canceled in the inflight map
- and the XMLHttpRequest callback will discard the reply. */
- if(JSONRpcClient.async_inflight[requestId]) {
- JSONRpcClient.async_inflight[requestId].canceled = true;
- return true;
- }
-
- /* If its not in flight yet then we can just mark it as canceled in
- the the request queue and it will get discarded before being sent. */
- for(var i in JSONRpcClient.async_requests) {
- if(JSONRpcClient.async_requests[i].requestId == requestId) {
- JSONRpcClient.async_requests[i].canceled = true;
- return true;
- }
- }
-
- /* It may have returned from the network and be waiting for its callback
- to be dispatched, so mark it as canceled in the response queue
- and the response will get discarded before calling the callback. */
- for(var i in JSONRpcClient.async_responses) {
- if(JSONRpcClient.async_responses[i].requestId == requestId) {
- JSONRpcClient.async_responses[i].canceled = true;
- return true;
- }
- }
-
- return false;
-};
-
-JSONRpcClient.prototype._makeRequest =
-function JSONRpcClient_makeRequest(methodName, args, cb)
-{
- var req = {};
- req.client = this;
- req.requestId = JSONRpcClient.requestId++;
-
- var obj = {};
- obj.id = req.requestId;
- if (this.objectID)
- obj.method = ".obj#" + this.objectID + "." + methodName;
- else
- obj.method = methodName;
- obj.params = args;
-
- if (cb) req.cb = cb;
- if (JSONRpcClient.profile_async)
- req.profile = { "submit": new Date() };
- req.data = toJSON(obj);
-
- return req;
-};
-
-JSONRpcClient.prototype._sendRequest =
-function JSONRpcClient_sendRequest(req)
-{
- if(req.profile) req.profile.start = new Date();
-
- /* Get free http object from the pool */
- var http = JSONRpcClient.poolGetHTTPRequest();
- JSONRpcClient.num_req_active++;
-
- /* Send the request */
- if (typeof(this.user) == "undefined") {
- http.open("POST", this.serverURL, (req.cb != null));
- } else {
- http.open("POST", this.serverURL, (req.cb != null), this.user, this.pass);
- }
-
- /* setRequestHeader is missing in Opera 8 Beta */
- try { http.setRequestHeader("Content-type", "text/plain"); } catch(e) {}
-
- /* Construct call back if we have one */
- if(req.cb) {
- var self = this;
- http.onreadystatechange = function() {
- if(http.readyState == 4) {
- http.onreadystatechange = function () {};
- var res = { "cb": req.cb, "result": null, "ex": null};
- if (req.profile) {
- res.profile = req.profile;
- res.profile.end = new Date();
- }
- try { res.result = self._handleResponse(http); }
- catch(e) { res.ex = e; }
- if(!JSONRpcClient.async_inflight[req.requestId].canceled)
- JSONRpcClient.async_responses.push(res);
- delete JSONRpcClient.async_inflight[req.requestId];
- JSONRpcClient.kick_async();
- }
- };
- } else {
- http.onreadystatechange = function() {};
- }
-
- JSONRpcClient.async_inflight[req.requestId] = req;
-
- try {
- http.send(req.data);
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- if(!req.cb) return this._handleResponse(http);
-};
-
-JSONRpcClient.prototype._handleResponse =
-function JSONRpcClient_handleResponse(http)
-{
- /* Get the charset */
- if(!this.charset) {
- this.charset = JSONRpcClient._getCharsetFromHeaders(http);
- }
-
- /* Get request results */
- var status, statusText, data;
- try {
- status = http.status;
- statusText = http.statusText;
- data = http.responseText;
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- JSONRpcClient.kick_async();
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- /* Return http object to the pool; */
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
-
- /* Unmarshall the response */
- if(status != 200) {
- throw new JSONRpcClient.Exception(status, statusText);
- }
- var obj;
- try {
- eval("obj = " + data);
- } catch(e) {
- throw new JSONRpcClient.Exception(550, "error parsing result");
- }
- if(obj.error)
- throw new JSONRpcClient.Exception(obj.error.code, obj.error.msg,
- obj.error.trace);
- var res = obj.result;
-
- /* Handle CallableProxy */
- if(res && res.objectID && res.JSONRPCType == "CallableReference")
- return new JSONRpcClient(this.serverURL, this.user,
- this.pass, res.objectID);
-
- return res;
-};
-
-
-/* XMLHttpRequest wrapper code */
-
-/* XMLHttpRequest pool globals */
-JSONRpcClient.http_spare = [];
-JSONRpcClient.http_max_spare = 8;
-
-JSONRpcClient.poolGetHTTPRequest =
-function JSONRpcClient_pool_getHTTPRequest()
-{
- if(JSONRpcClient.http_spare.length > 0) {
- return JSONRpcClient.http_spare.pop();
- }
- return JSONRpcClient.getHTTPRequest();
-};
-
-JSONRpcClient.poolReturnHTTPRequest =
-function JSONRpcClient_poolReturnHTTPRequest(http)
-{
- if(JSONRpcClient.http_spare.length >= JSONRpcClient.http_max_spare)
- delete http;
- else
- JSONRpcClient.http_spare.push(http);
-};
-
-JSONRpcClient.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
-JSONRpcClient.getHTTPRequest =
-function JSONRpcClient_getHTTPRequest()
-{
- /* Mozilla XMLHttpRequest */
- try {
- JSONRpcClient.httpObjectName = "XMLHttpRequest";
- return new XMLHttpRequest();
- } catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < JSONRpcClient.msxmlNames.length; i++) {
- try {
- JSONRpcClient.httpObjectName = JSONRpcClient.msxmlNames[i];
- return new ActiveXObject(JSONRpcClient.msxmlNames[i]);
- } catch (e) {}
- }
-
- /* None found */
- JSONRpcClient.httpObjectName = null;
- throw new JSONRpcClient.Exception(0, "Can't create XMLHttpRequest object");
-};
-
-
-/*
- * 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.
- */
-
-function AtomClient(uri) {
-
- this.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
- this.uri=uri;
-
- this.get = function(id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("get - Error getting data from the server");
- }
- }
- }
- xhr.open("GET", uri + '/' + id, true);
- xhr.send(null);
- }
-
- this.post = function (entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 201) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("post - Error getting data from the server");
- }
- }
- }
- xhr.open("POST", uri, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.put = function (id, entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("put - Error getting data from the server");
- }
- }
- }
- xhr.open("PUT", uri + '/' + id, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.del = function (id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- if (responseFunction != null) responseFunction();
- } else {
- alert("delete - Error getting data from the server");
- }
- }
- }
- xhr.open("DELETE", uri + '/' + id, true);
- xhr.send(null);
- }
- this.createXMLHttpRequest = function () {
- /* Mozilla XMLHttpRequest */
- try {return new XMLHttpRequest();} catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < this.msxmlNames.length; i++) {
- try {return new ActiveXObject(this.msxmlNames[i]);} catch (e) {}
- }
- alert("XML http request not supported");
- return null;
- }
- if (typeof DOMParser == "undefined") {
- DOMParser = function () {}
-
- DOMParser.prototype.parseFromString = function (str, contentType) {
- if (typeof ActiveXObject != "undefined") {
- var d = new ActiveXObject("MSXML.DomDocument");
- d.loadXML(str);
- return d;
- } else if (typeof XMLHttpRequest != "undefined") {
- var req = new XMLHttpRequest;
- req.open("GET", "data:" + (contentType || "application/xml") +
- ";charset=utf-8," + encodeURIComponent(str), false);
- if (req.overrideMimeType) {
- req.overrideMimeType(contentType);
- }
- req.send(null);
- return req.responseXML;
- }
- }
- }
-}
-
-
-
-/* Tuscany Reference/Property injection code */
-
-if (!tuscany) {
-var tuscany = {};
-}
-if (!tuscany.sca) {
-tuscany.sca = {};
-}
-
-tuscany.sca.propertyMap = new String();
-tuscany.sca.Property = function (name) {
- return tuscany.sca.propertyMap[name];
-}
-
-tuscany.sca.referenceMap = new Object();
-tuscany.sca.referenceMap.catalog = new JSONRpcClient("/catalog").Service;
-tuscany.sca.referenceMap.shoppingCart = new AtomClient("/shoppingCart");
-tuscany.sca.referenceMap.shoppingTotal = new JSONRpcClient("/total").Service;
-tuscany.sca.Reference = function (name) {
- return tuscany.sca.referenceMap[name];
-}
-
-/** End of Apache Tuscany SCA Widget */
-
diff --git a/sca-cpp/trunk/test/store-cpp/server-test b/sca-cpp/trunk/test/store-cpp/server-test
deleted file mode 100755
index d2013f6892..0000000000
--- a/sca-cpp/trunk/test/store-cpp/server-test
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-echo "Testing..."
-here=`readlink -f $0`; here=`dirname $here`
-curl_prefix=`cat $here/../../modules/http/curl.prefix`
-
-# Setup
-./start
-sleep 2
-
-# Test HTTP GET
-$curl_prefix/bin/curl http://localhost:8090/store.html 2>/dev/null >tmp/store.html
-diff tmp/store.html htdocs/store.html
-rc=$?
-
-# Cleanup
-./stop
-sleep 2
-
-if [ "$rc" = "0" ]; then
- echo "OK"
-fi
-return $rc
diff --git a/sca-cpp/trunk/test/store-cpp/shopping-cart.cpp b/sca-cpp/trunk/test/store-cpp/shopping-cart.cpp
deleted file mode 100644
index eaad0d3c77..0000000000
--- a/sca-cpp/trunk/test/store-cpp/shopping-cart.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * 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.
- */
-
-/* $Rev$ $Date$ */
-
-/**
- * Shopping cart component implementation.
- */
-
-#include <apr_general.h>
-#include <apr_uuid.h>
-#include "string.hpp"
-#include "function.hpp"
-#include "list.hpp"
-#include "value.hpp"
-#include "monad.hpp"
-
-namespace tuscany {
-namespace store {
-
-const string cartId("1234");
-
-/**
- * Get the shopping cart from the cache. Return an empty
- * cart if not found.
- */
-const list<value> getcart(const value& id, const lambda<value(const list<value>&)> cache) {
- const value cart = cache(mklist<value>("get", mklist<value>(id)));
- if (isNil(cart))
- return value(list<value>());
- return (list<value>)cart;
-}
-
-/**
- * Returns a UUID.
- */
-const value uuid() {
- apr_uuid_t uuid;
- apr_uuid_get(&uuid);
- char buf[APR_UUID_FORMATTED_LENGTH];
- apr_uuid_format(buf, &uuid);
- return string(buf, APR_UUID_FORMATTED_LENGTH);
-}
-
-/**
- * Post a new item to the cart. Create a new cart if necessary.
- */
-const failable<value> post(unused const list<value>& collection, const value& item, const lambda<value(const list<value>&)> cache) {
- const value id(uuid());
- const list<value> newItem(mklist<value>(car<value>(item), id, caddr<value>(item)));
- const list<value> cart(cons<value>(newItem, getcart(cartId, cache)));
- cache(mklist<value>("put", mklist<value>(cartId), cart));
- return value(mklist<value>(id));
-}
-
-/**
- * Find an item in the cart.
- */
-const value find(const value& id, const list<value>& cart) {
- if (isNil(cart))
- return cons<value>(string("Item"), mklist<value>("0", list<value>()));
- if (id == cadr<value>(car(cart)))
- return car(cart);
- return find(id, cdr(cart));
-}
-
-/**
- * Return items from the cart.
- */
-const failable<value> get(const list<value>& id, const lambda<value(const list<value>&)> cache) {
- if (isNil(id))
- return value(append(mklist<value>(string("Your Cart"), cartId), getcart(cartId, cache)));
- return find(car(id), getcart(cartId, cache));
-}
-
-/**
- * Delete items from the cart.
- */
-const failable<value> del(const list<value>& id, unused const lambda<value(const list<value>&)> cache) {
- if (isNil(id))
- return cache(mklist<value>("delete", mklist<value>(cartId)));
- return value(true);
-}
-
-/**
- * Return the price of an item.
- */
-const double price(const list<value>& item) {
- return cadr<value>(assoc<value>("price", caddr(item)));
-}
-
-/**
- * Sum the prices of a list of items.
- */
-const double sum(const list<value>& items) {
- if (isNil(items))
- return 0;
- return price(car(items)) + sum(cdr(items));
-}
-
-/**
- * Return the total price of the items in the cart.
- */
-const failable<value> gettotal(const lambda<value(const list<value>&)> cache) {
- const list<value> cart(getcart(cartId, cache));
- return value(sum(cart));
-}
-
-/**
- * TODO remove this JSON-RPC specific function.
- */
-const failable<value> listMethods(unused const lambda<value(const list<value>&)> converter) {
- return value(mklist<value>(string("Service.gettotal")));
-}
-
-}
-}
-
-extern "C" {
-
-const tuscany::value apply(const tuscany::list<tuscany::value>& params) {
- const tuscany::value func(car(params));
- if (func == "post")
- return tuscany::store::post(cadr(params), caddr(params), cadddr(params));
- if (func == "get")
- return tuscany::store::get(cadr(params), caddr(params));
- if (func == "delete")
- return tuscany::store::del(cadr(params), caddr(params));
- if (func == "gettotal")
- return tuscany::store::gettotal(cadr(params));
- if (func == "listMethods")
- return tuscany::store::listMethods(cadr(params));
- return tuscany::mkfailure<tuscany::value>();
-}
-
-}
diff --git a/sca-cpp/trunk/test/store-cpp/ssl-start b/sca-cpp/trunk/test/store-cpp/ssl-start
deleted file mode 100755
index 9cb5b88974..0000000000
--- a/sca-cpp/trunk/test/store-cpp/ssl-start
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-ca-conf tmp localhost
-../../modules/http/httpd-cert-conf tmp localhost
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/http/httpd-ssl-conf tmp localhost 8453 htdocs
-../../modules/server/server-conf tmp
-../../modules/server/cpp-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/cache/memcached-start
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-cpp/start b/sca-cpp/trunk/test/store-cpp/start
deleted file mode 100755
index 7b9c0d6379..0000000000
--- a/sca-cpp/trunk/test/store-cpp/start
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/server/server-conf tmp
-../../modules/server/cpp-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/cache/memcached-start
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-cpp/stop b/sca-cpp/trunk/test/store-cpp/stop
deleted file mode 100755
index a59273b8ed..0000000000
--- a/sca-cpp/trunk/test/store-cpp/stop
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-stop tmp
-../../components/cache/memcached-stop
diff --git a/sca-cpp/trunk/test/store-cpp/store.composite b/sca-cpp/trunk/test/store-cpp/store.composite
deleted file mode 100644
index 056f7b4c68..0000000000
--- a/sca-cpp/trunk/test/store-cpp/store.composite
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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://store"
- name="store">
-
- <component name="Catalog">
- <implementation.cpp path=".libs" library="libfruits-catalog"/>
- <property name="currencyCode">USD</property>
- <service name="Catalog">
- <t:binding.jsonrpc uri="catalog"/>
- </service>
- <reference name="currencyConverter" target="CurrencyConverter"/>
- </component>
-
- <component name="ShoppingCart">
- <implementation.cpp path=".libs" library="libshopping-cart"/>
- <service name="ShoppingCart">
- <t:binding.atom uri="shoppingCart"/>
- </service>
- <service name="Total">
- <t:binding.jsonrpc uri="total"/>
- </service>
- <reference name="cache" target="Cache"/>
- </component>
-
- <component name="CurrencyConverter">
- <implementation.cpp path=".libs" library="libcurrency-converter"/>
- <service name="CurrencyConverter">
- <t:binding.jsonrpc uri="currencyConverter"/>
- </service>
- </component>
-
- <component name="Cache">
- <implementation.cpp path="../../components/cache/.libs" library="libmemcache"/>
- <service name="Cache">
- <t:binding.atom uri="cache"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-gae/Makefile.am b/sca-cpp/trunk/test/store-gae/Makefile.am
deleted file mode 100644
index bb39293d21..0000000000
--- a/sca-cpp/trunk/test/store-gae/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-# 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.
-
-if WANT_PYTHON
-if WANT_GAE
-
-noinst_DATA = target.stamp
-
-target.stamp: app.yaml *.py *.composite $(top_builddir)/modules/wsgi/*.py htdocs/*
- mkdir -p target
- cp app.yaml *.py *.composite `ls $(top_builddir)/modules/wsgi/*.py | grep -v "\-test"` target
- cp -R htdocs target/htdocs
- touch target.stamp
-
-clean-local:
- rm -rf target.stamp target
-
-TESTS = server-test
-
-endif
-endif
diff --git a/sca-cpp/trunk/test/store-gae/app.yaml b/sca-cpp/trunk/test/store-gae/app.yaml
deleted file mode 100644
index e5807c233a..0000000000
--- a/sca-cpp/trunk/test/store-gae/app.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-# 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.
-
-application: sca-store
-version: 1
-runtime: python
-api_version: 1
-skip_files:
-- ^(.*/)?app\.yaml
-- ^(.*/)?app\.yml
-- ^(.*/)?index\.yaml
-- ^(.*/)?index\.yml
-- ^(.*/)?#.*#
-- ^(.*/)?.*~
-- ^(.*/)?.*\.py[co]
-- ^(.*/)?.*/RCS/.*
-- ^(.*/)?\..*
-- ^(.*/)?.*-test$
-- ^(.*/)?.*\.cpp$
-- ^(.*/)?.*\.o$
-- ^(.*/)?core$
-- ^(.*/)?.*\.out$
-- ^(.*/)?.*\.log$
-- ^(.*/)?Makefile.*
-- ^(.*/)?tmp/.*
-- ^(.*/)?wsgi-start
-- ^(.*/)?wsgi-stop
-
-handlers:
-- url: /(.*\.(html|png))
- static_files: htdocs/\1
- upload: htdocs/(.*\.(html|png))
- secure: always
-
-- url: /.*
- script: composite.py
- secure: always
-
diff --git a/sca-cpp/trunk/test/store-gae/currency-converter.py b/sca-cpp/trunk/test/store-gae/currency-converter.py
deleted file mode 100644
index 2fded8f616..0000000000
--- a/sca-cpp/trunk/test/store-gae/currency-converter.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# 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.
-
-# Currency converter implementation
-
-def convert(fr, to, amount):
- if to == "EUR":
- return amount * 0.70
- return amount
-
-def symbol(currency):
- if currency == "EUR":
- return "E"
- return "$"
-
diff --git a/sca-cpp/trunk/test/store-gae/domain-backend.composite b/sca-cpp/trunk/test/store-gae/domain-backend.composite
deleted file mode 100644
index a543b9a6b5..0000000000
--- a/sca-cpp/trunk/test/store-gae/domain-backend.composite
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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://store"
- name="store-backend">
-
- <component name="Cache">
- <implementation.python script="gmemcache.py"/>
- <service name="Cache">
- <t:binding.atom uri="cache"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-gae/domain-frontend.composite b/sca-cpp/trunk/test/store-gae/domain-frontend.composite
deleted file mode 100644
index a183c84a76..0000000000
--- a/sca-cpp/trunk/test/store-gae/domain-frontend.composite
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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://store"
- name="store-frontend">
-
- <component name="Store">
- <t:implementation.python script="store.py"/>
- <service name="Widget">
- <t:binding.http uri="store"/>
- </service>
- <reference name="catalog">
- <t:binding.http uri="https://sca-store-backend.appspot.com/catalog"/>
- </reference>
- <reference name="shoppingCart">
- <t:binding.http uri="https://sca-store-backend.appspot.com/shoppingCart"/>
- </reference>
- <reference name="shoppingTotal">
- <t:binding.http uri="https://sca-store-backend.appspot.com/shoppingCart"/>
- </reference>
- </component>
-
- <component name="Catalog">
- <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:implementation.python script="shopping-cart.py"/>
- <service name="ShoppingCart">
- <t:binding.atom uri="shoppingCart"/>
- </service>
- <service name="Total">
- <t:binding.jsonrpc uri="total"/>
- </service>
- <reference name="cache">
- <t:binding.http uri="https://sca-store-backend.appspot.com/cache"/>
- </reference>
- </component>
-
- <component name="CurrencyConverter">
- <t:implementation.python script="currency-converter.py"/>
- <service name="CurrencyConverter">
- <t:binding.jsonrpc uri="currencyConverter"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-gae/domain-single.composite b/sca-cpp/trunk/test/store-gae/domain-single.composite
deleted file mode 100644
index 41ce77bedd..0000000000
--- a/sca-cpp/trunk/test/store-gae/domain-single.composite
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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://store"
- name="store">
-
- <component name="Store">
- <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/Cart"/>
- <reference name="shoppingTotal" target="ShoppingCart/Total"/>
- </component>
-
- <component name="Catalog">
- <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:implementation.python script="shopping-cart.py"/>
- <service name="ShoppingCart">
- <t:binding.atom uri="shoppingCart"/>
- </service>
- <service name="Total">
- <t:binding.jsonrpc uri="total"/>
- </service>
- <reference name="cache" target="Cache"/>
- </component>
-
- <component name="CurrencyConverter">
- <t:implementation.python script="currency-converter.py"/>
- <service name="CurrencyConverter">
- <t:binding.jsonrpc uri="currencyConverter"/>
- </service>
- </component>
-
- <component name="Cache">
- <implementation.python script="gmemcache.py"/>
- <service name="Cache">
- <t:binding.atom uri="cache"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-gae/domain.composite b/sca-cpp/trunk/test/store-gae/domain.composite
deleted file mode 100644
index 41ce77bedd..0000000000
--- a/sca-cpp/trunk/test/store-gae/domain.composite
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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://store"
- name="store">
-
- <component name="Store">
- <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/Cart"/>
- <reference name="shoppingTotal" target="ShoppingCart/Total"/>
- </component>
-
- <component name="Catalog">
- <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:implementation.python script="shopping-cart.py"/>
- <service name="ShoppingCart">
- <t:binding.atom uri="shoppingCart"/>
- </service>
- <service name="Total">
- <t:binding.jsonrpc uri="total"/>
- </service>
- <reference name="cache" target="Cache"/>
- </component>
-
- <component name="CurrencyConverter">
- <t:implementation.python script="currency-converter.py"/>
- <service name="CurrencyConverter">
- <t:binding.jsonrpc uri="currencyConverter"/>
- </service>
- </component>
-
- <component name="Cache">
- <implementation.python script="gmemcache.py"/>
- <service name="Cache">
- <t:binding.atom uri="cache"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-gae/fruits-catalog.py b/sca-cpp/trunk/test/store-gae/fruits-catalog.py
deleted file mode 100644
index 75c18f5f99..0000000000
--- a/sca-cpp/trunk/test/store-gae/fruits-catalog.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# 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.
-
-# Catalog implementation
-
-def get(converter, currencyCode):
- code = currencyCode()
- def convert(price):
- return converter("convert", "USD", code, price)
- symbol = converter("symbol", code)
- return (
- (("'javaClass", "services.Item"), ("'name", "Apple"), ("'currencyCode", code), ("'currencySymbol", symbol), ("'price", convert(2.99))),
- (("'javaClass", "services.Item"), ("'name", "Orange"), ("'currencyCode", code), ("'currencySymbol", symbol), ("'price", convert(3.55))),
- (("'javaClass", "services.Item"), ("'name", "Pear"), ("'currencyCode", code), ("'currencySymbol", symbol), ("'price", convert(1.55)))
- )
-
-# TODO remove these JSON-RPC specific functions
-def listMethods(converter, currencyCode):
- return ("Service.get",)
-
diff --git a/sca-cpp/trunk/test/store-gae/gmemcache.py b/sca-cpp/trunk/test/store-gae/gmemcache.py
deleted file mode 100644
index 61f1dc3486..0000000000
--- a/sca-cpp/trunk/test/store-gae/gmemcache.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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.
-
-# Google AppEngine Memcached based cache implementation
-import uuid
-from google.appengine.api import memcache
-
-# Post a new item to the cache
-def post(collection, item):
- id = collection + (str(uuid.uuid1()),)
- r = memcache.add(repr(id), item, 600)
- if r == False:
- return None
- return id
-
-# Get items from the cache
-def get(id):
- item = memcache.get(repr(id))
- return item
-
-# Update an item in the cache
-def put(id, item):
- return memcache.set(repr(id), item, 600)
-
-# Delete items from the cache
-def delete(id):
- r = memcache.delete(repr(id))
- if r != 2:
- return False
- return True
-
diff --git a/sca-cpp/trunk/test/store-gae/htdocs/store.html b/sca-cpp/trunk/test/store-gae/htdocs/store.html
deleted file mode 100644
index 21eabca7a7..0000000000
--- a/sca-cpp/trunk/test/store-gae/htdocs/store.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>Store</title>
-
-<script type="text/javascript" src="store.js"></script>
-
-<script language="JavaScript">
-
- //@Reference
- var catalog = new tuscany.sca.Reference("catalog");
-
- //@Reference
- var shoppingCart = new tuscany.sca.Reference("shoppingCart");
-
- //@Reference
- var shoppingTotal = new tuscany.sca.Reference("shoppingTotal");
-
- var catalogItems;
-
- function catalog_getResponse(items,exception) {
- if(exception){
- alert(exception.message);
- return;
- }
- var catalog = "";
-
- for (var i=0; i<items.length; i++) {
- var item = items[i].name + ' - ' + items[i].price;
- catalog += '<input name="items" type="checkbox" value="' +
- item + '">' + item + ' <br>';
- }
- document.getElementById('catalog').innerHTML=catalog;
- catalogItems = items;
-
- // TEMP
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
-
- function shoppingCart_getResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var list = "";
- for (var i=0; i<entries.length; i++) {
- var content = entries[i].getElementsByTagName("content")[0];
- var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
- var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
- list += name + ' - ' + price + ' <br>';
- }
- document.getElementById("shoppingCart").innerHTML = list;
-
- if (entries.length != 0) {
- try {
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
- catch(e){
- alert(e);
- }
- }
- }
- }
-
- function shoppingTotal_getTotalResponse(total,exception) {
- if(exception) {
- alert(exception.message);
- return;
- }
- document.getElementById('total').innerHTML = total;
- }
-
- function shoppingCart_postResponse(entry) {
- shoppingCart.get("", shoppingCart_getResponse);
- }
-
- function addToCart() {
- var items = document.catalogForm.items;
- var j = 0;
- for (var i=0; i<items.length; i++)
- if (items[i].checked) {
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title type="text">Item</title><content type="application/xml">' +
- '<item>' +
- '<javaClass>' + catalogItems[i].javaClass + '</javaClass>' +
- '<name>' + catalogItems[i].name + '</name>' +
- '<currencyCode>' + catalogItems[i].currencyCode + '</currencyCode>' +
- '<currencySymbol>' + catalogItems[i].currencySymbol + '</currencySymbol>' +
- '<price>' + catalogItems[i].price + '</price>' +
- '</item>' +
- '</content></entry>';
- shoppingCart.post(entry, shoppingCart_postResponse);
- items[i].checked = false;
- }
- }
- function checkoutCart() {
- document.getElementById('store').innerHTML='<h2>' +
- 'Thanks for Shopping With Us!</h2>'+
- '<h2>Your Order</h2>'+
- '<form name="orderForm">'+
- document.getElementById('shoppingCart').innerHTML+
- '<br>'+
- document.getElementById('total').innerHTML+
- '<br>'+
- '<br>'+
- '<input type="submit" value="Continue Shopping">'+
- '</form>';
- shoppingCart.del("", null);
- }
- function deleteCart() {
- shoppingCart.del("", null);
- document.getElementById('shoppingCart').innerHTML = "";
- document.getElementById('total').innerHTML = "";
- }
-
- function init() {
-
- try {
- catalog.get(catalog_getResponse);
- shoppingCart.get("", shoppingCart_getResponse);
- }
- catch(e){
- alert(e);
- }
- }
-
-</script>
-
-</head>
-
-<body onload="init()">
-<h1>Store</h1>
- <div id="store">
- <h2>Catalog</h2>
- <form name="catalogForm">
- <div id="catalog" ></div>
- <br>
- <input type="button" onClick="addToCart()" value="Add to Cart">
- </form>
-
- <br>
-
- <h2>Your Shopping Cart</h2>
- <form name="shoppingCartForm">
- <div id="shoppingCart"></div>
- <br>
- <div id="total"></div>
- <br>
- <input type="button" onClick="checkoutCart()" value="Checkout">
- <input type="button" onClick="deleteCart()" value="Empty">
- <a href="../shoppingCart/">(feed)</a>
- </form>
- </div>
-</body>
-</html>
diff --git a/sca-cpp/trunk/test/store-gae/htdocs/store.js b/sca-cpp/trunk/test/store-gae/htdocs/store.js
deleted file mode 100644
index 9cd8eb526d..0000000000
--- a/sca-cpp/trunk/test/store-gae/htdocs/store.js
+++ /dev/null
@@ -1,661 +0,0 @@
-
-/* Apache Tuscany SCA Widget header */
-
-/*
- * JSON-RPC JavaScript client
- *
- * $Id: jsonrpc.js,v 1.36.2.3 2006/03/08 15:09:37 mclark Exp $
- *
- * Copyright (c) 2003-2004 Jan-Klaas Kollhof
- * Copyright (c) 2005 Michael Clark, Metaparadigm Pte Ltd
- *
- * This code is based on Jan-Klaas' JavaScript o lait library (jsolait).
- *
- * Licensed 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.
- *
- */
-
-/*
- * Modifications for Apache Tuscany:
- * - JSONRpcClient_createMethod changed so callback is last arg
- */
-
-/* escape a character */
-
-escapeJSONChar =
-function escapeJSONChar(c)
-{
- if(c == "\"" || c == "\\") return "\\" + c;
- else if (c == "\b") return "\\b";
- else if (c == "\f") return "\\f";
- else if (c == "\n") return "\\n";
- else if (c == "\r") return "\\r";
- else if (c == "\t") return "\\t";
- var hex = c.charCodeAt(0).toString(16);
- if(hex.length == 1) return "\\u000" + hex;
- else if(hex.length == 2) return "\\u00" + hex;
- else if(hex.length == 3) return "\\u0" + hex;
- else return "\\u" + hex;
-};
-
-
-/* encode a string into JSON format */
-
-escapeJSONString =
-function escapeJSONString(s)
-{
- /* The following should suffice but Safari's regex is b0rken
- (doesn't support callback substitutions)
- return "\"" + s.replace(/([^\u0020-\u007f]|[\\\"])/g,
- escapeJSONChar) + "\"";
- */
-
- /* Rather inefficient way to do it */
- var parts = s.split("");
- for(var i=0; i < parts.length; i++) {
- var c =parts[i];
- if(c == '"' ||
- c == '\\' ||
- c.charCodeAt(0) < 32 ||
- c.charCodeAt(0) >= 128)
- parts[i] = escapeJSONChar(parts[i]);
- }
- return "\"" + parts.join("") + "\"";
-};
-
-
-/* Marshall objects to JSON format */
-
-toJSON = function toJSON(o)
-{
- if(o == null) {
- return "null";
- } else if(o.constructor == String) {
- return escapeJSONString(o);
- } else if(o.constructor == Number) {
- return o.toString();
- } else if(o.constructor == Boolean) {
- return o.toString();
- } else if(o.constructor == Date) {
- return '{javaClass: "java.util.Date", time: ' + o.valueOf() +'}';
- } else if(o.constructor == Array) {
- var v = [];
- for(var i = 0; i < o.length; i++) v.push(toJSON(o[i]));
- return "[" + v.join(", ") + "]";
- } else {
- var v = [];
- for(attr in o) {
- if(o[attr] == null) v.push("\"" + attr + "\": null");
- else if(typeof o[attr] == "function"); /* skip */
- else v.push(escapeJSONString(attr) + ": " + toJSON(o[attr]));
- }
- return "{" + v.join(", ") + "}";
- }
-};
-
-
-/* JSONRpcClient constructor */
-
-JSONRpcClient =
-function JSONRpcClient_ctor(serverURL, user, pass, objectID)
-{
- this.serverURL = serverURL;
- this.user = user;
- this.pass = pass;
- this.objectID = objectID;
-
- /* Add standard methods */
- if(this.objectID) {
- this._addMethods(["listMethods"]);
- var req = this._makeRequest("listMethods", []);
- } else {
- this._addMethods(["system.listMethods"]);
- var req = this._makeRequest("system.listMethods", []);
- }
- var m = this._sendRequest(req);
- this._addMethods(m);
-};
-
-
-/* JSONRpcCLient.Exception */
-
-JSONRpcClient.Exception =
-function JSONRpcClient_Exception_ctor(code, message, javaStack)
-{
- this.code = code;
- var name;
- if(javaStack) {
- this.javaStack = javaStack;
- var m = javaStack.match(/^([^:]*)/);
- if(m) name = m[0];
- }
- if(name) this.name = name;
- else this.name = "JSONRpcClientException";
- this.message = message;
-};
-
-JSONRpcClient.Exception.CODE_REMOTE_EXCEPTION = 490;
-JSONRpcClient.Exception.CODE_ERR_CLIENT = 550;
-JSONRpcClient.Exception.CODE_ERR_PARSE = 590;
-JSONRpcClient.Exception.CODE_ERR_NOMETHOD = 591;
-JSONRpcClient.Exception.CODE_ERR_UNMARSHALL = 592;
-JSONRpcClient.Exception.CODE_ERR_MARSHALL = 593;
-
-JSONRpcClient.Exception.prototype = new Error();
-
-JSONRpcClient.Exception.prototype.toString =
-function JSONRpcClient_Exception_toString(code, msg)
-{
- return this.name + ": " + this.message;
-};
-
-
-/* Default top level exception handler */
-
-JSONRpcClient.default_ex_handler =
-function JSONRpcClient_default_ex_handler(e) { alert(e); };
-
-
-/* Client settable variables */
-
-JSONRpcClient.toplevel_ex_handler = JSONRpcClient.default_ex_handler;
-JSONRpcClient.profile_async = false;
-JSONRpcClient.max_req_active = 1;
-JSONRpcClient.requestId = 1;
-
-
-/* JSONRpcClient implementation */
-
-JSONRpcClient.prototype._createMethod =
-function JSONRpcClient_createMethod(methodName)
-{
- var fn=function()
- {
- var args = [];
- var callback = null;
- for(var i=0;i<arguments.length;i++) args.push(arguments[i]);
-
-/* TUSCANY change callback to be last arg instead of first to match binding.ajax
- if(typeof args[0] == "function") callback = args.shift();
-*/
- if(typeof args[arguments.length-1] == "function") callback = args.pop();
-
- var req = fn.client._makeRequest.call(fn.client, fn.methodName,
- args, callback);
- if(callback == null) {
- return fn.client._sendRequest.call(fn.client, req);
- } else {
- JSONRpcClient.async_requests.push(req);
- JSONRpcClient.kick_async();
- return req.requestId;
- }
- };
- fn.client = this;
- fn.methodName = methodName;
- return fn;
-};
-
-JSONRpcClient.prototype._addMethods =
-function JSONRpcClient_addMethods(methodNames)
-{
- for(var i=0; i<methodNames.length; i++) {
- var obj = this;
- var names = methodNames[i].split(".");
- for(var n=0; n<names.length-1; n++) {
- var name = names[n];
- if(obj[name]) {
- obj = obj[name];
- } else {
- obj[name] = new Object();
- obj = obj[name];
- }
- }
- var name = names[names.length-1];
- if(!obj[name]) {
- var method = this._createMethod(methodNames[i]);
- obj[name] = method;
- }
- }
-};
-
-JSONRpcClient._getCharsetFromHeaders =
-function JSONRpcClient_getCharsetFromHeaders(http)
-{
- try {
- var contentType = http.getResponseHeader("Content-type");
- var parts = contentType.split(/\s*;\s*/);
- for(var i =0; i < parts.length; i++) {
- if(parts[i].substring(0, 8) == "charset=")
- return parts[i].substring(8, parts[i].length);
- }
- } catch (e) {}
- return "UTF-8"; /* default */
-};
-
-/* Async queue globals */
-JSONRpcClient.async_requests = [];
-JSONRpcClient.async_inflight = {};
-JSONRpcClient.async_responses = [];
-JSONRpcClient.async_timeout = null;
-JSONRpcClient.num_req_active = 0;
-
-JSONRpcClient._async_handler =
-function JSONRpcClient_async_handler()
-{
- JSONRpcClient.async_timeout = null;
-
- while(JSONRpcClient.async_responses.length > 0) {
- var res = JSONRpcClient.async_responses.shift();
- if(res.canceled) continue;
- if(res.profile) res.profile.dispatch = new Date();
- try {
- res.cb(res.result, res.ex, res.profile);
- } catch(e) {
- JSONRpcClient.toplevel_ex_handler(e);
- }
- }
-
- while(JSONRpcClient.async_requests.length > 0 &&
- JSONRpcClient.num_req_active < JSONRpcClient.max_req_active) {
- var req = JSONRpcClient.async_requests.shift();
- if(req.canceled) continue;
- req.client._sendRequest.call(req.client, req);
- }
-};
-
-JSONRpcClient.kick_async =
-function JSONRpcClient_kick_async()
-{
- if(JSONRpcClient.async_timeout == null)
- JSONRpcClient.async_timeout =
- setTimeout(JSONRpcClient._async_handler, 0);
-};
-
-JSONRpcClient.cancelRequest =
-function JSONRpcClient_cancelRequest(requestId)
-{
- /* If it is in flight then mark it as canceled in the inflight map
- and the XMLHttpRequest callback will discard the reply. */
- if(JSONRpcClient.async_inflight[requestId]) {
- JSONRpcClient.async_inflight[requestId].canceled = true;
- return true;
- }
-
- /* If its not in flight yet then we can just mark it as canceled in
- the the request queue and it will get discarded before being sent. */
- for(var i in JSONRpcClient.async_requests) {
- if(JSONRpcClient.async_requests[i].requestId == requestId) {
- JSONRpcClient.async_requests[i].canceled = true;
- return true;
- }
- }
-
- /* It may have returned from the network and be waiting for its callback
- to be dispatched, so mark it as canceled in the response queue
- and the response will get discarded before calling the callback. */
- for(var i in JSONRpcClient.async_responses) {
- if(JSONRpcClient.async_responses[i].requestId == requestId) {
- JSONRpcClient.async_responses[i].canceled = true;
- return true;
- }
- }
-
- return false;
-};
-
-JSONRpcClient.prototype._makeRequest =
-function JSONRpcClient_makeRequest(methodName, args, cb)
-{
- var req = {};
- req.client = this;
- req.requestId = JSONRpcClient.requestId++;
-
- var obj = {};
- obj.id = req.requestId;
- if (this.objectID)
- obj.method = ".obj#" + this.objectID + "." + methodName;
- else
- obj.method = methodName;
- obj.params = args;
-
- if (cb) req.cb = cb;
- if (JSONRpcClient.profile_async)
- req.profile = { "submit": new Date() };
- req.data = toJSON(obj);
-
- return req;
-};
-
-JSONRpcClient.prototype._sendRequest =
-function JSONRpcClient_sendRequest(req)
-{
- if(req.profile) req.profile.start = new Date();
-
- /* Get free http object from the pool */
- var http = JSONRpcClient.poolGetHTTPRequest();
- JSONRpcClient.num_req_active++;
-
- /* Send the request */
- if (typeof(this.user) == "undefined") {
- http.open("POST", this.serverURL, (req.cb != null));
- } else {
- http.open("POST", this.serverURL, (req.cb != null), this.user, this.pass);
- }
-
- /* setRequestHeader is missing in Opera 8 Beta */
- try { http.setRequestHeader("Content-type", "text/plain"); } catch(e) {}
-
- /* Construct call back if we have one */
- if(req.cb) {
- var self = this;
- http.onreadystatechange = function() {
- if(http.readyState == 4) {
- http.onreadystatechange = function () {};
- var res = { "cb": req.cb, "result": null, "ex": null};
- if (req.profile) {
- res.profile = req.profile;
- res.profile.end = new Date();
- }
- try { res.result = self._handleResponse(http); }
- catch(e) { res.ex = e; }
- if(!JSONRpcClient.async_inflight[req.requestId].canceled)
- JSONRpcClient.async_responses.push(res);
- delete JSONRpcClient.async_inflight[req.requestId];
- JSONRpcClient.kick_async();
- }
- };
- } else {
- http.onreadystatechange = function() {};
- }
-
- JSONRpcClient.async_inflight[req.requestId] = req;
-
- try {
- http.send(req.data);
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- if(!req.cb) return this._handleResponse(http);
-};
-
-JSONRpcClient.prototype._handleResponse =
-function JSONRpcClient_handleResponse(http)
-{
- /* Get the charset */
- if(!this.charset) {
- this.charset = JSONRpcClient._getCharsetFromHeaders(http);
- }
-
- /* Get request results */
- var status, statusText, data;
- try {
- status = http.status;
- statusText = http.statusText;
- data = http.responseText;
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- JSONRpcClient.kick_async();
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- /* Return http object to the pool; */
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
-
- /* Unmarshall the response */
- if(status != 200) {
- throw new JSONRpcClient.Exception(status, statusText);
- }
- var obj;
- try {
- eval("obj = " + data);
- } catch(e) {
- throw new JSONRpcClient.Exception(550, "error parsing result");
- }
- if(obj.error)
- throw new JSONRpcClient.Exception(obj.error.code, obj.error.msg,
- obj.error.trace);
- var res = obj.result;
-
- /* Handle CallableProxy */
- if(res && res.objectID && res.JSONRPCType == "CallableReference")
- return new JSONRpcClient(this.serverURL, this.user,
- this.pass, res.objectID);
-
- return res;
-};
-
-
-/* XMLHttpRequest wrapper code */
-
-/* XMLHttpRequest pool globals */
-JSONRpcClient.http_spare = [];
-JSONRpcClient.http_max_spare = 8;
-
-JSONRpcClient.poolGetHTTPRequest =
-function JSONRpcClient_pool_getHTTPRequest()
-{
- if(JSONRpcClient.http_spare.length > 0) {
- return JSONRpcClient.http_spare.pop();
- }
- return JSONRpcClient.getHTTPRequest();
-};
-
-JSONRpcClient.poolReturnHTTPRequest =
-function JSONRpcClient_poolReturnHTTPRequest(http)
-{
- if(JSONRpcClient.http_spare.length >= JSONRpcClient.http_max_spare)
- delete http;
- else
- JSONRpcClient.http_spare.push(http);
-};
-
-JSONRpcClient.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
-JSONRpcClient.getHTTPRequest =
-function JSONRpcClient_getHTTPRequest()
-{
- /* Mozilla XMLHttpRequest */
- try {
- JSONRpcClient.httpObjectName = "XMLHttpRequest";
- return new XMLHttpRequest();
- } catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < JSONRpcClient.msxmlNames.length; i++) {
- try {
- JSONRpcClient.httpObjectName = JSONRpcClient.msxmlNames[i];
- return new ActiveXObject(JSONRpcClient.msxmlNames[i]);
- } catch (e) {}
- }
-
- /* None found */
- JSONRpcClient.httpObjectName = null;
- throw new JSONRpcClient.Exception(0, "Can't create XMLHttpRequest object");
-};
-
-
-/*
- * 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.
- */
-
-function AtomClient(uri) {
-
- this.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
- this.uri=uri;
-
- this.get = function(id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("get - Error getting data from the server");
- }
- }
- }
- xhr.open("GET", uri + '/' + id, true);
- xhr.send(null);
- }
-
- this.post = function (entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 201) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("post - Error getting data from the server");
- }
- }
- }
- xhr.open("POST", uri, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.put = function (id, entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("put - Error getting data from the server");
- }
- }
- }
- xhr.open("PUT", uri + '/' + id, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.del = function (id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- if (responseFunction != null) responseFunction();
- } else {
- alert("delete - Error getting data from the server");
- }
- }
- }
- xhr.open("DELETE", uri + '/' + id, true);
- xhr.send(null);
- }
- this.createXMLHttpRequest = function () {
- /* Mozilla XMLHttpRequest */
- try {return new XMLHttpRequest();} catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < this.msxmlNames.length; i++) {
- try {return new ActiveXObject(this.msxmlNames[i]);} catch (e) {}
- }
- alert("XML http request not supported");
- return null;
- }
- if (typeof DOMParser == "undefined") {
- DOMParser = function () {}
-
- DOMParser.prototype.parseFromString = function (str, contentType) {
- if (typeof ActiveXObject != "undefined") {
- var d = new ActiveXObject("MSXML.DomDocument");
- d.loadXML(str);
- return d;
- } else if (typeof XMLHttpRequest != "undefined") {
- var req = new XMLHttpRequest;
- req.open("GET", "data:" + (contentType || "application/xml") +
- ";charset=utf-8," + encodeURIComponent(str), false);
- if (req.overrideMimeType) {
- req.overrideMimeType(contentType);
- }
- req.send(null);
- return req.responseXML;
- }
- }
- }
-}
-
-
-
-/* Tuscany Reference/Property injection code */
-
-if (!tuscany) {
-var tuscany = {};
-}
-if (!tuscany.sca) {
-tuscany.sca = {};
-}
-
-tuscany.sca.propertyMap = new String();
-tuscany.sca.Property = function (name) {
- return tuscany.sca.propertyMap[name];
-}
-
-tuscany.sca.referenceMap = new Object();
-tuscany.sca.referenceMap.catalog = new JSONRpcClient("/catalog").Service;
-tuscany.sca.referenceMap.shoppingCart = new AtomClient("/shoppingCart");
-tuscany.sca.referenceMap.shoppingTotal = new JSONRpcClient("/total").Service;
-tuscany.sca.Reference = function (name) {
- return tuscany.sca.referenceMap[name];
-}
-
-/** End of Apache Tuscany SCA Widget */
-
diff --git a/sca-cpp/trunk/test/store-gae/htpasswd.py b/sca-cpp/trunk/test/store-gae/htpasswd.py
deleted file mode 100644
index 75d94f58b6..0000000000
--- a/sca-cpp/trunk/test/store-gae/htpasswd.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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.
-
-# Configure the user and password used for HTTP basic authentication
-user = "foo"
-passwd = "foo"
-
diff --git a/sca-cpp/trunk/test/store-gae/server-test b/sca-cpp/trunk/test/store-gae/server-test
deleted file mode 100755
index c656cb33c2..0000000000
--- a/sca-cpp/trunk/test/store-gae/server-test
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-echo "Testing..."
-here=`readlink -f $0`; here=`dirname $here`
-curl_prefix=`cat $here/../../modules/http/curl.prefix`
-
-# Setup
-./start 2>/dev/null
-sleep 2
-
-# Test HTTP GET
-mkdir -p tmp
-$curl_prefix/bin/curl http://localhost:8090/store.html 2>/dev/null >tmp/store.html
-diff tmp/store.html htdocs/store.html
-rc=$?
-
-# Cleanup
-./stop
-sleep 2
-
-if [ "$rc" = "0" ]; then
- echo "OK"
-fi
-return $rc
diff --git a/sca-cpp/trunk/test/store-gae/shopping-cart.py b/sca-cpp/trunk/test/store-gae/shopping-cart.py
deleted file mode 100644
index c520da4303..0000000000
--- a/sca-cpp/trunk/test/store-gae/shopping-cart.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# 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.
-
-# Shopping cart implementation
-import uuid
-import sys
-
-cartId = "1234"
-
-# Get the shopping cart from the cache
-# Return an empty cart if not found
-def getcart(id, cache):
- cart = cache("get", (id,))
- if cart is None:
- return ()
- return cart
-
-# Post a new item to the cart, create a new cart if necessary
-def post(collection, item, cache):
- id = str(uuid.uuid1())
- cart = ((item[0], id, item[2]),) + getcart(cartId, cache)
- cache("put", (cartId,), cart)
- return (id,)
-
-# Find an item in the cart
-def find(id, cart):
- if cart == ():
- return ("Item", "0", ())
- elif id == cart[0][1]:
- return cart[0]
- else:
- return find(id, cart[1:])
-
-# Get items from the cart
-def get(id, cache):
- if id == ():
- return ("Your Cart", cartId) + getcart(cartId, cache)
- return find(id[0], getcart(cartId, cache))
-
-# Delete items from the cart
-def delete(id, cache):
- if id == ():
- return cache("delete", (cartId,))
- return True
-
-# Return the price of an item
-def price(item):
- return float(filter(lambda x: x[0] == "'price", item[2])[0][1])
-
-# Sum the prices of a list of items
-def sum(items):
- if items == ():
- return 0
- return price(items[0]) + sum(items[1:])
-
-# Return the total price of the items in the cart
-def gettotal(cache):
- cart = getcart(cartId, cache)
- return sum(cart)
-
-# TODO remove these JSON-RPC specific functions
-def listMethods(cache):
- return ("Service.gettotal",)
diff --git a/sca-cpp/trunk/test/store-gae/start b/sca-cpp/trunk/test/store-gae/start
deleted file mode 100755
index 3c9644e656..0000000000
--- a/sca-cpp/trunk/test/store-gae/start
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/wsgi/gae-start target 8090
-
diff --git a/sca-cpp/trunk/test/store-gae/stop b/sca-cpp/trunk/test/store-gae/stop
deleted file mode 100755
index 7c8a7e5551..0000000000
--- a/sca-cpp/trunk/test/store-gae/stop
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/wsgi/gae-stop target 8090
-
diff --git a/sca-cpp/trunk/test/store-gae/store.py b/sca-cpp/trunk/test/store-gae/store.py
deleted file mode 100644
index 35c0f5b2aa..0000000000
--- a/sca-cpp/trunk/test/store-gae/store.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# 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.
-
-# Store implementation
-
-def post(item, catalog, shoppingCart, shoppingTotal):
- return shoppingCart("post", item)
-
-def getall(catalog, shoppingCart, shoppingTotal):
- return shoppingCart("getall")
-
-def get(id, catalog, shoppingCart, shoppingTotal):
- return shoppingCart("get", id)
-
-def getcatalog(catalog, shoppingCart, shoppingTotal):
- return catalog("get")
-
-def gettotal(catalog, shoppingCart, shoppingTotal):
- return shoppingCart("gettotal")
-
-def deleteall(catalog, shoppingCart, shoppingTotal):
- return shoppingCart("deleteall")
-
-def delete(id, catalog, shoppingCart, shoppingTotal):
- return shoppingCart("delete", id)
-
-# TODO remove these JSON-RPC specific functions
-def listMethods(catalog, shoppingCart, shoppingTotal):
- return ("Service.get", "Service.gettotal")
-
diff --git a/sca-cpp/trunk/test/store-java/Makefile.am b/sca-cpp/trunk/test/store-java/Makefile.am
deleted file mode 100644
index 80972a0acc..0000000000
--- a/sca-cpp/trunk/test/store-java/Makefile.am
+++ /dev/null
@@ -1,30 +0,0 @@
-# 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.
-
-JAVAROOT = ${top_builddir}/test/store-java
-
-if WANT_JAVA
-
-AM_JAVACFLAGS = -cp ${top_builddir}/modules/java/libmod-tuscany-java-${PACKAGE_VERSION}.jar:${JAVAROOT}
-
-noinst_JAVA = store/*.java
-
-CLEANFILES = store/*.class
-
-TESTS = server-test
-
-endif
diff --git a/sca-cpp/trunk/test/store-java/htdocs/.htaccess b/sca-cpp/trunk/test/store-java/htdocs/.htaccess
deleted file mode 100644
index e2e343b6b2..0000000000
--- a/sca-cpp/trunk/test/store-java/htdocs/.htaccess
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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.
-
-DirectoryIndex store.html
diff --git a/sca-cpp/trunk/test/store-java/htdocs/store.html b/sca-cpp/trunk/test/store-java/htdocs/store.html
deleted file mode 100644
index 21eabca7a7..0000000000
--- a/sca-cpp/trunk/test/store-java/htdocs/store.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>Store</title>
-
-<script type="text/javascript" src="store.js"></script>
-
-<script language="JavaScript">
-
- //@Reference
- var catalog = new tuscany.sca.Reference("catalog");
-
- //@Reference
- var shoppingCart = new tuscany.sca.Reference("shoppingCart");
-
- //@Reference
- var shoppingTotal = new tuscany.sca.Reference("shoppingTotal");
-
- var catalogItems;
-
- function catalog_getResponse(items,exception) {
- if(exception){
- alert(exception.message);
- return;
- }
- var catalog = "";
-
- for (var i=0; i<items.length; i++) {
- var item = items[i].name + ' - ' + items[i].price;
- catalog += '<input name="items" type="checkbox" value="' +
- item + '">' + item + ' <br>';
- }
- document.getElementById('catalog').innerHTML=catalog;
- catalogItems = items;
-
- // TEMP
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
-
- function shoppingCart_getResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var list = "";
- for (var i=0; i<entries.length; i++) {
- var content = entries[i].getElementsByTagName("content")[0];
- var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
- var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
- list += name + ' - ' + price + ' <br>';
- }
- document.getElementById("shoppingCart").innerHTML = list;
-
- if (entries.length != 0) {
- try {
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
- catch(e){
- alert(e);
- }
- }
- }
- }
-
- function shoppingTotal_getTotalResponse(total,exception) {
- if(exception) {
- alert(exception.message);
- return;
- }
- document.getElementById('total').innerHTML = total;
- }
-
- function shoppingCart_postResponse(entry) {
- shoppingCart.get("", shoppingCart_getResponse);
- }
-
- function addToCart() {
- var items = document.catalogForm.items;
- var j = 0;
- for (var i=0; i<items.length; i++)
- if (items[i].checked) {
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title type="text">Item</title><content type="application/xml">' +
- '<item>' +
- '<javaClass>' + catalogItems[i].javaClass + '</javaClass>' +
- '<name>' + catalogItems[i].name + '</name>' +
- '<currencyCode>' + catalogItems[i].currencyCode + '</currencyCode>' +
- '<currencySymbol>' + catalogItems[i].currencySymbol + '</currencySymbol>' +
- '<price>' + catalogItems[i].price + '</price>' +
- '</item>' +
- '</content></entry>';
- shoppingCart.post(entry, shoppingCart_postResponse);
- items[i].checked = false;
- }
- }
- function checkoutCart() {
- document.getElementById('store').innerHTML='<h2>' +
- 'Thanks for Shopping With Us!</h2>'+
- '<h2>Your Order</h2>'+
- '<form name="orderForm">'+
- document.getElementById('shoppingCart').innerHTML+
- '<br>'+
- document.getElementById('total').innerHTML+
- '<br>'+
- '<br>'+
- '<input type="submit" value="Continue Shopping">'+
- '</form>';
- shoppingCart.del("", null);
- }
- function deleteCart() {
- shoppingCart.del("", null);
- document.getElementById('shoppingCart').innerHTML = "";
- document.getElementById('total').innerHTML = "";
- }
-
- function init() {
-
- try {
- catalog.get(catalog_getResponse);
- shoppingCart.get("", shoppingCart_getResponse);
- }
- catch(e){
- alert(e);
- }
- }
-
-</script>
-
-</head>
-
-<body onload="init()">
-<h1>Store</h1>
- <div id="store">
- <h2>Catalog</h2>
- <form name="catalogForm">
- <div id="catalog" ></div>
- <br>
- <input type="button" onClick="addToCart()" value="Add to Cart">
- </form>
-
- <br>
-
- <h2>Your Shopping Cart</h2>
- <form name="shoppingCartForm">
- <div id="shoppingCart"></div>
- <br>
- <div id="total"></div>
- <br>
- <input type="button" onClick="checkoutCart()" value="Checkout">
- <input type="button" onClick="deleteCart()" value="Empty">
- <a href="../shoppingCart/">(feed)</a>
- </form>
- </div>
-</body>
-</html>
diff --git a/sca-cpp/trunk/test/store-java/htdocs/store.js b/sca-cpp/trunk/test/store-java/htdocs/store.js
deleted file mode 100644
index 9cd8eb526d..0000000000
--- a/sca-cpp/trunk/test/store-java/htdocs/store.js
+++ /dev/null
@@ -1,661 +0,0 @@
-
-/* Apache Tuscany SCA Widget header */
-
-/*
- * JSON-RPC JavaScript client
- *
- * $Id: jsonrpc.js,v 1.36.2.3 2006/03/08 15:09:37 mclark Exp $
- *
- * Copyright (c) 2003-2004 Jan-Klaas Kollhof
- * Copyright (c) 2005 Michael Clark, Metaparadigm Pte Ltd
- *
- * This code is based on Jan-Klaas' JavaScript o lait library (jsolait).
- *
- * Licensed 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.
- *
- */
-
-/*
- * Modifications for Apache Tuscany:
- * - JSONRpcClient_createMethod changed so callback is last arg
- */
-
-/* escape a character */
-
-escapeJSONChar =
-function escapeJSONChar(c)
-{
- if(c == "\"" || c == "\\") return "\\" + c;
- else if (c == "\b") return "\\b";
- else if (c == "\f") return "\\f";
- else if (c == "\n") return "\\n";
- else if (c == "\r") return "\\r";
- else if (c == "\t") return "\\t";
- var hex = c.charCodeAt(0).toString(16);
- if(hex.length == 1) return "\\u000" + hex;
- else if(hex.length == 2) return "\\u00" + hex;
- else if(hex.length == 3) return "\\u0" + hex;
- else return "\\u" + hex;
-};
-
-
-/* encode a string into JSON format */
-
-escapeJSONString =
-function escapeJSONString(s)
-{
- /* The following should suffice but Safari's regex is b0rken
- (doesn't support callback substitutions)
- return "\"" + s.replace(/([^\u0020-\u007f]|[\\\"])/g,
- escapeJSONChar) + "\"";
- */
-
- /* Rather inefficient way to do it */
- var parts = s.split("");
- for(var i=0; i < parts.length; i++) {
- var c =parts[i];
- if(c == '"' ||
- c == '\\' ||
- c.charCodeAt(0) < 32 ||
- c.charCodeAt(0) >= 128)
- parts[i] = escapeJSONChar(parts[i]);
- }
- return "\"" + parts.join("") + "\"";
-};
-
-
-/* Marshall objects to JSON format */
-
-toJSON = function toJSON(o)
-{
- if(o == null) {
- return "null";
- } else if(o.constructor == String) {
- return escapeJSONString(o);
- } else if(o.constructor == Number) {
- return o.toString();
- } else if(o.constructor == Boolean) {
- return o.toString();
- } else if(o.constructor == Date) {
- return '{javaClass: "java.util.Date", time: ' + o.valueOf() +'}';
- } else if(o.constructor == Array) {
- var v = [];
- for(var i = 0; i < o.length; i++) v.push(toJSON(o[i]));
- return "[" + v.join(", ") + "]";
- } else {
- var v = [];
- for(attr in o) {
- if(o[attr] == null) v.push("\"" + attr + "\": null");
- else if(typeof o[attr] == "function"); /* skip */
- else v.push(escapeJSONString(attr) + ": " + toJSON(o[attr]));
- }
- return "{" + v.join(", ") + "}";
- }
-};
-
-
-/* JSONRpcClient constructor */
-
-JSONRpcClient =
-function JSONRpcClient_ctor(serverURL, user, pass, objectID)
-{
- this.serverURL = serverURL;
- this.user = user;
- this.pass = pass;
- this.objectID = objectID;
-
- /* Add standard methods */
- if(this.objectID) {
- this._addMethods(["listMethods"]);
- var req = this._makeRequest("listMethods", []);
- } else {
- this._addMethods(["system.listMethods"]);
- var req = this._makeRequest("system.listMethods", []);
- }
- var m = this._sendRequest(req);
- this._addMethods(m);
-};
-
-
-/* JSONRpcCLient.Exception */
-
-JSONRpcClient.Exception =
-function JSONRpcClient_Exception_ctor(code, message, javaStack)
-{
- this.code = code;
- var name;
- if(javaStack) {
- this.javaStack = javaStack;
- var m = javaStack.match(/^([^:]*)/);
- if(m) name = m[0];
- }
- if(name) this.name = name;
- else this.name = "JSONRpcClientException";
- this.message = message;
-};
-
-JSONRpcClient.Exception.CODE_REMOTE_EXCEPTION = 490;
-JSONRpcClient.Exception.CODE_ERR_CLIENT = 550;
-JSONRpcClient.Exception.CODE_ERR_PARSE = 590;
-JSONRpcClient.Exception.CODE_ERR_NOMETHOD = 591;
-JSONRpcClient.Exception.CODE_ERR_UNMARSHALL = 592;
-JSONRpcClient.Exception.CODE_ERR_MARSHALL = 593;
-
-JSONRpcClient.Exception.prototype = new Error();
-
-JSONRpcClient.Exception.prototype.toString =
-function JSONRpcClient_Exception_toString(code, msg)
-{
- return this.name + ": " + this.message;
-};
-
-
-/* Default top level exception handler */
-
-JSONRpcClient.default_ex_handler =
-function JSONRpcClient_default_ex_handler(e) { alert(e); };
-
-
-/* Client settable variables */
-
-JSONRpcClient.toplevel_ex_handler = JSONRpcClient.default_ex_handler;
-JSONRpcClient.profile_async = false;
-JSONRpcClient.max_req_active = 1;
-JSONRpcClient.requestId = 1;
-
-
-/* JSONRpcClient implementation */
-
-JSONRpcClient.prototype._createMethod =
-function JSONRpcClient_createMethod(methodName)
-{
- var fn=function()
- {
- var args = [];
- var callback = null;
- for(var i=0;i<arguments.length;i++) args.push(arguments[i]);
-
-/* TUSCANY change callback to be last arg instead of first to match binding.ajax
- if(typeof args[0] == "function") callback = args.shift();
-*/
- if(typeof args[arguments.length-1] == "function") callback = args.pop();
-
- var req = fn.client._makeRequest.call(fn.client, fn.methodName,
- args, callback);
- if(callback == null) {
- return fn.client._sendRequest.call(fn.client, req);
- } else {
- JSONRpcClient.async_requests.push(req);
- JSONRpcClient.kick_async();
- return req.requestId;
- }
- };
- fn.client = this;
- fn.methodName = methodName;
- return fn;
-};
-
-JSONRpcClient.prototype._addMethods =
-function JSONRpcClient_addMethods(methodNames)
-{
- for(var i=0; i<methodNames.length; i++) {
- var obj = this;
- var names = methodNames[i].split(".");
- for(var n=0; n<names.length-1; n++) {
- var name = names[n];
- if(obj[name]) {
- obj = obj[name];
- } else {
- obj[name] = new Object();
- obj = obj[name];
- }
- }
- var name = names[names.length-1];
- if(!obj[name]) {
- var method = this._createMethod(methodNames[i]);
- obj[name] = method;
- }
- }
-};
-
-JSONRpcClient._getCharsetFromHeaders =
-function JSONRpcClient_getCharsetFromHeaders(http)
-{
- try {
- var contentType = http.getResponseHeader("Content-type");
- var parts = contentType.split(/\s*;\s*/);
- for(var i =0; i < parts.length; i++) {
- if(parts[i].substring(0, 8) == "charset=")
- return parts[i].substring(8, parts[i].length);
- }
- } catch (e) {}
- return "UTF-8"; /* default */
-};
-
-/* Async queue globals */
-JSONRpcClient.async_requests = [];
-JSONRpcClient.async_inflight = {};
-JSONRpcClient.async_responses = [];
-JSONRpcClient.async_timeout = null;
-JSONRpcClient.num_req_active = 0;
-
-JSONRpcClient._async_handler =
-function JSONRpcClient_async_handler()
-{
- JSONRpcClient.async_timeout = null;
-
- while(JSONRpcClient.async_responses.length > 0) {
- var res = JSONRpcClient.async_responses.shift();
- if(res.canceled) continue;
- if(res.profile) res.profile.dispatch = new Date();
- try {
- res.cb(res.result, res.ex, res.profile);
- } catch(e) {
- JSONRpcClient.toplevel_ex_handler(e);
- }
- }
-
- while(JSONRpcClient.async_requests.length > 0 &&
- JSONRpcClient.num_req_active < JSONRpcClient.max_req_active) {
- var req = JSONRpcClient.async_requests.shift();
- if(req.canceled) continue;
- req.client._sendRequest.call(req.client, req);
- }
-};
-
-JSONRpcClient.kick_async =
-function JSONRpcClient_kick_async()
-{
- if(JSONRpcClient.async_timeout == null)
- JSONRpcClient.async_timeout =
- setTimeout(JSONRpcClient._async_handler, 0);
-};
-
-JSONRpcClient.cancelRequest =
-function JSONRpcClient_cancelRequest(requestId)
-{
- /* If it is in flight then mark it as canceled in the inflight map
- and the XMLHttpRequest callback will discard the reply. */
- if(JSONRpcClient.async_inflight[requestId]) {
- JSONRpcClient.async_inflight[requestId].canceled = true;
- return true;
- }
-
- /* If its not in flight yet then we can just mark it as canceled in
- the the request queue and it will get discarded before being sent. */
- for(var i in JSONRpcClient.async_requests) {
- if(JSONRpcClient.async_requests[i].requestId == requestId) {
- JSONRpcClient.async_requests[i].canceled = true;
- return true;
- }
- }
-
- /* It may have returned from the network and be waiting for its callback
- to be dispatched, so mark it as canceled in the response queue
- and the response will get discarded before calling the callback. */
- for(var i in JSONRpcClient.async_responses) {
- if(JSONRpcClient.async_responses[i].requestId == requestId) {
- JSONRpcClient.async_responses[i].canceled = true;
- return true;
- }
- }
-
- return false;
-};
-
-JSONRpcClient.prototype._makeRequest =
-function JSONRpcClient_makeRequest(methodName, args, cb)
-{
- var req = {};
- req.client = this;
- req.requestId = JSONRpcClient.requestId++;
-
- var obj = {};
- obj.id = req.requestId;
- if (this.objectID)
- obj.method = ".obj#" + this.objectID + "." + methodName;
- else
- obj.method = methodName;
- obj.params = args;
-
- if (cb) req.cb = cb;
- if (JSONRpcClient.profile_async)
- req.profile = { "submit": new Date() };
- req.data = toJSON(obj);
-
- return req;
-};
-
-JSONRpcClient.prototype._sendRequest =
-function JSONRpcClient_sendRequest(req)
-{
- if(req.profile) req.profile.start = new Date();
-
- /* Get free http object from the pool */
- var http = JSONRpcClient.poolGetHTTPRequest();
- JSONRpcClient.num_req_active++;
-
- /* Send the request */
- if (typeof(this.user) == "undefined") {
- http.open("POST", this.serverURL, (req.cb != null));
- } else {
- http.open("POST", this.serverURL, (req.cb != null), this.user, this.pass);
- }
-
- /* setRequestHeader is missing in Opera 8 Beta */
- try { http.setRequestHeader("Content-type", "text/plain"); } catch(e) {}
-
- /* Construct call back if we have one */
- if(req.cb) {
- var self = this;
- http.onreadystatechange = function() {
- if(http.readyState == 4) {
- http.onreadystatechange = function () {};
- var res = { "cb": req.cb, "result": null, "ex": null};
- if (req.profile) {
- res.profile = req.profile;
- res.profile.end = new Date();
- }
- try { res.result = self._handleResponse(http); }
- catch(e) { res.ex = e; }
- if(!JSONRpcClient.async_inflight[req.requestId].canceled)
- JSONRpcClient.async_responses.push(res);
- delete JSONRpcClient.async_inflight[req.requestId];
- JSONRpcClient.kick_async();
- }
- };
- } else {
- http.onreadystatechange = function() {};
- }
-
- JSONRpcClient.async_inflight[req.requestId] = req;
-
- try {
- http.send(req.data);
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- if(!req.cb) return this._handleResponse(http);
-};
-
-JSONRpcClient.prototype._handleResponse =
-function JSONRpcClient_handleResponse(http)
-{
- /* Get the charset */
- if(!this.charset) {
- this.charset = JSONRpcClient._getCharsetFromHeaders(http);
- }
-
- /* Get request results */
- var status, statusText, data;
- try {
- status = http.status;
- statusText = http.statusText;
- data = http.responseText;
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- JSONRpcClient.kick_async();
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- /* Return http object to the pool; */
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
-
- /* Unmarshall the response */
- if(status != 200) {
- throw new JSONRpcClient.Exception(status, statusText);
- }
- var obj;
- try {
- eval("obj = " + data);
- } catch(e) {
- throw new JSONRpcClient.Exception(550, "error parsing result");
- }
- if(obj.error)
- throw new JSONRpcClient.Exception(obj.error.code, obj.error.msg,
- obj.error.trace);
- var res = obj.result;
-
- /* Handle CallableProxy */
- if(res && res.objectID && res.JSONRPCType == "CallableReference")
- return new JSONRpcClient(this.serverURL, this.user,
- this.pass, res.objectID);
-
- return res;
-};
-
-
-/* XMLHttpRequest wrapper code */
-
-/* XMLHttpRequest pool globals */
-JSONRpcClient.http_spare = [];
-JSONRpcClient.http_max_spare = 8;
-
-JSONRpcClient.poolGetHTTPRequest =
-function JSONRpcClient_pool_getHTTPRequest()
-{
- if(JSONRpcClient.http_spare.length > 0) {
- return JSONRpcClient.http_spare.pop();
- }
- return JSONRpcClient.getHTTPRequest();
-};
-
-JSONRpcClient.poolReturnHTTPRequest =
-function JSONRpcClient_poolReturnHTTPRequest(http)
-{
- if(JSONRpcClient.http_spare.length >= JSONRpcClient.http_max_spare)
- delete http;
- else
- JSONRpcClient.http_spare.push(http);
-};
-
-JSONRpcClient.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
-JSONRpcClient.getHTTPRequest =
-function JSONRpcClient_getHTTPRequest()
-{
- /* Mozilla XMLHttpRequest */
- try {
- JSONRpcClient.httpObjectName = "XMLHttpRequest";
- return new XMLHttpRequest();
- } catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < JSONRpcClient.msxmlNames.length; i++) {
- try {
- JSONRpcClient.httpObjectName = JSONRpcClient.msxmlNames[i];
- return new ActiveXObject(JSONRpcClient.msxmlNames[i]);
- } catch (e) {}
- }
-
- /* None found */
- JSONRpcClient.httpObjectName = null;
- throw new JSONRpcClient.Exception(0, "Can't create XMLHttpRequest object");
-};
-
-
-/*
- * 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.
- */
-
-function AtomClient(uri) {
-
- this.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
- this.uri=uri;
-
- this.get = function(id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("get - Error getting data from the server");
- }
- }
- }
- xhr.open("GET", uri + '/' + id, true);
- xhr.send(null);
- }
-
- this.post = function (entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 201) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("post - Error getting data from the server");
- }
- }
- }
- xhr.open("POST", uri, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.put = function (id, entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("put - Error getting data from the server");
- }
- }
- }
- xhr.open("PUT", uri + '/' + id, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.del = function (id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- if (responseFunction != null) responseFunction();
- } else {
- alert("delete - Error getting data from the server");
- }
- }
- }
- xhr.open("DELETE", uri + '/' + id, true);
- xhr.send(null);
- }
- this.createXMLHttpRequest = function () {
- /* Mozilla XMLHttpRequest */
- try {return new XMLHttpRequest();} catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < this.msxmlNames.length; i++) {
- try {return new ActiveXObject(this.msxmlNames[i]);} catch (e) {}
- }
- alert("XML http request not supported");
- return null;
- }
- if (typeof DOMParser == "undefined") {
- DOMParser = function () {}
-
- DOMParser.prototype.parseFromString = function (str, contentType) {
- if (typeof ActiveXObject != "undefined") {
- var d = new ActiveXObject("MSXML.DomDocument");
- d.loadXML(str);
- return d;
- } else if (typeof XMLHttpRequest != "undefined") {
- var req = new XMLHttpRequest;
- req.open("GET", "data:" + (contentType || "application/xml") +
- ";charset=utf-8," + encodeURIComponent(str), false);
- if (req.overrideMimeType) {
- req.overrideMimeType(contentType);
- }
- req.send(null);
- return req.responseXML;
- }
- }
- }
-}
-
-
-
-/* Tuscany Reference/Property injection code */
-
-if (!tuscany) {
-var tuscany = {};
-}
-if (!tuscany.sca) {
-tuscany.sca = {};
-}
-
-tuscany.sca.propertyMap = new String();
-tuscany.sca.Property = function (name) {
- return tuscany.sca.propertyMap[name];
-}
-
-tuscany.sca.referenceMap = new Object();
-tuscany.sca.referenceMap.catalog = new JSONRpcClient("/catalog").Service;
-tuscany.sca.referenceMap.shoppingCart = new AtomClient("/shoppingCart");
-tuscany.sca.referenceMap.shoppingTotal = new JSONRpcClient("/total").Service;
-tuscany.sca.Reference = function (name) {
- return tuscany.sca.referenceMap[name];
-}
-
-/** End of Apache Tuscany SCA Widget */
-
diff --git a/sca-cpp/trunk/test/store-java/server-test b/sca-cpp/trunk/test/store-java/server-test
deleted file mode 100755
index d2013f6892..0000000000
--- a/sca-cpp/trunk/test/store-java/server-test
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-echo "Testing..."
-here=`readlink -f $0`; here=`dirname $here`
-curl_prefix=`cat $here/../../modules/http/curl.prefix`
-
-# Setup
-./start
-sleep 2
-
-# Test HTTP GET
-$curl_prefix/bin/curl http://localhost:8090/store.html 2>/dev/null >tmp/store.html
-diff tmp/store.html htdocs/store.html
-rc=$?
-
-# Cleanup
-./stop
-sleep 2
-
-if [ "$rc" = "0" ]; then
- echo "OK"
-fi
-return $rc
diff --git a/sca-cpp/trunk/test/store-java/ssl-start b/sca-cpp/trunk/test/store-java/ssl-start
deleted file mode 100755
index ec44ba1ac0..0000000000
--- a/sca-cpp/trunk/test/store-java/ssl-start
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-ca-conf tmp localhost
-../../modules/http/httpd-cert-conf tmp localhost
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/http/httpd-ssl-conf tmp localhost 8453 htdocs
-../../modules/server/server-conf tmp
-../../modules/java/java-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-export CLASSPATH=`pwd`/../../modules/java/libmod-tuscany-java-1.0.jar:`pwd`
-
-../../components/cache/memcached-start
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-java/start b/sca-cpp/trunk/test/store-java/start
deleted file mode 100755
index c8146e9e46..0000000000
--- a/sca-cpp/trunk/test/store-java/start
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/server/server-conf tmp
-../../modules/java/java-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-export CLASSPATH=`pwd`/../../modules/java/libmod-tuscany-java-1.0.jar:`pwd`
-
-../../components/cache/memcached-start
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-java/stop b/sca-cpp/trunk/test/store-java/stop
deleted file mode 100755
index 79d914e937..0000000000
--- a/sca-cpp/trunk/test/store-java/stop
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-export CLASSPATH=`pwd`/../../modules/java/libmod-tuscany-java-1.0.jar:`pwd`
-
-../../modules/http/httpd-stop tmp
-../../components/cache/memcached-stop
diff --git a/sca-cpp/trunk/test/store-java/store.composite b/sca-cpp/trunk/test/store-java/store.composite
deleted file mode 100644
index 8d733db134..0000000000
--- a/sca-cpp/trunk/test/store-java/store.composite
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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://store"
- name="store">
-
- <component name="Catalog">
- <implementation.java class="store.FruitsCatalogImpl"/>
- <property name="currencyCode">USD</property>
- <service name="Catalog">
- <t:binding.jsonrpc uri="catalog"/>
- </service>
- <reference name="currencyConverter" target="CurrencyConverter"/>
- </component>
-
- <component name="ShoppingCart">
- <implementation.java class="store.ShoppingCartImpl"/>
- <service name="ShoppingCart">
- <t:binding.atom uri="shoppingCart"/>
- </service>
- <service name="Total">
- <t:binding.jsonrpc uri="total"/>
- </service>
- <reference name="cache" target="Cache"/>
- </component>
-
- <component name="CurrencyConverter">
- <implementation.java class="store.CurrencyConverterImpl"/>
- <service name="CurrencyConverter">
- <t:binding.jsonrpc uri="currencyConverter"/>
- </service>
- </component>
-
- <component name="Cache">
- <implementation.cpp path="../../components/cache/.libs" library="libmemcache"/>
- <service name="Cache">
- <t:binding.atom uri="cache"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-java/store/CurrencyConverter.java b/sca-cpp/trunk/test/store-java/store/CurrencyConverter.java
deleted file mode 100644
index 1ed15a670a..0000000000
--- a/sca-cpp/trunk/test/store-java/store/CurrencyConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.
- */
-
-package store;
-
-public interface CurrencyConverter {
-
- Double convert(String from, String to, Double amount);
-
- String symbol(String currency);
-
-}
diff --git a/sca-cpp/trunk/test/store-java/store/CurrencyConverterImpl.java b/sca-cpp/trunk/test/store-java/store/CurrencyConverterImpl.java
deleted file mode 100644
index a6d0fd00b3..0000000000
--- a/sca-cpp/trunk/test/store-java/store/CurrencyConverterImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.
- */
-
-package store;
-
-/**
- * Currency converter component implementation.
- */
-public class CurrencyConverterImpl {
-
- /**
- * Convert an amount from USD to a currency.
- */
- public Double convert(String from, String to, Double amount) {
- if ("EUR".equals(to))
- return amount * 0.70;
- return amount;
- }
-
- /**
- * Return a currency symbol.
- */
- public String symbol(String currency) {
- if ("EUR".equals(currency))
- return "E";
- return "$";
- }
-
-}
diff --git a/sca-cpp/trunk/test/store-java/store/FruitsCatalogImpl.java b/sca-cpp/trunk/test/store-java/store/FruitsCatalogImpl.java
deleted file mode 100644
index 2904bbd8a1..0000000000
--- a/sca-cpp/trunk/test/store-java/store/FruitsCatalogImpl.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.
- */
-
-package store;
-
-import static org.apache.tuscany.IterableUtil.*;
-
-import org.apache.tuscany.Service;
-
-/**
- * Catalog component implementation.
- */
-public class FruitsCatalogImpl {
-
- /**
- * Returns the catalog.
- */
- public Iterable<?> get(final CurrencyConverter converter, final Service currencyCode) {
- final String code = currencyCode.eval();
-
- class Converter {
- Double convert(final Double price) {
- return converter.convert(code, "USD", price);
- }
- }
-
- final Converter c = new Converter();
- final String symbol = converter.symbol(code);
-
- return list(list(list("'javaClass", "services.Item"), list("'name", "Apple"), list("'currencyCode", code), list("'currencySymbol", symbol), list("'price", c.convert(2.99))),
- list(list("'javaClass", "services.Item"), list("'name", "Orange"), list("'currencyCode", code), list("'currencySymbol", symbol), list("'price", c.convert(3.55))),
- list(list("'javaClass", "services.Item"), list("'name", "Pear"), list("'currencyCode", code), list("'currencySymbol", symbol), list("'price", c.convert(1.55))));
- }
-
- /**
- * TODO remove this JSON-RPC specific function.
- */
- public Iterable<?> listMethods(final CurrencyConverter converter, final Service currencyCode) {
- return list("Service.get");
- }
-
-}
diff --git a/sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java b/sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java
deleted file mode 100644
index 878e0cff49..0000000000
--- a/sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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.
- */
-
-package store;
-
-import static org.apache.tuscany.IterableUtil.*;
-import static org.apache.tuscany.UUIDUtil.*;
-
-import org.apache.tuscany.Service;
-
-/**
- * Shopping cart component implementation.
- */
-public class ShoppingCartImpl {
-
- static String cartId = "1234";
-
- /**
- * Get the shopping cart from the cache. Return an empty cart if not found.
- */
- public Iterable<?> getcart(final String id, final Service cache) {
- final Iterable<String> iid = list(id);
- final Iterable<?> cart = cache.get(iid);
- if(cart == null)
- return list();
- return cart;
- }
-
- /**
- * Post a new item to the cart. Create a new cart if necessary.
- */
- public Iterable<String> post(final Iterable<String> collection, final Iterable<?> item, final Service cache) {
- final String id = uuid();
- final Iterable<?> newItem = list(car(item), id, caddr(item));
- final Iterable<?> cart = cons(newItem, this.getcart(cartId, cache));
- final Iterable<String> iid = list(cartId);
- cache.put(iid, cart);
- return list(id);
- }
-
- /**
- * Find an item in the cart.
- */
- Iterable<?> find(final String id, final Iterable<?> cart) {
- if(isNil(cart))
- return cons("Item", list("0", list()));
- if(id.equals(cadr(car(cart))))
- return car(cart);
- return this.find(id, cdr(cart));
- }
-
- /**
- * Return items from the cart.
- */
- public Iterable<?> get(final Iterable<String> id, final Service cache) {
- if(isNil(id))
- return cons("Your Cart", cons(cartId, this.getcart(cartId, cache)));
- return this.find((String)car(id), this.getcart(cartId, cache));
- }
-
- /**
- * Delete items from the cart.
- */
- public Boolean delete(final Iterable<String> id, final Service cache) {
- if(isNil(id)) {
- final Iterable<String> iid = list(cartId);
- return cache.delete(iid);
- }
- return true;
- }
-
- /**
- * Return the price of an item.
- */
- Double price(final Iterable<?> item) {
- return Double.valueOf((String)cadr(assoc("'price", caddr(item))));
- }
-
- /**
- * Sum the prices of a list of items.
- */
- Double sum(final Iterable<?> items) {
- if(isNil(items))
- return 0.0;
- return this.price((Iterable<?>)car(items)) + this.sum(cdr(items));
- }
-
- /**
- * Return the total price of the items in the cart.
- */
- public Double gettotal(final Service cache) {
- final Iterable<?> cart = this.getcart(cartId, cache);
- return this.sum(cart);
- }
-
- /**
- * TODO remove this JSON-RPC specific function.
- */
- public Iterable<?> listMethods(final Service cache) {
- return list("Service.gettotal");
- }
-
-}
diff --git a/sca-cpp/trunk/test/store-nosql/Makefile.am b/sca-cpp/trunk/test/store-nosql/Makefile.am
deleted file mode 100644
index 345e58d544..0000000000
--- a/sca-cpp/trunk/test/store-nosql/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-# 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.
-
-TESTS = server-test
-
diff --git a/sca-cpp/trunk/test/store-nosql/currency-converter.scm b/sca-cpp/trunk/test/store-nosql/currency-converter.scm
deleted file mode 100644
index fc506c3d73..0000000000
--- a/sca-cpp/trunk/test/store-nosql/currency-converter.scm
+++ /dev/null
@@ -1,27 +0,0 @@
-; 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.
-
-; Currency converter implementation
-
-(define (convert from to amount)
- (if (equal? to "EUR") (* amount 0.70) amount)
-)
-
-(define (symbol currency)
- (if (equal? currency "EUR") "E" "$")
-)
-
diff --git a/sca-cpp/trunk/test/store-nosql/fruits-catalog.scm b/sca-cpp/trunk/test/store-nosql/fruits-catalog.scm
deleted file mode 100644
index d79ff1b677..0000000000
--- a/sca-cpp/trunk/test/store-nosql/fruits-catalog.scm
+++ /dev/null
@@ -1,33 +0,0 @@
-; 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.
-
-; Catalog implementation
-
-(define (get converter currencyCode)
- (define code (currencyCode))
- (define (convert price) (converter "convert" "USD" code price))
- (define symbol (converter "symbol" code))
- (list
- (list (list 'javaClass "services.Item") (list 'name "Apple") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price (convert 2.99)))
- (list (list 'javaClass "services.Item") (list 'name "Orange") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price (convert 3.55)))
- (list (list 'javaClass "services.Item") (list 'name "Pear") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price (convert 1.55)))
- )
-)
-
-; TODO remove these JSON-RPC specific functions
-(define (listMethods converter currencyCode) (list "Service.get"))
-
diff --git a/sca-cpp/trunk/test/store-nosql/htdocs/.htaccess b/sca-cpp/trunk/test/store-nosql/htdocs/.htaccess
deleted file mode 100644
index e2e343b6b2..0000000000
--- a/sca-cpp/trunk/test/store-nosql/htdocs/.htaccess
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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.
-
-DirectoryIndex store.html
diff --git a/sca-cpp/trunk/test/store-nosql/htdocs/store.html b/sca-cpp/trunk/test/store-nosql/htdocs/store.html
deleted file mode 100644
index 21eabca7a7..0000000000
--- a/sca-cpp/trunk/test/store-nosql/htdocs/store.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>Store</title>
-
-<script type="text/javascript" src="store.js"></script>
-
-<script language="JavaScript">
-
- //@Reference
- var catalog = new tuscany.sca.Reference("catalog");
-
- //@Reference
- var shoppingCart = new tuscany.sca.Reference("shoppingCart");
-
- //@Reference
- var shoppingTotal = new tuscany.sca.Reference("shoppingTotal");
-
- var catalogItems;
-
- function catalog_getResponse(items,exception) {
- if(exception){
- alert(exception.message);
- return;
- }
- var catalog = "";
-
- for (var i=0; i<items.length; i++) {
- var item = items[i].name + ' - ' + items[i].price;
- catalog += '<input name="items" type="checkbox" value="' +
- item + '">' + item + ' <br>';
- }
- document.getElementById('catalog').innerHTML=catalog;
- catalogItems = items;
-
- // TEMP
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
-
- function shoppingCart_getResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var list = "";
- for (var i=0; i<entries.length; i++) {
- var content = entries[i].getElementsByTagName("content")[0];
- var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
- var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
- list += name + ' - ' + price + ' <br>';
- }
- document.getElementById("shoppingCart").innerHTML = list;
-
- if (entries.length != 0) {
- try {
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
- catch(e){
- alert(e);
- }
- }
- }
- }
-
- function shoppingTotal_getTotalResponse(total,exception) {
- if(exception) {
- alert(exception.message);
- return;
- }
- document.getElementById('total').innerHTML = total;
- }
-
- function shoppingCart_postResponse(entry) {
- shoppingCart.get("", shoppingCart_getResponse);
- }
-
- function addToCart() {
- var items = document.catalogForm.items;
- var j = 0;
- for (var i=0; i<items.length; i++)
- if (items[i].checked) {
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title type="text">Item</title><content type="application/xml">' +
- '<item>' +
- '<javaClass>' + catalogItems[i].javaClass + '</javaClass>' +
- '<name>' + catalogItems[i].name + '</name>' +
- '<currencyCode>' + catalogItems[i].currencyCode + '</currencyCode>' +
- '<currencySymbol>' + catalogItems[i].currencySymbol + '</currencySymbol>' +
- '<price>' + catalogItems[i].price + '</price>' +
- '</item>' +
- '</content></entry>';
- shoppingCart.post(entry, shoppingCart_postResponse);
- items[i].checked = false;
- }
- }
- function checkoutCart() {
- document.getElementById('store').innerHTML='<h2>' +
- 'Thanks for Shopping With Us!</h2>'+
- '<h2>Your Order</h2>'+
- '<form name="orderForm">'+
- document.getElementById('shoppingCart').innerHTML+
- '<br>'+
- document.getElementById('total').innerHTML+
- '<br>'+
- '<br>'+
- '<input type="submit" value="Continue Shopping">'+
- '</form>';
- shoppingCart.del("", null);
- }
- function deleteCart() {
- shoppingCart.del("", null);
- document.getElementById('shoppingCart').innerHTML = "";
- document.getElementById('total').innerHTML = "";
- }
-
- function init() {
-
- try {
- catalog.get(catalog_getResponse);
- shoppingCart.get("", shoppingCart_getResponse);
- }
- catch(e){
- alert(e);
- }
- }
-
-</script>
-
-</head>
-
-<body onload="init()">
-<h1>Store</h1>
- <div id="store">
- <h2>Catalog</h2>
- <form name="catalogForm">
- <div id="catalog" ></div>
- <br>
- <input type="button" onClick="addToCart()" value="Add to Cart">
- </form>
-
- <br>
-
- <h2>Your Shopping Cart</h2>
- <form name="shoppingCartForm">
- <div id="shoppingCart"></div>
- <br>
- <div id="total"></div>
- <br>
- <input type="button" onClick="checkoutCart()" value="Checkout">
- <input type="button" onClick="deleteCart()" value="Empty">
- <a href="../shoppingCart/">(feed)</a>
- </form>
- </div>
-</body>
-</html>
diff --git a/sca-cpp/trunk/test/store-nosql/htdocs/store.js b/sca-cpp/trunk/test/store-nosql/htdocs/store.js
deleted file mode 100644
index 9cd8eb526d..0000000000
--- a/sca-cpp/trunk/test/store-nosql/htdocs/store.js
+++ /dev/null
@@ -1,661 +0,0 @@
-
-/* Apache Tuscany SCA Widget header */
-
-/*
- * JSON-RPC JavaScript client
- *
- * $Id: jsonrpc.js,v 1.36.2.3 2006/03/08 15:09:37 mclark Exp $
- *
- * Copyright (c) 2003-2004 Jan-Klaas Kollhof
- * Copyright (c) 2005 Michael Clark, Metaparadigm Pte Ltd
- *
- * This code is based on Jan-Klaas' JavaScript o lait library (jsolait).
- *
- * Licensed 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.
- *
- */
-
-/*
- * Modifications for Apache Tuscany:
- * - JSONRpcClient_createMethod changed so callback is last arg
- */
-
-/* escape a character */
-
-escapeJSONChar =
-function escapeJSONChar(c)
-{
- if(c == "\"" || c == "\\") return "\\" + c;
- else if (c == "\b") return "\\b";
- else if (c == "\f") return "\\f";
- else if (c == "\n") return "\\n";
- else if (c == "\r") return "\\r";
- else if (c == "\t") return "\\t";
- var hex = c.charCodeAt(0).toString(16);
- if(hex.length == 1) return "\\u000" + hex;
- else if(hex.length == 2) return "\\u00" + hex;
- else if(hex.length == 3) return "\\u0" + hex;
- else return "\\u" + hex;
-};
-
-
-/* encode a string into JSON format */
-
-escapeJSONString =
-function escapeJSONString(s)
-{
- /* The following should suffice but Safari's regex is b0rken
- (doesn't support callback substitutions)
- return "\"" + s.replace(/([^\u0020-\u007f]|[\\\"])/g,
- escapeJSONChar) + "\"";
- */
-
- /* Rather inefficient way to do it */
- var parts = s.split("");
- for(var i=0; i < parts.length; i++) {
- var c =parts[i];
- if(c == '"' ||
- c == '\\' ||
- c.charCodeAt(0) < 32 ||
- c.charCodeAt(0) >= 128)
- parts[i] = escapeJSONChar(parts[i]);
- }
- return "\"" + parts.join("") + "\"";
-};
-
-
-/* Marshall objects to JSON format */
-
-toJSON = function toJSON(o)
-{
- if(o == null) {
- return "null";
- } else if(o.constructor == String) {
- return escapeJSONString(o);
- } else if(o.constructor == Number) {
- return o.toString();
- } else if(o.constructor == Boolean) {
- return o.toString();
- } else if(o.constructor == Date) {
- return '{javaClass: "java.util.Date", time: ' + o.valueOf() +'}';
- } else if(o.constructor == Array) {
- var v = [];
- for(var i = 0; i < o.length; i++) v.push(toJSON(o[i]));
- return "[" + v.join(", ") + "]";
- } else {
- var v = [];
- for(attr in o) {
- if(o[attr] == null) v.push("\"" + attr + "\": null");
- else if(typeof o[attr] == "function"); /* skip */
- else v.push(escapeJSONString(attr) + ": " + toJSON(o[attr]));
- }
- return "{" + v.join(", ") + "}";
- }
-};
-
-
-/* JSONRpcClient constructor */
-
-JSONRpcClient =
-function JSONRpcClient_ctor(serverURL, user, pass, objectID)
-{
- this.serverURL = serverURL;
- this.user = user;
- this.pass = pass;
- this.objectID = objectID;
-
- /* Add standard methods */
- if(this.objectID) {
- this._addMethods(["listMethods"]);
- var req = this._makeRequest("listMethods", []);
- } else {
- this._addMethods(["system.listMethods"]);
- var req = this._makeRequest("system.listMethods", []);
- }
- var m = this._sendRequest(req);
- this._addMethods(m);
-};
-
-
-/* JSONRpcCLient.Exception */
-
-JSONRpcClient.Exception =
-function JSONRpcClient_Exception_ctor(code, message, javaStack)
-{
- this.code = code;
- var name;
- if(javaStack) {
- this.javaStack = javaStack;
- var m = javaStack.match(/^([^:]*)/);
- if(m) name = m[0];
- }
- if(name) this.name = name;
- else this.name = "JSONRpcClientException";
- this.message = message;
-};
-
-JSONRpcClient.Exception.CODE_REMOTE_EXCEPTION = 490;
-JSONRpcClient.Exception.CODE_ERR_CLIENT = 550;
-JSONRpcClient.Exception.CODE_ERR_PARSE = 590;
-JSONRpcClient.Exception.CODE_ERR_NOMETHOD = 591;
-JSONRpcClient.Exception.CODE_ERR_UNMARSHALL = 592;
-JSONRpcClient.Exception.CODE_ERR_MARSHALL = 593;
-
-JSONRpcClient.Exception.prototype = new Error();
-
-JSONRpcClient.Exception.prototype.toString =
-function JSONRpcClient_Exception_toString(code, msg)
-{
- return this.name + ": " + this.message;
-};
-
-
-/* Default top level exception handler */
-
-JSONRpcClient.default_ex_handler =
-function JSONRpcClient_default_ex_handler(e) { alert(e); };
-
-
-/* Client settable variables */
-
-JSONRpcClient.toplevel_ex_handler = JSONRpcClient.default_ex_handler;
-JSONRpcClient.profile_async = false;
-JSONRpcClient.max_req_active = 1;
-JSONRpcClient.requestId = 1;
-
-
-/* JSONRpcClient implementation */
-
-JSONRpcClient.prototype._createMethod =
-function JSONRpcClient_createMethod(methodName)
-{
- var fn=function()
- {
- var args = [];
- var callback = null;
- for(var i=0;i<arguments.length;i++) args.push(arguments[i]);
-
-/* TUSCANY change callback to be last arg instead of first to match binding.ajax
- if(typeof args[0] == "function") callback = args.shift();
-*/
- if(typeof args[arguments.length-1] == "function") callback = args.pop();
-
- var req = fn.client._makeRequest.call(fn.client, fn.methodName,
- args, callback);
- if(callback == null) {
- return fn.client._sendRequest.call(fn.client, req);
- } else {
- JSONRpcClient.async_requests.push(req);
- JSONRpcClient.kick_async();
- return req.requestId;
- }
- };
- fn.client = this;
- fn.methodName = methodName;
- return fn;
-};
-
-JSONRpcClient.prototype._addMethods =
-function JSONRpcClient_addMethods(methodNames)
-{
- for(var i=0; i<methodNames.length; i++) {
- var obj = this;
- var names = methodNames[i].split(".");
- for(var n=0; n<names.length-1; n++) {
- var name = names[n];
- if(obj[name]) {
- obj = obj[name];
- } else {
- obj[name] = new Object();
- obj = obj[name];
- }
- }
- var name = names[names.length-1];
- if(!obj[name]) {
- var method = this._createMethod(methodNames[i]);
- obj[name] = method;
- }
- }
-};
-
-JSONRpcClient._getCharsetFromHeaders =
-function JSONRpcClient_getCharsetFromHeaders(http)
-{
- try {
- var contentType = http.getResponseHeader("Content-type");
- var parts = contentType.split(/\s*;\s*/);
- for(var i =0; i < parts.length; i++) {
- if(parts[i].substring(0, 8) == "charset=")
- return parts[i].substring(8, parts[i].length);
- }
- } catch (e) {}
- return "UTF-8"; /* default */
-};
-
-/* Async queue globals */
-JSONRpcClient.async_requests = [];
-JSONRpcClient.async_inflight = {};
-JSONRpcClient.async_responses = [];
-JSONRpcClient.async_timeout = null;
-JSONRpcClient.num_req_active = 0;
-
-JSONRpcClient._async_handler =
-function JSONRpcClient_async_handler()
-{
- JSONRpcClient.async_timeout = null;
-
- while(JSONRpcClient.async_responses.length > 0) {
- var res = JSONRpcClient.async_responses.shift();
- if(res.canceled) continue;
- if(res.profile) res.profile.dispatch = new Date();
- try {
- res.cb(res.result, res.ex, res.profile);
- } catch(e) {
- JSONRpcClient.toplevel_ex_handler(e);
- }
- }
-
- while(JSONRpcClient.async_requests.length > 0 &&
- JSONRpcClient.num_req_active < JSONRpcClient.max_req_active) {
- var req = JSONRpcClient.async_requests.shift();
- if(req.canceled) continue;
- req.client._sendRequest.call(req.client, req);
- }
-};
-
-JSONRpcClient.kick_async =
-function JSONRpcClient_kick_async()
-{
- if(JSONRpcClient.async_timeout == null)
- JSONRpcClient.async_timeout =
- setTimeout(JSONRpcClient._async_handler, 0);
-};
-
-JSONRpcClient.cancelRequest =
-function JSONRpcClient_cancelRequest(requestId)
-{
- /* If it is in flight then mark it as canceled in the inflight map
- and the XMLHttpRequest callback will discard the reply. */
- if(JSONRpcClient.async_inflight[requestId]) {
- JSONRpcClient.async_inflight[requestId].canceled = true;
- return true;
- }
-
- /* If its not in flight yet then we can just mark it as canceled in
- the the request queue and it will get discarded before being sent. */
- for(var i in JSONRpcClient.async_requests) {
- if(JSONRpcClient.async_requests[i].requestId == requestId) {
- JSONRpcClient.async_requests[i].canceled = true;
- return true;
- }
- }
-
- /* It may have returned from the network and be waiting for its callback
- to be dispatched, so mark it as canceled in the response queue
- and the response will get discarded before calling the callback. */
- for(var i in JSONRpcClient.async_responses) {
- if(JSONRpcClient.async_responses[i].requestId == requestId) {
- JSONRpcClient.async_responses[i].canceled = true;
- return true;
- }
- }
-
- return false;
-};
-
-JSONRpcClient.prototype._makeRequest =
-function JSONRpcClient_makeRequest(methodName, args, cb)
-{
- var req = {};
- req.client = this;
- req.requestId = JSONRpcClient.requestId++;
-
- var obj = {};
- obj.id = req.requestId;
- if (this.objectID)
- obj.method = ".obj#" + this.objectID + "." + methodName;
- else
- obj.method = methodName;
- obj.params = args;
-
- if (cb) req.cb = cb;
- if (JSONRpcClient.profile_async)
- req.profile = { "submit": new Date() };
- req.data = toJSON(obj);
-
- return req;
-};
-
-JSONRpcClient.prototype._sendRequest =
-function JSONRpcClient_sendRequest(req)
-{
- if(req.profile) req.profile.start = new Date();
-
- /* Get free http object from the pool */
- var http = JSONRpcClient.poolGetHTTPRequest();
- JSONRpcClient.num_req_active++;
-
- /* Send the request */
- if (typeof(this.user) == "undefined") {
- http.open("POST", this.serverURL, (req.cb != null));
- } else {
- http.open("POST", this.serverURL, (req.cb != null), this.user, this.pass);
- }
-
- /* setRequestHeader is missing in Opera 8 Beta */
- try { http.setRequestHeader("Content-type", "text/plain"); } catch(e) {}
-
- /* Construct call back if we have one */
- if(req.cb) {
- var self = this;
- http.onreadystatechange = function() {
- if(http.readyState == 4) {
- http.onreadystatechange = function () {};
- var res = { "cb": req.cb, "result": null, "ex": null};
- if (req.profile) {
- res.profile = req.profile;
- res.profile.end = new Date();
- }
- try { res.result = self._handleResponse(http); }
- catch(e) { res.ex = e; }
- if(!JSONRpcClient.async_inflight[req.requestId].canceled)
- JSONRpcClient.async_responses.push(res);
- delete JSONRpcClient.async_inflight[req.requestId];
- JSONRpcClient.kick_async();
- }
- };
- } else {
- http.onreadystatechange = function() {};
- }
-
- JSONRpcClient.async_inflight[req.requestId] = req;
-
- try {
- http.send(req.data);
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- if(!req.cb) return this._handleResponse(http);
-};
-
-JSONRpcClient.prototype._handleResponse =
-function JSONRpcClient_handleResponse(http)
-{
- /* Get the charset */
- if(!this.charset) {
- this.charset = JSONRpcClient._getCharsetFromHeaders(http);
- }
-
- /* Get request results */
- var status, statusText, data;
- try {
- status = http.status;
- statusText = http.statusText;
- data = http.responseText;
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- JSONRpcClient.kick_async();
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- /* Return http object to the pool; */
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
-
- /* Unmarshall the response */
- if(status != 200) {
- throw new JSONRpcClient.Exception(status, statusText);
- }
- var obj;
- try {
- eval("obj = " + data);
- } catch(e) {
- throw new JSONRpcClient.Exception(550, "error parsing result");
- }
- if(obj.error)
- throw new JSONRpcClient.Exception(obj.error.code, obj.error.msg,
- obj.error.trace);
- var res = obj.result;
-
- /* Handle CallableProxy */
- if(res && res.objectID && res.JSONRPCType == "CallableReference")
- return new JSONRpcClient(this.serverURL, this.user,
- this.pass, res.objectID);
-
- return res;
-};
-
-
-/* XMLHttpRequest wrapper code */
-
-/* XMLHttpRequest pool globals */
-JSONRpcClient.http_spare = [];
-JSONRpcClient.http_max_spare = 8;
-
-JSONRpcClient.poolGetHTTPRequest =
-function JSONRpcClient_pool_getHTTPRequest()
-{
- if(JSONRpcClient.http_spare.length > 0) {
- return JSONRpcClient.http_spare.pop();
- }
- return JSONRpcClient.getHTTPRequest();
-};
-
-JSONRpcClient.poolReturnHTTPRequest =
-function JSONRpcClient_poolReturnHTTPRequest(http)
-{
- if(JSONRpcClient.http_spare.length >= JSONRpcClient.http_max_spare)
- delete http;
- else
- JSONRpcClient.http_spare.push(http);
-};
-
-JSONRpcClient.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
-JSONRpcClient.getHTTPRequest =
-function JSONRpcClient_getHTTPRequest()
-{
- /* Mozilla XMLHttpRequest */
- try {
- JSONRpcClient.httpObjectName = "XMLHttpRequest";
- return new XMLHttpRequest();
- } catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < JSONRpcClient.msxmlNames.length; i++) {
- try {
- JSONRpcClient.httpObjectName = JSONRpcClient.msxmlNames[i];
- return new ActiveXObject(JSONRpcClient.msxmlNames[i]);
- } catch (e) {}
- }
-
- /* None found */
- JSONRpcClient.httpObjectName = null;
- throw new JSONRpcClient.Exception(0, "Can't create XMLHttpRequest object");
-};
-
-
-/*
- * 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.
- */
-
-function AtomClient(uri) {
-
- this.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
- this.uri=uri;
-
- this.get = function(id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("get - Error getting data from the server");
- }
- }
- }
- xhr.open("GET", uri + '/' + id, true);
- xhr.send(null);
- }
-
- this.post = function (entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 201) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("post - Error getting data from the server");
- }
- }
- }
- xhr.open("POST", uri, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.put = function (id, entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("put - Error getting data from the server");
- }
- }
- }
- xhr.open("PUT", uri + '/' + id, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.del = function (id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- if (responseFunction != null) responseFunction();
- } else {
- alert("delete - Error getting data from the server");
- }
- }
- }
- xhr.open("DELETE", uri + '/' + id, true);
- xhr.send(null);
- }
- this.createXMLHttpRequest = function () {
- /* Mozilla XMLHttpRequest */
- try {return new XMLHttpRequest();} catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < this.msxmlNames.length; i++) {
- try {return new ActiveXObject(this.msxmlNames[i]);} catch (e) {}
- }
- alert("XML http request not supported");
- return null;
- }
- if (typeof DOMParser == "undefined") {
- DOMParser = function () {}
-
- DOMParser.prototype.parseFromString = function (str, contentType) {
- if (typeof ActiveXObject != "undefined") {
- var d = new ActiveXObject("MSXML.DomDocument");
- d.loadXML(str);
- return d;
- } else if (typeof XMLHttpRequest != "undefined") {
- var req = new XMLHttpRequest;
- req.open("GET", "data:" + (contentType || "application/xml") +
- ";charset=utf-8," + encodeURIComponent(str), false);
- if (req.overrideMimeType) {
- req.overrideMimeType(contentType);
- }
- req.send(null);
- return req.responseXML;
- }
- }
- }
-}
-
-
-
-/* Tuscany Reference/Property injection code */
-
-if (!tuscany) {
-var tuscany = {};
-}
-if (!tuscany.sca) {
-tuscany.sca = {};
-}
-
-tuscany.sca.propertyMap = new String();
-tuscany.sca.Property = function (name) {
- return tuscany.sca.propertyMap[name];
-}
-
-tuscany.sca.referenceMap = new Object();
-tuscany.sca.referenceMap.catalog = new JSONRpcClient("/catalog").Service;
-tuscany.sca.referenceMap.shoppingCart = new AtomClient("/shoppingCart");
-tuscany.sca.referenceMap.shoppingTotal = new JSONRpcClient("/total").Service;
-tuscany.sca.Reference = function (name) {
- return tuscany.sca.referenceMap[name];
-}
-
-/** End of Apache Tuscany SCA Widget */
-
diff --git a/sca-cpp/trunk/test/store-nosql/server-test b/sca-cpp/trunk/test/store-nosql/server-test
deleted file mode 100755
index d2013f6892..0000000000
--- a/sca-cpp/trunk/test/store-nosql/server-test
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-echo "Testing..."
-here=`readlink -f $0`; here=`dirname $here`
-curl_prefix=`cat $here/../../modules/http/curl.prefix`
-
-# Setup
-./start
-sleep 2
-
-# Test HTTP GET
-$curl_prefix/bin/curl http://localhost:8090/store.html 2>/dev/null >tmp/store.html
-diff tmp/store.html htdocs/store.html
-rc=$?
-
-# Cleanup
-./stop
-sleep 2
-
-if [ "$rc" = "0" ]; then
- echo "OK"
-fi
-return $rc
diff --git a/sca-cpp/trunk/test/store-nosql/shopping-cart.scm b/sca-cpp/trunk/test/store-nosql/shopping-cart.scm
deleted file mode 100644
index 484044d420..0000000000
--- a/sca-cpp/trunk/test/store-nosql/shopping-cart.scm
+++ /dev/null
@@ -1,84 +0,0 @@
-; 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.
-
-; Shopping cart implementation
-
-(define cartId "1234")
-
-; Get the shopping cart from the cache
-; Return an empty cart if not found
-(define (getcart id cache)
- (define cart (cache "get" (list id)))
- (if (nul cart)
- (list)
- cart)
-)
-
-; Post a new item to the cart, create a new cart if necessary
-(define (post collection item cache)
- (define id (uuid))
- (define newItem (list (car item) id (caddr item)))
- (define cart (cons newItem (getcart cartId cache)))
- (cache "put" (list cartId) cart)
- (list id)
-)
-
-; Find an item in the cart
-(define (find id cart)
- (if (nul cart)
- (cons "Item" (list "0" (list)))
- (if (= id (cadr (car cart)))
- (car cart)
- (find id (cdr cart))))
-)
-
-; Get items from the cart
-(define (get id cache)
- (if (nul id)
- (cons "Your Cart" (cons cartId (getcart cartId cache)))
- (find (car id) (getcart cartId cache))
- )
-)
-
-; Delete items from the cart
-(define (delete id cache)
- (if (nul id)
- (cache "delete" (list cartId))
- true
- )
-)
-
-; Return the price of an item
-(define (price item)
- (cadr (assoc 'price (caddr item)))
-)
-
-; Sum the prices of a list of items
-(define (sum items)
- (if (nul items)
- 0
- (+ (price (car items)) (sum (cdr items))))
-)
-
-; Return the total price of the items in the cart
-(define (gettotal cache)
- (define cart (getcart cartId cache))
- (sum cart)
-)
-
-; TODO remove these JSON-RPC specific functions
-(define (listMethods cache) (list "Service.gettotal"))
diff --git a/sca-cpp/trunk/test/store-nosql/ssl-start b/sca-cpp/trunk/test/store-nosql/ssl-start
deleted file mode 100755
index b18a8e4af1..0000000000
--- a/sca-cpp/trunk/test/store-nosql/ssl-start
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-ca-conf tmp localhost
-../../modules/http/httpd-cert-conf tmp localhost
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/http/httpd-ssl-conf tmp localhost 8453 htdocs
-../../modules/server/server-conf tmp
-../../modules/server/scheme-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/nosqldb/tinycdb -c -m tmp/store.cdb </dev/null
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-nosql/start b/sca-cpp/trunk/test/store-nosql/start
deleted file mode 100755
index 79da4682b2..0000000000
--- a/sca-cpp/trunk/test/store-nosql/start
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/server/server-conf tmp
-../../modules/server/scheme-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/nosqldb/tinycdb -c -m tmp/store.cdb </dev/null
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-nosql/stop b/sca-cpp/trunk/test/store-nosql/stop
deleted file mode 100755
index 3b4f46694d..0000000000
--- a/sca-cpp/trunk/test/store-nosql/stop
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-stop tmp
diff --git a/sca-cpp/trunk/test/store-nosql/store.composite b/sca-cpp/trunk/test/store-nosql/store.composite
deleted file mode 100644
index 1912f3a3a1..0000000000
--- a/sca-cpp/trunk/test/store-nosql/store.composite
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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://store"
- name="store">
-
- <component name="Store">
- <t:implementation.scheme script="store.scm"/>
- <service name="Widget">
- <t:binding.http uri="store"/>
- </service>
- <reference name="catalog" target="Catalog"/>
- <reference name="shoppingCart" target="ShoppingCart/Cart"/>
- <reference name="shoppingTotal" target="ShoppingCart/Total"/>
- </component>
-
- <component name="Catalog">
- <t:implementation.scheme script="fruits-catalog.scm"/>
- <property name="currencyCode">USD</property>
- <service name="Catalog">
- <t:binding.jsonrpc uri="catalog"/>
- </service>
- <reference name="currencyConverter" target="CurrencyConverter"/>
- </component>
-
- <component name="ShoppingCart">
- <t:implementation.scheme script="shopping-cart.scm"/>
- <service name="ShoppingCart">
- <t:binding.atom uri="shoppingCart"/>
- </service>
- <service name="Total">
- <t:binding.jsonrpc uri="total"/>
- </service>
- <reference name="cache" target="NoSqldb"/>
- </component>
-
- <component name="CurrencyConverter">
- <t:implementation.scheme script="currency-converter.scm"/>
- <service name="CurrencyConverter">
- <t:binding.jsonrpc uri="currencyConverter"/>
- </service>
- </component>
-
- <component name="NoSqldb">
- <implementation.cpp path="../../components/nosqldb/.libs" library="libnosqldb"/>
- <property name="dbname">tmp/store.cdb</property>
- <service name="NoSqldb">
- <t:binding.atom uri="nosqldb"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-nosql/store.scm b/sca-cpp/trunk/test/store-nosql/store.scm
deleted file mode 100644
index d851dc7ed6..0000000000
--- a/sca-cpp/trunk/test/store-nosql/store.scm
+++ /dev/null
@@ -1,50 +0,0 @@
-; 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.
-
-; Store implementation
-
-(define (post item catalog shoppingCart shoppingTotal)
- (shoppingCart "post" item)
-)
-
-(define (getall catalog shoppingCart shoppingTotal)
- (shoppingCart "getall")
-)
-
-(define (get id catalog shoppingCart shoppingTotal)
- (shoppingCart "get" id)
-)
-
-(define (getcatalog catalog shoppingCart shoppingTotal)
- (catalog "get")
-)
-
-(define (gettotal catalog shoppingCart shoppingTotal)
- (shoppingCart "gettotal")
-)
-
-(define (deleteall catalog shoppingCart shoppingTotal)
- (shoppingCart "deleteall")
-)
-
-(define (delete id catalog shoppingCart shoppingTotal)
- (shoppingCart "delete" id)
-)
-
-; TODO remove these JSON-RPC specific functions
-(define (listMethods catalog shoppingCart shoppingTotal) (list "Service.getcatalog" "Service.gettotal"))
-
diff --git a/sca-cpp/trunk/test/store-python/Makefile.am b/sca-cpp/trunk/test/store-python/Makefile.am
deleted file mode 100644
index 2bdd776e10..0000000000
--- a/sca-cpp/trunk/test/store-python/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-# 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.
-
-if WANT_PYTHON
-
-TESTS = server-test
-
-endif
diff --git a/sca-cpp/trunk/test/store-python/currency-converter.py b/sca-cpp/trunk/test/store-python/currency-converter.py
deleted file mode 100644
index 2fded8f616..0000000000
--- a/sca-cpp/trunk/test/store-python/currency-converter.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# 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.
-
-# Currency converter implementation
-
-def convert(fr, to, amount):
- if to == "EUR":
- return amount * 0.70
- return amount
-
-def symbol(currency):
- if currency == "EUR":
- return "E"
- return "$"
-
diff --git a/sca-cpp/trunk/test/store-python/fruits-catalog.py b/sca-cpp/trunk/test/store-python/fruits-catalog.py
deleted file mode 100644
index 75c18f5f99..0000000000
--- a/sca-cpp/trunk/test/store-python/fruits-catalog.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# 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.
-
-# Catalog implementation
-
-def get(converter, currencyCode):
- code = currencyCode()
- def convert(price):
- return converter("convert", "USD", code, price)
- symbol = converter("symbol", code)
- return (
- (("'javaClass", "services.Item"), ("'name", "Apple"), ("'currencyCode", code), ("'currencySymbol", symbol), ("'price", convert(2.99))),
- (("'javaClass", "services.Item"), ("'name", "Orange"), ("'currencyCode", code), ("'currencySymbol", symbol), ("'price", convert(3.55))),
- (("'javaClass", "services.Item"), ("'name", "Pear"), ("'currencyCode", code), ("'currencySymbol", symbol), ("'price", convert(1.55)))
- )
-
-# TODO remove these JSON-RPC specific functions
-def listMethods(converter, currencyCode):
- return ("Service.get",)
-
diff --git a/sca-cpp/trunk/test/store-python/htdocs/.htaccess b/sca-cpp/trunk/test/store-python/htdocs/.htaccess
deleted file mode 100644
index e2e343b6b2..0000000000
--- a/sca-cpp/trunk/test/store-python/htdocs/.htaccess
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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.
-
-DirectoryIndex store.html
diff --git a/sca-cpp/trunk/test/store-python/htdocs/store.html b/sca-cpp/trunk/test/store-python/htdocs/store.html
deleted file mode 100644
index 21eabca7a7..0000000000
--- a/sca-cpp/trunk/test/store-python/htdocs/store.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>Store</title>
-
-<script type="text/javascript" src="store.js"></script>
-
-<script language="JavaScript">
-
- //@Reference
- var catalog = new tuscany.sca.Reference("catalog");
-
- //@Reference
- var shoppingCart = new tuscany.sca.Reference("shoppingCart");
-
- //@Reference
- var shoppingTotal = new tuscany.sca.Reference("shoppingTotal");
-
- var catalogItems;
-
- function catalog_getResponse(items,exception) {
- if(exception){
- alert(exception.message);
- return;
- }
- var catalog = "";
-
- for (var i=0; i<items.length; i++) {
- var item = items[i].name + ' - ' + items[i].price;
- catalog += '<input name="items" type="checkbox" value="' +
- item + '">' + item + ' <br>';
- }
- document.getElementById('catalog').innerHTML=catalog;
- catalogItems = items;
-
- // TEMP
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
-
- function shoppingCart_getResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var list = "";
- for (var i=0; i<entries.length; i++) {
- var content = entries[i].getElementsByTagName("content")[0];
- var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
- var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
- list += name + ' - ' + price + ' <br>';
- }
- document.getElementById("shoppingCart").innerHTML = list;
-
- if (entries.length != 0) {
- try {
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
- catch(e){
- alert(e);
- }
- }
- }
- }
-
- function shoppingTotal_getTotalResponse(total,exception) {
- if(exception) {
- alert(exception.message);
- return;
- }
- document.getElementById('total').innerHTML = total;
- }
-
- function shoppingCart_postResponse(entry) {
- shoppingCart.get("", shoppingCart_getResponse);
- }
-
- function addToCart() {
- var items = document.catalogForm.items;
- var j = 0;
- for (var i=0; i<items.length; i++)
- if (items[i].checked) {
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title type="text">Item</title><content type="application/xml">' +
- '<item>' +
- '<javaClass>' + catalogItems[i].javaClass + '</javaClass>' +
- '<name>' + catalogItems[i].name + '</name>' +
- '<currencyCode>' + catalogItems[i].currencyCode + '</currencyCode>' +
- '<currencySymbol>' + catalogItems[i].currencySymbol + '</currencySymbol>' +
- '<price>' + catalogItems[i].price + '</price>' +
- '</item>' +
- '</content></entry>';
- shoppingCart.post(entry, shoppingCart_postResponse);
- items[i].checked = false;
- }
- }
- function checkoutCart() {
- document.getElementById('store').innerHTML='<h2>' +
- 'Thanks for Shopping With Us!</h2>'+
- '<h2>Your Order</h2>'+
- '<form name="orderForm">'+
- document.getElementById('shoppingCart').innerHTML+
- '<br>'+
- document.getElementById('total').innerHTML+
- '<br>'+
- '<br>'+
- '<input type="submit" value="Continue Shopping">'+
- '</form>';
- shoppingCart.del("", null);
- }
- function deleteCart() {
- shoppingCart.del("", null);
- document.getElementById('shoppingCart').innerHTML = "";
- document.getElementById('total').innerHTML = "";
- }
-
- function init() {
-
- try {
- catalog.get(catalog_getResponse);
- shoppingCart.get("", shoppingCart_getResponse);
- }
- catch(e){
- alert(e);
- }
- }
-
-</script>
-
-</head>
-
-<body onload="init()">
-<h1>Store</h1>
- <div id="store">
- <h2>Catalog</h2>
- <form name="catalogForm">
- <div id="catalog" ></div>
- <br>
- <input type="button" onClick="addToCart()" value="Add to Cart">
- </form>
-
- <br>
-
- <h2>Your Shopping Cart</h2>
- <form name="shoppingCartForm">
- <div id="shoppingCart"></div>
- <br>
- <div id="total"></div>
- <br>
- <input type="button" onClick="checkoutCart()" value="Checkout">
- <input type="button" onClick="deleteCart()" value="Empty">
- <a href="../shoppingCart/">(feed)</a>
- </form>
- </div>
-</body>
-</html>
diff --git a/sca-cpp/trunk/test/store-python/htdocs/store.js b/sca-cpp/trunk/test/store-python/htdocs/store.js
deleted file mode 100644
index 9cd8eb526d..0000000000
--- a/sca-cpp/trunk/test/store-python/htdocs/store.js
+++ /dev/null
@@ -1,661 +0,0 @@
-
-/* Apache Tuscany SCA Widget header */
-
-/*
- * JSON-RPC JavaScript client
- *
- * $Id: jsonrpc.js,v 1.36.2.3 2006/03/08 15:09:37 mclark Exp $
- *
- * Copyright (c) 2003-2004 Jan-Klaas Kollhof
- * Copyright (c) 2005 Michael Clark, Metaparadigm Pte Ltd
- *
- * This code is based on Jan-Klaas' JavaScript o lait library (jsolait).
- *
- * Licensed 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.
- *
- */
-
-/*
- * Modifications for Apache Tuscany:
- * - JSONRpcClient_createMethod changed so callback is last arg
- */
-
-/* escape a character */
-
-escapeJSONChar =
-function escapeJSONChar(c)
-{
- if(c == "\"" || c == "\\") return "\\" + c;
- else if (c == "\b") return "\\b";
- else if (c == "\f") return "\\f";
- else if (c == "\n") return "\\n";
- else if (c == "\r") return "\\r";
- else if (c == "\t") return "\\t";
- var hex = c.charCodeAt(0).toString(16);
- if(hex.length == 1) return "\\u000" + hex;
- else if(hex.length == 2) return "\\u00" + hex;
- else if(hex.length == 3) return "\\u0" + hex;
- else return "\\u" + hex;
-};
-
-
-/* encode a string into JSON format */
-
-escapeJSONString =
-function escapeJSONString(s)
-{
- /* The following should suffice but Safari's regex is b0rken
- (doesn't support callback substitutions)
- return "\"" + s.replace(/([^\u0020-\u007f]|[\\\"])/g,
- escapeJSONChar) + "\"";
- */
-
- /* Rather inefficient way to do it */
- var parts = s.split("");
- for(var i=0; i < parts.length; i++) {
- var c =parts[i];
- if(c == '"' ||
- c == '\\' ||
- c.charCodeAt(0) < 32 ||
- c.charCodeAt(0) >= 128)
- parts[i] = escapeJSONChar(parts[i]);
- }
- return "\"" + parts.join("") + "\"";
-};
-
-
-/* Marshall objects to JSON format */
-
-toJSON = function toJSON(o)
-{
- if(o == null) {
- return "null";
- } else if(o.constructor == String) {
- return escapeJSONString(o);
- } else if(o.constructor == Number) {
- return o.toString();
- } else if(o.constructor == Boolean) {
- return o.toString();
- } else if(o.constructor == Date) {
- return '{javaClass: "java.util.Date", time: ' + o.valueOf() +'}';
- } else if(o.constructor == Array) {
- var v = [];
- for(var i = 0; i < o.length; i++) v.push(toJSON(o[i]));
- return "[" + v.join(", ") + "]";
- } else {
- var v = [];
- for(attr in o) {
- if(o[attr] == null) v.push("\"" + attr + "\": null");
- else if(typeof o[attr] == "function"); /* skip */
- else v.push(escapeJSONString(attr) + ": " + toJSON(o[attr]));
- }
- return "{" + v.join(", ") + "}";
- }
-};
-
-
-/* JSONRpcClient constructor */
-
-JSONRpcClient =
-function JSONRpcClient_ctor(serverURL, user, pass, objectID)
-{
- this.serverURL = serverURL;
- this.user = user;
- this.pass = pass;
- this.objectID = objectID;
-
- /* Add standard methods */
- if(this.objectID) {
- this._addMethods(["listMethods"]);
- var req = this._makeRequest("listMethods", []);
- } else {
- this._addMethods(["system.listMethods"]);
- var req = this._makeRequest("system.listMethods", []);
- }
- var m = this._sendRequest(req);
- this._addMethods(m);
-};
-
-
-/* JSONRpcCLient.Exception */
-
-JSONRpcClient.Exception =
-function JSONRpcClient_Exception_ctor(code, message, javaStack)
-{
- this.code = code;
- var name;
- if(javaStack) {
- this.javaStack = javaStack;
- var m = javaStack.match(/^([^:]*)/);
- if(m) name = m[0];
- }
- if(name) this.name = name;
- else this.name = "JSONRpcClientException";
- this.message = message;
-};
-
-JSONRpcClient.Exception.CODE_REMOTE_EXCEPTION = 490;
-JSONRpcClient.Exception.CODE_ERR_CLIENT = 550;
-JSONRpcClient.Exception.CODE_ERR_PARSE = 590;
-JSONRpcClient.Exception.CODE_ERR_NOMETHOD = 591;
-JSONRpcClient.Exception.CODE_ERR_UNMARSHALL = 592;
-JSONRpcClient.Exception.CODE_ERR_MARSHALL = 593;
-
-JSONRpcClient.Exception.prototype = new Error();
-
-JSONRpcClient.Exception.prototype.toString =
-function JSONRpcClient_Exception_toString(code, msg)
-{
- return this.name + ": " + this.message;
-};
-
-
-/* Default top level exception handler */
-
-JSONRpcClient.default_ex_handler =
-function JSONRpcClient_default_ex_handler(e) { alert(e); };
-
-
-/* Client settable variables */
-
-JSONRpcClient.toplevel_ex_handler = JSONRpcClient.default_ex_handler;
-JSONRpcClient.profile_async = false;
-JSONRpcClient.max_req_active = 1;
-JSONRpcClient.requestId = 1;
-
-
-/* JSONRpcClient implementation */
-
-JSONRpcClient.prototype._createMethod =
-function JSONRpcClient_createMethod(methodName)
-{
- var fn=function()
- {
- var args = [];
- var callback = null;
- for(var i=0;i<arguments.length;i++) args.push(arguments[i]);
-
-/* TUSCANY change callback to be last arg instead of first to match binding.ajax
- if(typeof args[0] == "function") callback = args.shift();
-*/
- if(typeof args[arguments.length-1] == "function") callback = args.pop();
-
- var req = fn.client._makeRequest.call(fn.client, fn.methodName,
- args, callback);
- if(callback == null) {
- return fn.client._sendRequest.call(fn.client, req);
- } else {
- JSONRpcClient.async_requests.push(req);
- JSONRpcClient.kick_async();
- return req.requestId;
- }
- };
- fn.client = this;
- fn.methodName = methodName;
- return fn;
-};
-
-JSONRpcClient.prototype._addMethods =
-function JSONRpcClient_addMethods(methodNames)
-{
- for(var i=0; i<methodNames.length; i++) {
- var obj = this;
- var names = methodNames[i].split(".");
- for(var n=0; n<names.length-1; n++) {
- var name = names[n];
- if(obj[name]) {
- obj = obj[name];
- } else {
- obj[name] = new Object();
- obj = obj[name];
- }
- }
- var name = names[names.length-1];
- if(!obj[name]) {
- var method = this._createMethod(methodNames[i]);
- obj[name] = method;
- }
- }
-};
-
-JSONRpcClient._getCharsetFromHeaders =
-function JSONRpcClient_getCharsetFromHeaders(http)
-{
- try {
- var contentType = http.getResponseHeader("Content-type");
- var parts = contentType.split(/\s*;\s*/);
- for(var i =0; i < parts.length; i++) {
- if(parts[i].substring(0, 8) == "charset=")
- return parts[i].substring(8, parts[i].length);
- }
- } catch (e) {}
- return "UTF-8"; /* default */
-};
-
-/* Async queue globals */
-JSONRpcClient.async_requests = [];
-JSONRpcClient.async_inflight = {};
-JSONRpcClient.async_responses = [];
-JSONRpcClient.async_timeout = null;
-JSONRpcClient.num_req_active = 0;
-
-JSONRpcClient._async_handler =
-function JSONRpcClient_async_handler()
-{
- JSONRpcClient.async_timeout = null;
-
- while(JSONRpcClient.async_responses.length > 0) {
- var res = JSONRpcClient.async_responses.shift();
- if(res.canceled) continue;
- if(res.profile) res.profile.dispatch = new Date();
- try {
- res.cb(res.result, res.ex, res.profile);
- } catch(e) {
- JSONRpcClient.toplevel_ex_handler(e);
- }
- }
-
- while(JSONRpcClient.async_requests.length > 0 &&
- JSONRpcClient.num_req_active < JSONRpcClient.max_req_active) {
- var req = JSONRpcClient.async_requests.shift();
- if(req.canceled) continue;
- req.client._sendRequest.call(req.client, req);
- }
-};
-
-JSONRpcClient.kick_async =
-function JSONRpcClient_kick_async()
-{
- if(JSONRpcClient.async_timeout == null)
- JSONRpcClient.async_timeout =
- setTimeout(JSONRpcClient._async_handler, 0);
-};
-
-JSONRpcClient.cancelRequest =
-function JSONRpcClient_cancelRequest(requestId)
-{
- /* If it is in flight then mark it as canceled in the inflight map
- and the XMLHttpRequest callback will discard the reply. */
- if(JSONRpcClient.async_inflight[requestId]) {
- JSONRpcClient.async_inflight[requestId].canceled = true;
- return true;
- }
-
- /* If its not in flight yet then we can just mark it as canceled in
- the the request queue and it will get discarded before being sent. */
- for(var i in JSONRpcClient.async_requests) {
- if(JSONRpcClient.async_requests[i].requestId == requestId) {
- JSONRpcClient.async_requests[i].canceled = true;
- return true;
- }
- }
-
- /* It may have returned from the network and be waiting for its callback
- to be dispatched, so mark it as canceled in the response queue
- and the response will get discarded before calling the callback. */
- for(var i in JSONRpcClient.async_responses) {
- if(JSONRpcClient.async_responses[i].requestId == requestId) {
- JSONRpcClient.async_responses[i].canceled = true;
- return true;
- }
- }
-
- return false;
-};
-
-JSONRpcClient.prototype._makeRequest =
-function JSONRpcClient_makeRequest(methodName, args, cb)
-{
- var req = {};
- req.client = this;
- req.requestId = JSONRpcClient.requestId++;
-
- var obj = {};
- obj.id = req.requestId;
- if (this.objectID)
- obj.method = ".obj#" + this.objectID + "." + methodName;
- else
- obj.method = methodName;
- obj.params = args;
-
- if (cb) req.cb = cb;
- if (JSONRpcClient.profile_async)
- req.profile = { "submit": new Date() };
- req.data = toJSON(obj);
-
- return req;
-};
-
-JSONRpcClient.prototype._sendRequest =
-function JSONRpcClient_sendRequest(req)
-{
- if(req.profile) req.profile.start = new Date();
-
- /* Get free http object from the pool */
- var http = JSONRpcClient.poolGetHTTPRequest();
- JSONRpcClient.num_req_active++;
-
- /* Send the request */
- if (typeof(this.user) == "undefined") {
- http.open("POST", this.serverURL, (req.cb != null));
- } else {
- http.open("POST", this.serverURL, (req.cb != null), this.user, this.pass);
- }
-
- /* setRequestHeader is missing in Opera 8 Beta */
- try { http.setRequestHeader("Content-type", "text/plain"); } catch(e) {}
-
- /* Construct call back if we have one */
- if(req.cb) {
- var self = this;
- http.onreadystatechange = function() {
- if(http.readyState == 4) {
- http.onreadystatechange = function () {};
- var res = { "cb": req.cb, "result": null, "ex": null};
- if (req.profile) {
- res.profile = req.profile;
- res.profile.end = new Date();
- }
- try { res.result = self._handleResponse(http); }
- catch(e) { res.ex = e; }
- if(!JSONRpcClient.async_inflight[req.requestId].canceled)
- JSONRpcClient.async_responses.push(res);
- delete JSONRpcClient.async_inflight[req.requestId];
- JSONRpcClient.kick_async();
- }
- };
- } else {
- http.onreadystatechange = function() {};
- }
-
- JSONRpcClient.async_inflight[req.requestId] = req;
-
- try {
- http.send(req.data);
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- if(!req.cb) return this._handleResponse(http);
-};
-
-JSONRpcClient.prototype._handleResponse =
-function JSONRpcClient_handleResponse(http)
-{
- /* Get the charset */
- if(!this.charset) {
- this.charset = JSONRpcClient._getCharsetFromHeaders(http);
- }
-
- /* Get request results */
- var status, statusText, data;
- try {
- status = http.status;
- statusText = http.statusText;
- data = http.responseText;
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- JSONRpcClient.kick_async();
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- /* Return http object to the pool; */
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
-
- /* Unmarshall the response */
- if(status != 200) {
- throw new JSONRpcClient.Exception(status, statusText);
- }
- var obj;
- try {
- eval("obj = " + data);
- } catch(e) {
- throw new JSONRpcClient.Exception(550, "error parsing result");
- }
- if(obj.error)
- throw new JSONRpcClient.Exception(obj.error.code, obj.error.msg,
- obj.error.trace);
- var res = obj.result;
-
- /* Handle CallableProxy */
- if(res && res.objectID && res.JSONRPCType == "CallableReference")
- return new JSONRpcClient(this.serverURL, this.user,
- this.pass, res.objectID);
-
- return res;
-};
-
-
-/* XMLHttpRequest wrapper code */
-
-/* XMLHttpRequest pool globals */
-JSONRpcClient.http_spare = [];
-JSONRpcClient.http_max_spare = 8;
-
-JSONRpcClient.poolGetHTTPRequest =
-function JSONRpcClient_pool_getHTTPRequest()
-{
- if(JSONRpcClient.http_spare.length > 0) {
- return JSONRpcClient.http_spare.pop();
- }
- return JSONRpcClient.getHTTPRequest();
-};
-
-JSONRpcClient.poolReturnHTTPRequest =
-function JSONRpcClient_poolReturnHTTPRequest(http)
-{
- if(JSONRpcClient.http_spare.length >= JSONRpcClient.http_max_spare)
- delete http;
- else
- JSONRpcClient.http_spare.push(http);
-};
-
-JSONRpcClient.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
-JSONRpcClient.getHTTPRequest =
-function JSONRpcClient_getHTTPRequest()
-{
- /* Mozilla XMLHttpRequest */
- try {
- JSONRpcClient.httpObjectName = "XMLHttpRequest";
- return new XMLHttpRequest();
- } catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < JSONRpcClient.msxmlNames.length; i++) {
- try {
- JSONRpcClient.httpObjectName = JSONRpcClient.msxmlNames[i];
- return new ActiveXObject(JSONRpcClient.msxmlNames[i]);
- } catch (e) {}
- }
-
- /* None found */
- JSONRpcClient.httpObjectName = null;
- throw new JSONRpcClient.Exception(0, "Can't create XMLHttpRequest object");
-};
-
-
-/*
- * 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.
- */
-
-function AtomClient(uri) {
-
- this.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
- this.uri=uri;
-
- this.get = function(id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("get - Error getting data from the server");
- }
- }
- }
- xhr.open("GET", uri + '/' + id, true);
- xhr.send(null);
- }
-
- this.post = function (entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 201) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("post - Error getting data from the server");
- }
- }
- }
- xhr.open("POST", uri, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.put = function (id, entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("put - Error getting data from the server");
- }
- }
- }
- xhr.open("PUT", uri + '/' + id, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.del = function (id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- if (responseFunction != null) responseFunction();
- } else {
- alert("delete - Error getting data from the server");
- }
- }
- }
- xhr.open("DELETE", uri + '/' + id, true);
- xhr.send(null);
- }
- this.createXMLHttpRequest = function () {
- /* Mozilla XMLHttpRequest */
- try {return new XMLHttpRequest();} catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < this.msxmlNames.length; i++) {
- try {return new ActiveXObject(this.msxmlNames[i]);} catch (e) {}
- }
- alert("XML http request not supported");
- return null;
- }
- if (typeof DOMParser == "undefined") {
- DOMParser = function () {}
-
- DOMParser.prototype.parseFromString = function (str, contentType) {
- if (typeof ActiveXObject != "undefined") {
- var d = new ActiveXObject("MSXML.DomDocument");
- d.loadXML(str);
- return d;
- } else if (typeof XMLHttpRequest != "undefined") {
- var req = new XMLHttpRequest;
- req.open("GET", "data:" + (contentType || "application/xml") +
- ";charset=utf-8," + encodeURIComponent(str), false);
- if (req.overrideMimeType) {
- req.overrideMimeType(contentType);
- }
- req.send(null);
- return req.responseXML;
- }
- }
- }
-}
-
-
-
-/* Tuscany Reference/Property injection code */
-
-if (!tuscany) {
-var tuscany = {};
-}
-if (!tuscany.sca) {
-tuscany.sca = {};
-}
-
-tuscany.sca.propertyMap = new String();
-tuscany.sca.Property = function (name) {
- return tuscany.sca.propertyMap[name];
-}
-
-tuscany.sca.referenceMap = new Object();
-tuscany.sca.referenceMap.catalog = new JSONRpcClient("/catalog").Service;
-tuscany.sca.referenceMap.shoppingCart = new AtomClient("/shoppingCart");
-tuscany.sca.referenceMap.shoppingTotal = new JSONRpcClient("/total").Service;
-tuscany.sca.Reference = function (name) {
- return tuscany.sca.referenceMap[name];
-}
-
-/** End of Apache Tuscany SCA Widget */
-
diff --git a/sca-cpp/trunk/test/store-python/server-test b/sca-cpp/trunk/test/store-python/server-test
deleted file mode 100755
index d2013f6892..0000000000
--- a/sca-cpp/trunk/test/store-python/server-test
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-echo "Testing..."
-here=`readlink -f $0`; here=`dirname $here`
-curl_prefix=`cat $here/../../modules/http/curl.prefix`
-
-# Setup
-./start
-sleep 2
-
-# Test HTTP GET
-$curl_prefix/bin/curl http://localhost:8090/store.html 2>/dev/null >tmp/store.html
-diff tmp/store.html htdocs/store.html
-rc=$?
-
-# Cleanup
-./stop
-sleep 2
-
-if [ "$rc" = "0" ]; then
- echo "OK"
-fi
-return $rc
diff --git a/sca-cpp/trunk/test/store-python/shopping-cart.py b/sca-cpp/trunk/test/store-python/shopping-cart.py
deleted file mode 100644
index 2cb6da140a..0000000000
--- a/sca-cpp/trunk/test/store-python/shopping-cart.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# 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.
-
-# Shopping cart implementation
-import uuid
-import sys
-
-cartId = "1234"
-
-# Get the shopping cart from the cache
-# Return an empty cart if not found
-def getcart(id, cache):
- cart = cache("get", (id,))
- if cart is None:
- return ()
- return cart
-
-# Post a new item to the cart, create a new cart if necessary
-def post(collection, item, cache):
- id = str(uuid.uuid1())
- cart = ((item[0], id, item[2]),) + getcart(cartId, cache)
- cache("put", (cartId,), cart)
- return (id,)
-
-
-# Find an item in the cart
-def find(id, cart):
- if cart == ():
- return ("Item", "0", ())
- elif id == cart[0][1]:
- return cart[0]
- else:
- return find(id, cart[1:])
-
-# Get items from the cart
-def get(id, cache):
- if id == ():
- return ("Your Cart", cartId) + getcart(cartId, cache)
- return find(id[0], getcart(cartId, cache))
-
-# Delete items from the cart
-def delete(id, cache):
- if id == ():
- return cache("delete", (cartId,))
- return True
-
-# Return the price of an item
-def price(item):
- return float(filter(lambda x: x[0] == "'price", item[2])[0][1])
-
-# Sum the prices of a list of items
-def sum(items):
- if items == ():
- return 0
- return price(items[0]) + sum(items[1:])
-
-# Return the total price of the items in the cart
-def gettotal(cache):
- cart = getcart(cartId, cache)
- return sum(cart)
-
-# TODO remove these JSON-RPC specific functions
-def listMethods(cache):
- return ("Service.gettotal",)
diff --git a/sca-cpp/trunk/test/store-python/ssl-start b/sca-cpp/trunk/test/store-python/ssl-start
deleted file mode 100755
index 1e70d6edfb..0000000000
--- a/sca-cpp/trunk/test/store-python/ssl-start
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-ca-conf tmp localhost
-../../modules/http/httpd-cert-conf tmp localhost
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/http/httpd-ssl-conf tmp localhost 8453 htdocs
-../../modules/server/server-conf tmp
-../../modules/python/python-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/cache/memcached-start
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-python/start b/sca-cpp/trunk/test/store-python/start
deleted file mode 100755
index 8df7875634..0000000000
--- a/sca-cpp/trunk/test/store-python/start
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/server/server-conf tmp
-../../modules/python/python-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/cache/memcached-start
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-python/stop b/sca-cpp/trunk/test/store-python/stop
deleted file mode 100755
index a59273b8ed..0000000000
--- a/sca-cpp/trunk/test/store-python/stop
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-stop tmp
-../../components/cache/memcached-stop
diff --git a/sca-cpp/trunk/test/store-python/store.composite b/sca-cpp/trunk/test/store-python/store.composite
deleted file mode 100644
index 889f514624..0000000000
--- a/sca-cpp/trunk/test/store-python/store.composite
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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://store"
- name="store">
-
- <component name="Store">
- <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/Cart"/>
- <reference name="shoppingTotal" target="ShoppingCart/Total"/>
- </component>
-
- <component name="Catalog">
- <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:implementation.python script="shopping-cart.py"/>
- <service name="ShoppingCart">
- <t:binding.atom uri="shoppingCart"/>
- </service>
- <service name="Total">
- <t:binding.jsonrpc uri="total"/>
- </service>
- <reference name="cache" target="Cache"/>
- </component>
-
- <component name="CurrencyConverter">
- <t:implementation.python script="currency-converter.py"/>
- <service name="CurrencyConverter">
- <t:binding.jsonrpc uri="currencyConverter"/>
- </service>
- </component>
-
- <component name="Cache">
- <implementation.cpp path="../../components/cache/.libs" library="libmemcache"/>
- <service name="Cache">
- <t:binding.atom uri="cache"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-python/store.py b/sca-cpp/trunk/test/store-python/store.py
deleted file mode 100644
index 35c0f5b2aa..0000000000
--- a/sca-cpp/trunk/test/store-python/store.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# 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.
-
-# Store implementation
-
-def post(item, catalog, shoppingCart, shoppingTotal):
- return shoppingCart("post", item)
-
-def getall(catalog, shoppingCart, shoppingTotal):
- return shoppingCart("getall")
-
-def get(id, catalog, shoppingCart, shoppingTotal):
- return shoppingCart("get", id)
-
-def getcatalog(catalog, shoppingCart, shoppingTotal):
- return catalog("get")
-
-def gettotal(catalog, shoppingCart, shoppingTotal):
- return shoppingCart("gettotal")
-
-def deleteall(catalog, shoppingCart, shoppingTotal):
- return shoppingCart("deleteall")
-
-def delete(id, catalog, shoppingCart, shoppingTotal):
- return shoppingCart("delete", id)
-
-# TODO remove these JSON-RPC specific functions
-def listMethods(catalog, shoppingCart, shoppingTotal):
- return ("Service.get", "Service.gettotal")
-
diff --git a/sca-cpp/trunk/test/store-scheme/Makefile.am b/sca-cpp/trunk/test/store-scheme/Makefile.am
deleted file mode 100644
index 77cceb8352..0000000000
--- a/sca-cpp/trunk/test/store-scheme/Makefile.am
+++ /dev/null
@@ -1,23 +0,0 @@
-# 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.
-
-noinst_PROGRAMS = script-test
-
-script_test_SOURCES = script-test.cpp
-script_test_LDFLAGS = -lxml2 -lmozjs
-
-TESTS = script-test server-test
diff --git a/sca-cpp/trunk/test/store-scheme/currency-converter.scm b/sca-cpp/trunk/test/store-scheme/currency-converter.scm
deleted file mode 100644
index fc506c3d73..0000000000
--- a/sca-cpp/trunk/test/store-scheme/currency-converter.scm
+++ /dev/null
@@ -1,27 +0,0 @@
-; 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.
-
-; Currency converter implementation
-
-(define (convert from to amount)
- (if (equal? to "EUR") (* amount 0.70) amount)
-)
-
-(define (symbol currency)
- (if (equal? currency "EUR") "E" "$")
-)
-
diff --git a/sca-cpp/trunk/test/store-scheme/fruits-catalog.scm b/sca-cpp/trunk/test/store-scheme/fruits-catalog.scm
deleted file mode 100644
index d79ff1b677..0000000000
--- a/sca-cpp/trunk/test/store-scheme/fruits-catalog.scm
+++ /dev/null
@@ -1,33 +0,0 @@
-; 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.
-
-; Catalog implementation
-
-(define (get converter currencyCode)
- (define code (currencyCode))
- (define (convert price) (converter "convert" "USD" code price))
- (define symbol (converter "symbol" code))
- (list
- (list (list 'javaClass "services.Item") (list 'name "Apple") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price (convert 2.99)))
- (list (list 'javaClass "services.Item") (list 'name "Orange") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price (convert 3.55)))
- (list (list 'javaClass "services.Item") (list 'name "Pear") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price (convert 1.55)))
- )
-)
-
-; TODO remove these JSON-RPC specific functions
-(define (listMethods converter currencyCode) (list "Service.get"))
-
diff --git a/sca-cpp/trunk/test/store-scheme/htdocs/.htaccess b/sca-cpp/trunk/test/store-scheme/htdocs/.htaccess
deleted file mode 100644
index e2e343b6b2..0000000000
--- a/sca-cpp/trunk/test/store-scheme/htdocs/.htaccess
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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.
-
-DirectoryIndex store.html
diff --git a/sca-cpp/trunk/test/store-scheme/htdocs/store.html b/sca-cpp/trunk/test/store-scheme/htdocs/store.html
deleted file mode 100644
index 21eabca7a7..0000000000
--- a/sca-cpp/trunk/test/store-scheme/htdocs/store.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>Store</title>
-
-<script type="text/javascript" src="store.js"></script>
-
-<script language="JavaScript">
-
- //@Reference
- var catalog = new tuscany.sca.Reference("catalog");
-
- //@Reference
- var shoppingCart = new tuscany.sca.Reference("shoppingCart");
-
- //@Reference
- var shoppingTotal = new tuscany.sca.Reference("shoppingTotal");
-
- var catalogItems;
-
- function catalog_getResponse(items,exception) {
- if(exception){
- alert(exception.message);
- return;
- }
- var catalog = "";
-
- for (var i=0; i<items.length; i++) {
- var item = items[i].name + ' - ' + items[i].price;
- catalog += '<input name="items" type="checkbox" value="' +
- item + '">' + item + ' <br>';
- }
- document.getElementById('catalog').innerHTML=catalog;
- catalogItems = items;
-
- // TEMP
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
-
- function shoppingCart_getResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var list = "";
- for (var i=0; i<entries.length; i++) {
- var content = entries[i].getElementsByTagName("content")[0];
- var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
- var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
- list += name + ' - ' + price + ' <br>';
- }
- document.getElementById("shoppingCart").innerHTML = list;
-
- if (entries.length != 0) {
- try {
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
- catch(e){
- alert(e);
- }
- }
- }
- }
-
- function shoppingTotal_getTotalResponse(total,exception) {
- if(exception) {
- alert(exception.message);
- return;
- }
- document.getElementById('total').innerHTML = total;
- }
-
- function shoppingCart_postResponse(entry) {
- shoppingCart.get("", shoppingCart_getResponse);
- }
-
- function addToCart() {
- var items = document.catalogForm.items;
- var j = 0;
- for (var i=0; i<items.length; i++)
- if (items[i].checked) {
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title type="text">Item</title><content type="application/xml">' +
- '<item>' +
- '<javaClass>' + catalogItems[i].javaClass + '</javaClass>' +
- '<name>' + catalogItems[i].name + '</name>' +
- '<currencyCode>' + catalogItems[i].currencyCode + '</currencyCode>' +
- '<currencySymbol>' + catalogItems[i].currencySymbol + '</currencySymbol>' +
- '<price>' + catalogItems[i].price + '</price>' +
- '</item>' +
- '</content></entry>';
- shoppingCart.post(entry, shoppingCart_postResponse);
- items[i].checked = false;
- }
- }
- function checkoutCart() {
- document.getElementById('store').innerHTML='<h2>' +
- 'Thanks for Shopping With Us!</h2>'+
- '<h2>Your Order</h2>'+
- '<form name="orderForm">'+
- document.getElementById('shoppingCart').innerHTML+
- '<br>'+
- document.getElementById('total').innerHTML+
- '<br>'+
- '<br>'+
- '<input type="submit" value="Continue Shopping">'+
- '</form>';
- shoppingCart.del("", null);
- }
- function deleteCart() {
- shoppingCart.del("", null);
- document.getElementById('shoppingCart').innerHTML = "";
- document.getElementById('total').innerHTML = "";
- }
-
- function init() {
-
- try {
- catalog.get(catalog_getResponse);
- shoppingCart.get("", shoppingCart_getResponse);
- }
- catch(e){
- alert(e);
- }
- }
-
-</script>
-
-</head>
-
-<body onload="init()">
-<h1>Store</h1>
- <div id="store">
- <h2>Catalog</h2>
- <form name="catalogForm">
- <div id="catalog" ></div>
- <br>
- <input type="button" onClick="addToCart()" value="Add to Cart">
- </form>
-
- <br>
-
- <h2>Your Shopping Cart</h2>
- <form name="shoppingCartForm">
- <div id="shoppingCart"></div>
- <br>
- <div id="total"></div>
- <br>
- <input type="button" onClick="checkoutCart()" value="Checkout">
- <input type="button" onClick="deleteCart()" value="Empty">
- <a href="../shoppingCart/">(feed)</a>
- </form>
- </div>
-</body>
-</html>
diff --git a/sca-cpp/trunk/test/store-scheme/htdocs/store.js b/sca-cpp/trunk/test/store-scheme/htdocs/store.js
deleted file mode 100644
index 9cd8eb526d..0000000000
--- a/sca-cpp/trunk/test/store-scheme/htdocs/store.js
+++ /dev/null
@@ -1,661 +0,0 @@
-
-/* Apache Tuscany SCA Widget header */
-
-/*
- * JSON-RPC JavaScript client
- *
- * $Id: jsonrpc.js,v 1.36.2.3 2006/03/08 15:09:37 mclark Exp $
- *
- * Copyright (c) 2003-2004 Jan-Klaas Kollhof
- * Copyright (c) 2005 Michael Clark, Metaparadigm Pte Ltd
- *
- * This code is based on Jan-Klaas' JavaScript o lait library (jsolait).
- *
- * Licensed 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.
- *
- */
-
-/*
- * Modifications for Apache Tuscany:
- * - JSONRpcClient_createMethod changed so callback is last arg
- */
-
-/* escape a character */
-
-escapeJSONChar =
-function escapeJSONChar(c)
-{
- if(c == "\"" || c == "\\") return "\\" + c;
- else if (c == "\b") return "\\b";
- else if (c == "\f") return "\\f";
- else if (c == "\n") return "\\n";
- else if (c == "\r") return "\\r";
- else if (c == "\t") return "\\t";
- var hex = c.charCodeAt(0).toString(16);
- if(hex.length == 1) return "\\u000" + hex;
- else if(hex.length == 2) return "\\u00" + hex;
- else if(hex.length == 3) return "\\u0" + hex;
- else return "\\u" + hex;
-};
-
-
-/* encode a string into JSON format */
-
-escapeJSONString =
-function escapeJSONString(s)
-{
- /* The following should suffice but Safari's regex is b0rken
- (doesn't support callback substitutions)
- return "\"" + s.replace(/([^\u0020-\u007f]|[\\\"])/g,
- escapeJSONChar) + "\"";
- */
-
- /* Rather inefficient way to do it */
- var parts = s.split("");
- for(var i=0; i < parts.length; i++) {
- var c =parts[i];
- if(c == '"' ||
- c == '\\' ||
- c.charCodeAt(0) < 32 ||
- c.charCodeAt(0) >= 128)
- parts[i] = escapeJSONChar(parts[i]);
- }
- return "\"" + parts.join("") + "\"";
-};
-
-
-/* Marshall objects to JSON format */
-
-toJSON = function toJSON(o)
-{
- if(o == null) {
- return "null";
- } else if(o.constructor == String) {
- return escapeJSONString(o);
- } else if(o.constructor == Number) {
- return o.toString();
- } else if(o.constructor == Boolean) {
- return o.toString();
- } else if(o.constructor == Date) {
- return '{javaClass: "java.util.Date", time: ' + o.valueOf() +'}';
- } else if(o.constructor == Array) {
- var v = [];
- for(var i = 0; i < o.length; i++) v.push(toJSON(o[i]));
- return "[" + v.join(", ") + "]";
- } else {
- var v = [];
- for(attr in o) {
- if(o[attr] == null) v.push("\"" + attr + "\": null");
- else if(typeof o[attr] == "function"); /* skip */
- else v.push(escapeJSONString(attr) + ": " + toJSON(o[attr]));
- }
- return "{" + v.join(", ") + "}";
- }
-};
-
-
-/* JSONRpcClient constructor */
-
-JSONRpcClient =
-function JSONRpcClient_ctor(serverURL, user, pass, objectID)
-{
- this.serverURL = serverURL;
- this.user = user;
- this.pass = pass;
- this.objectID = objectID;
-
- /* Add standard methods */
- if(this.objectID) {
- this._addMethods(["listMethods"]);
- var req = this._makeRequest("listMethods", []);
- } else {
- this._addMethods(["system.listMethods"]);
- var req = this._makeRequest("system.listMethods", []);
- }
- var m = this._sendRequest(req);
- this._addMethods(m);
-};
-
-
-/* JSONRpcCLient.Exception */
-
-JSONRpcClient.Exception =
-function JSONRpcClient_Exception_ctor(code, message, javaStack)
-{
- this.code = code;
- var name;
- if(javaStack) {
- this.javaStack = javaStack;
- var m = javaStack.match(/^([^:]*)/);
- if(m) name = m[0];
- }
- if(name) this.name = name;
- else this.name = "JSONRpcClientException";
- this.message = message;
-};
-
-JSONRpcClient.Exception.CODE_REMOTE_EXCEPTION = 490;
-JSONRpcClient.Exception.CODE_ERR_CLIENT = 550;
-JSONRpcClient.Exception.CODE_ERR_PARSE = 590;
-JSONRpcClient.Exception.CODE_ERR_NOMETHOD = 591;
-JSONRpcClient.Exception.CODE_ERR_UNMARSHALL = 592;
-JSONRpcClient.Exception.CODE_ERR_MARSHALL = 593;
-
-JSONRpcClient.Exception.prototype = new Error();
-
-JSONRpcClient.Exception.prototype.toString =
-function JSONRpcClient_Exception_toString(code, msg)
-{
- return this.name + ": " + this.message;
-};
-
-
-/* Default top level exception handler */
-
-JSONRpcClient.default_ex_handler =
-function JSONRpcClient_default_ex_handler(e) { alert(e); };
-
-
-/* Client settable variables */
-
-JSONRpcClient.toplevel_ex_handler = JSONRpcClient.default_ex_handler;
-JSONRpcClient.profile_async = false;
-JSONRpcClient.max_req_active = 1;
-JSONRpcClient.requestId = 1;
-
-
-/* JSONRpcClient implementation */
-
-JSONRpcClient.prototype._createMethod =
-function JSONRpcClient_createMethod(methodName)
-{
- var fn=function()
- {
- var args = [];
- var callback = null;
- for(var i=0;i<arguments.length;i++) args.push(arguments[i]);
-
-/* TUSCANY change callback to be last arg instead of first to match binding.ajax
- if(typeof args[0] == "function") callback = args.shift();
-*/
- if(typeof args[arguments.length-1] == "function") callback = args.pop();
-
- var req = fn.client._makeRequest.call(fn.client, fn.methodName,
- args, callback);
- if(callback == null) {
- return fn.client._sendRequest.call(fn.client, req);
- } else {
- JSONRpcClient.async_requests.push(req);
- JSONRpcClient.kick_async();
- return req.requestId;
- }
- };
- fn.client = this;
- fn.methodName = methodName;
- return fn;
-};
-
-JSONRpcClient.prototype._addMethods =
-function JSONRpcClient_addMethods(methodNames)
-{
- for(var i=0; i<methodNames.length; i++) {
- var obj = this;
- var names = methodNames[i].split(".");
- for(var n=0; n<names.length-1; n++) {
- var name = names[n];
- if(obj[name]) {
- obj = obj[name];
- } else {
- obj[name] = new Object();
- obj = obj[name];
- }
- }
- var name = names[names.length-1];
- if(!obj[name]) {
- var method = this._createMethod(methodNames[i]);
- obj[name] = method;
- }
- }
-};
-
-JSONRpcClient._getCharsetFromHeaders =
-function JSONRpcClient_getCharsetFromHeaders(http)
-{
- try {
- var contentType = http.getResponseHeader("Content-type");
- var parts = contentType.split(/\s*;\s*/);
- for(var i =0; i < parts.length; i++) {
- if(parts[i].substring(0, 8) == "charset=")
- return parts[i].substring(8, parts[i].length);
- }
- } catch (e) {}
- return "UTF-8"; /* default */
-};
-
-/* Async queue globals */
-JSONRpcClient.async_requests = [];
-JSONRpcClient.async_inflight = {};
-JSONRpcClient.async_responses = [];
-JSONRpcClient.async_timeout = null;
-JSONRpcClient.num_req_active = 0;
-
-JSONRpcClient._async_handler =
-function JSONRpcClient_async_handler()
-{
- JSONRpcClient.async_timeout = null;
-
- while(JSONRpcClient.async_responses.length > 0) {
- var res = JSONRpcClient.async_responses.shift();
- if(res.canceled) continue;
- if(res.profile) res.profile.dispatch = new Date();
- try {
- res.cb(res.result, res.ex, res.profile);
- } catch(e) {
- JSONRpcClient.toplevel_ex_handler(e);
- }
- }
-
- while(JSONRpcClient.async_requests.length > 0 &&
- JSONRpcClient.num_req_active < JSONRpcClient.max_req_active) {
- var req = JSONRpcClient.async_requests.shift();
- if(req.canceled) continue;
- req.client._sendRequest.call(req.client, req);
- }
-};
-
-JSONRpcClient.kick_async =
-function JSONRpcClient_kick_async()
-{
- if(JSONRpcClient.async_timeout == null)
- JSONRpcClient.async_timeout =
- setTimeout(JSONRpcClient._async_handler, 0);
-};
-
-JSONRpcClient.cancelRequest =
-function JSONRpcClient_cancelRequest(requestId)
-{
- /* If it is in flight then mark it as canceled in the inflight map
- and the XMLHttpRequest callback will discard the reply. */
- if(JSONRpcClient.async_inflight[requestId]) {
- JSONRpcClient.async_inflight[requestId].canceled = true;
- return true;
- }
-
- /* If its not in flight yet then we can just mark it as canceled in
- the the request queue and it will get discarded before being sent. */
- for(var i in JSONRpcClient.async_requests) {
- if(JSONRpcClient.async_requests[i].requestId == requestId) {
- JSONRpcClient.async_requests[i].canceled = true;
- return true;
- }
- }
-
- /* It may have returned from the network and be waiting for its callback
- to be dispatched, so mark it as canceled in the response queue
- and the response will get discarded before calling the callback. */
- for(var i in JSONRpcClient.async_responses) {
- if(JSONRpcClient.async_responses[i].requestId == requestId) {
- JSONRpcClient.async_responses[i].canceled = true;
- return true;
- }
- }
-
- return false;
-};
-
-JSONRpcClient.prototype._makeRequest =
-function JSONRpcClient_makeRequest(methodName, args, cb)
-{
- var req = {};
- req.client = this;
- req.requestId = JSONRpcClient.requestId++;
-
- var obj = {};
- obj.id = req.requestId;
- if (this.objectID)
- obj.method = ".obj#" + this.objectID + "." + methodName;
- else
- obj.method = methodName;
- obj.params = args;
-
- if (cb) req.cb = cb;
- if (JSONRpcClient.profile_async)
- req.profile = { "submit": new Date() };
- req.data = toJSON(obj);
-
- return req;
-};
-
-JSONRpcClient.prototype._sendRequest =
-function JSONRpcClient_sendRequest(req)
-{
- if(req.profile) req.profile.start = new Date();
-
- /* Get free http object from the pool */
- var http = JSONRpcClient.poolGetHTTPRequest();
- JSONRpcClient.num_req_active++;
-
- /* Send the request */
- if (typeof(this.user) == "undefined") {
- http.open("POST", this.serverURL, (req.cb != null));
- } else {
- http.open("POST", this.serverURL, (req.cb != null), this.user, this.pass);
- }
-
- /* setRequestHeader is missing in Opera 8 Beta */
- try { http.setRequestHeader("Content-type", "text/plain"); } catch(e) {}
-
- /* Construct call back if we have one */
- if(req.cb) {
- var self = this;
- http.onreadystatechange = function() {
- if(http.readyState == 4) {
- http.onreadystatechange = function () {};
- var res = { "cb": req.cb, "result": null, "ex": null};
- if (req.profile) {
- res.profile = req.profile;
- res.profile.end = new Date();
- }
- try { res.result = self._handleResponse(http); }
- catch(e) { res.ex = e; }
- if(!JSONRpcClient.async_inflight[req.requestId].canceled)
- JSONRpcClient.async_responses.push(res);
- delete JSONRpcClient.async_inflight[req.requestId];
- JSONRpcClient.kick_async();
- }
- };
- } else {
- http.onreadystatechange = function() {};
- }
-
- JSONRpcClient.async_inflight[req.requestId] = req;
-
- try {
- http.send(req.data);
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- if(!req.cb) return this._handleResponse(http);
-};
-
-JSONRpcClient.prototype._handleResponse =
-function JSONRpcClient_handleResponse(http)
-{
- /* Get the charset */
- if(!this.charset) {
- this.charset = JSONRpcClient._getCharsetFromHeaders(http);
- }
-
- /* Get request results */
- var status, statusText, data;
- try {
- status = http.status;
- statusText = http.statusText;
- data = http.responseText;
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- JSONRpcClient.kick_async();
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- /* Return http object to the pool; */
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
-
- /* Unmarshall the response */
- if(status != 200) {
- throw new JSONRpcClient.Exception(status, statusText);
- }
- var obj;
- try {
- eval("obj = " + data);
- } catch(e) {
- throw new JSONRpcClient.Exception(550, "error parsing result");
- }
- if(obj.error)
- throw new JSONRpcClient.Exception(obj.error.code, obj.error.msg,
- obj.error.trace);
- var res = obj.result;
-
- /* Handle CallableProxy */
- if(res && res.objectID && res.JSONRPCType == "CallableReference")
- return new JSONRpcClient(this.serverURL, this.user,
- this.pass, res.objectID);
-
- return res;
-};
-
-
-/* XMLHttpRequest wrapper code */
-
-/* XMLHttpRequest pool globals */
-JSONRpcClient.http_spare = [];
-JSONRpcClient.http_max_spare = 8;
-
-JSONRpcClient.poolGetHTTPRequest =
-function JSONRpcClient_pool_getHTTPRequest()
-{
- if(JSONRpcClient.http_spare.length > 0) {
- return JSONRpcClient.http_spare.pop();
- }
- return JSONRpcClient.getHTTPRequest();
-};
-
-JSONRpcClient.poolReturnHTTPRequest =
-function JSONRpcClient_poolReturnHTTPRequest(http)
-{
- if(JSONRpcClient.http_spare.length >= JSONRpcClient.http_max_spare)
- delete http;
- else
- JSONRpcClient.http_spare.push(http);
-};
-
-JSONRpcClient.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
-JSONRpcClient.getHTTPRequest =
-function JSONRpcClient_getHTTPRequest()
-{
- /* Mozilla XMLHttpRequest */
- try {
- JSONRpcClient.httpObjectName = "XMLHttpRequest";
- return new XMLHttpRequest();
- } catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < JSONRpcClient.msxmlNames.length; i++) {
- try {
- JSONRpcClient.httpObjectName = JSONRpcClient.msxmlNames[i];
- return new ActiveXObject(JSONRpcClient.msxmlNames[i]);
- } catch (e) {}
- }
-
- /* None found */
- JSONRpcClient.httpObjectName = null;
- throw new JSONRpcClient.Exception(0, "Can't create XMLHttpRequest object");
-};
-
-
-/*
- * 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.
- */
-
-function AtomClient(uri) {
-
- this.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
- this.uri=uri;
-
- this.get = function(id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("get - Error getting data from the server");
- }
- }
- }
- xhr.open("GET", uri + '/' + id, true);
- xhr.send(null);
- }
-
- this.post = function (entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 201) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("post - Error getting data from the server");
- }
- }
- }
- xhr.open("POST", uri, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.put = function (id, entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("put - Error getting data from the server");
- }
- }
- }
- xhr.open("PUT", uri + '/' + id, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.del = function (id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- if (responseFunction != null) responseFunction();
- } else {
- alert("delete - Error getting data from the server");
- }
- }
- }
- xhr.open("DELETE", uri + '/' + id, true);
- xhr.send(null);
- }
- this.createXMLHttpRequest = function () {
- /* Mozilla XMLHttpRequest */
- try {return new XMLHttpRequest();} catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < this.msxmlNames.length; i++) {
- try {return new ActiveXObject(this.msxmlNames[i]);} catch (e) {}
- }
- alert("XML http request not supported");
- return null;
- }
- if (typeof DOMParser == "undefined") {
- DOMParser = function () {}
-
- DOMParser.prototype.parseFromString = function (str, contentType) {
- if (typeof ActiveXObject != "undefined") {
- var d = new ActiveXObject("MSXML.DomDocument");
- d.loadXML(str);
- return d;
- } else if (typeof XMLHttpRequest != "undefined") {
- var req = new XMLHttpRequest;
- req.open("GET", "data:" + (contentType || "application/xml") +
- ";charset=utf-8," + encodeURIComponent(str), false);
- if (req.overrideMimeType) {
- req.overrideMimeType(contentType);
- }
- req.send(null);
- return req.responseXML;
- }
- }
- }
-}
-
-
-
-/* Tuscany Reference/Property injection code */
-
-if (!tuscany) {
-var tuscany = {};
-}
-if (!tuscany.sca) {
-tuscany.sca = {};
-}
-
-tuscany.sca.propertyMap = new String();
-tuscany.sca.Property = function (name) {
- return tuscany.sca.propertyMap[name];
-}
-
-tuscany.sca.referenceMap = new Object();
-tuscany.sca.referenceMap.catalog = new JSONRpcClient("/catalog").Service;
-tuscany.sca.referenceMap.shoppingCart = new AtomClient("/shoppingCart");
-tuscany.sca.referenceMap.shoppingTotal = new JSONRpcClient("/total").Service;
-tuscany.sca.Reference = function (name) {
- return tuscany.sca.referenceMap[name];
-}
-
-/** End of Apache Tuscany SCA Widget */
-
diff --git a/sca-cpp/trunk/test/store-scheme/script-test.cpp b/sca-cpp/trunk/test/store-scheme/script-test.cpp
deleted file mode 100644
index c8eecb65c3..0000000000
--- a/sca-cpp/trunk/test/store-scheme/script-test.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.
- */
-
-/* $Rev$ $Date$ */
-
-/**
- * Store Test case.
- */
-
-#include <assert.h>
-#include <regex.h>
-#include "stream.hpp"
-#include "string.hpp"
-#include "list.hpp"
-#include "xml.hpp"
-#include "../../modules/scheme/driver.hpp"
-#include "../../modules/json/json.hpp"
-
-namespace store {
-
-using namespace tuscany;
-
-bool testScript() {
- gc_scoped_pool pool;
-
- ifstream is("script-test.scm");
- ostringstream os;
- scheme::evalDriverRun(is, os);
- assert(contains(str(os), "(\"Sample Feed\" \""));
- assert(contains(str(os), "\" (\"Item\" \""));
- assert(contains(str(os), "\" ((javaClass \"services.Item\") (name \"Orange\") (currencyCode \"USD\") (currencySymbol \"$\") (price 3.55))) (\"Item\" \""));
- assert(contains(str(os), "\" ((javaClass \"services.Item\") (name \"Apple\") (currencyCode \"USD\") (currencySymbol \"$\") (price 2.99))))"));
- return true;
-}
-
-bool testEval() {
- {
- gc_scoped_pool pool;
- ifstream is("script-test.scm");
- ostringstream os;
- scheme::setupDisplay(os);
- scheme::Env globalEnv = scheme::setupEnvironment();
- const value exp(mklist<value>("storeui_service", string("getcatalog")));
- const value val = scheme::evalScript(exp, is, globalEnv);
-
- ostringstream vs;
- vs << val;
- assert(contains(str(vs), "(((javaClass \"services.Item\") (name \"Apple\") (currencyCode \"USD\") (currencySymbol \"$\") (price 2.99)) ((javaClass \"services.Item\") (name \"Orange\") (currencyCode \"USD\") (currencySymbol \"$\") (price 3.55)) ((javaClass \"services.Item\") (name \"Pear\") (currencyCode \"USD\") (currencySymbol \"$\") (price 1.55)))"));
- }
-
- {
- gc_scoped_pool pool;
- ifstream is("script-test.scm");
- ostringstream os;
- scheme::setupDisplay(os);
-
- scheme::Env globalEnv = scheme::setupEnvironment();
- const value exp(mklist<value>("storeui_service", string("gettotal")));
- const value res = scheme::evalScript(exp, is, globalEnv);
-
- ostringstream rs;
- rs << res;
- assert(contains(str(rs), "10"));
- }
- return true;
-}
-
-}
-
-int main() {
-
- tuscany::cout << "Testing..." << tuscany::endl;
-
- store::testScript();
- store::testEval();
-
- tuscany::cout << "OK" << tuscany::endl;
-
- return 0;
-}
diff --git a/sca-cpp/trunk/test/store-scheme/script-test.scm b/sca-cpp/trunk/test/store-scheme/script-test.scm
deleted file mode 100644
index 6db3408794..0000000000
--- a/sca-cpp/trunk/test/store-scheme/script-test.scm
+++ /dev/null
@@ -1,140 +0,0 @@
-; 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.
-
-; Currency implementation
-
-(define (currency_convert from to amount)
- (if (equal? to "EUR") (* amount 0.70) amount)
-)
-
-(define (currency_symbol currency)
- (if (equal? currency "EUR") "E" "$")
-)
-
-(define (currency_impl op args)
- (cond
- ((equal? op "convert") (apply currency_convert args))
- ((equal? op "symbol") (apply currency_symbol args))
- )
-)
-
-; Currency composite
-
-(define (currency_service op . args) (currency_impl op args))
-
-; Catalog implementation
-
-(define (catalog_get converter)
- (define (convert price) (converter "convert" "USD" "USD" price))
-
- (define code "USD")
- (define symbol (converter "symbol" code))
-
- (list
- (list (list 'javaClass "services.Item") (list 'name "Apple") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price 2.99))
- (list (list 'javaClass "services.Item") (list 'name "Orange") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price 3.55))
- (list (list 'javaClass "services.Item") (list 'name "Pear") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price 1.55))
- )
-)
-
-(define (catalog_impl converter op args)
- (cond
- ((equal? op "get") (apply catalog_get (cons converter args)))
- )
-)
-
-; Catalog composite
-
-(define (catalog_service op . args) (catalog_impl currency_service op args))
-
-; Cart implementation
-
-(define (cart_post content item)
- (cons (cons "Item" (list (uuid) item)) content)
-)
-
-(define (cart_getall content)
- (cons "Sample Feed" (cons (uuid) content))
-)
-
-(define (cart_getentry id)
- (define entry (list (list 'name "Apple") (list 'currencyCode "USD") (list 'currencySymbol "$") (list 'price 2.99)))
- (cons "Item" (list id entry))
-)
-
-(define (cart_gettotal)
- 10.0
-)
-
-(define (cart_impl op args)
- (cond
- ((equal? op "post") (apply cart_post args))
- ((equal? op "getall") (apply cart_getall args))
- ((equal? op "getentry") (apply cart_getentry args))
- ((equal? op "gettotal") (apply cart_gettotal args))
- )
-)
-
-; Store UI implementation
-
-(define (storeui_post cart content item)
- (cart "post" content item)
-)
-
-(define (storeui_getcart cart content)
- (cart "getall" content)
-)
-
-(define (storeui_getentry cart id)
- (cart "getentry" id)
-)
-
-(define (storeui_getcatalog catalog)
- (catalog "get")
-)
-
-(define (storeui_gettotal cart)
- (cart "gettotal")
-)
-
-(define (storeui_impl cart catalog op args)
- (cond
- ((equal? op "post") (apply storeui_post (cons cart args)))
- ((equal? op "getall") (apply storeui_getcart (cons cart args)))
- ((equal? op "getentry") (apply storeui_getentry (cons cart args)))
- ((equal? op "getcatalog") (apply storeui_getcatalog (cons catalog args)))
- ((equal? op "gettotal") (apply storeui_gettotal (cons cart args)))
- )
-)
-
-; Store UI composite
-
-(define (cart_service op . args) (cart_impl op args))
-
-(define (storeui_service op . args) (storeui_impl cart_service catalog_service op args))
-
-; Store UI test case
-
-(define catalog (storeui_service "getcatalog"))
-(define empty (list))
-(define apple (car catalog))
-(define orange (car (cdr catalog)))
-(define added1 (storeui_service "post" empty apple))
-(define added2 (storeui_service "post" added1 orange))
-(display (storeui_service "getall" added2))
-(display (storeui_service "gettotal"))
-
diff --git a/sca-cpp/trunk/test/store-scheme/server-test b/sca-cpp/trunk/test/store-scheme/server-test
deleted file mode 100755
index d2013f6892..0000000000
--- a/sca-cpp/trunk/test/store-scheme/server-test
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-echo "Testing..."
-here=`readlink -f $0`; here=`dirname $here`
-curl_prefix=`cat $here/../../modules/http/curl.prefix`
-
-# Setup
-./start
-sleep 2
-
-# Test HTTP GET
-$curl_prefix/bin/curl http://localhost:8090/store.html 2>/dev/null >tmp/store.html
-diff tmp/store.html htdocs/store.html
-rc=$?
-
-# Cleanup
-./stop
-sleep 2
-
-if [ "$rc" = "0" ]; then
- echo "OK"
-fi
-return $rc
diff --git a/sca-cpp/trunk/test/store-scheme/shopping-cart.scm b/sca-cpp/trunk/test/store-scheme/shopping-cart.scm
deleted file mode 100644
index 484044d420..0000000000
--- a/sca-cpp/trunk/test/store-scheme/shopping-cart.scm
+++ /dev/null
@@ -1,84 +0,0 @@
-; 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.
-
-; Shopping cart implementation
-
-(define cartId "1234")
-
-; Get the shopping cart from the cache
-; Return an empty cart if not found
-(define (getcart id cache)
- (define cart (cache "get" (list id)))
- (if (nul cart)
- (list)
- cart)
-)
-
-; Post a new item to the cart, create a new cart if necessary
-(define (post collection item cache)
- (define id (uuid))
- (define newItem (list (car item) id (caddr item)))
- (define cart (cons newItem (getcart cartId cache)))
- (cache "put" (list cartId) cart)
- (list id)
-)
-
-; Find an item in the cart
-(define (find id cart)
- (if (nul cart)
- (cons "Item" (list "0" (list)))
- (if (= id (cadr (car cart)))
- (car cart)
- (find id (cdr cart))))
-)
-
-; Get items from the cart
-(define (get id cache)
- (if (nul id)
- (cons "Your Cart" (cons cartId (getcart cartId cache)))
- (find (car id) (getcart cartId cache))
- )
-)
-
-; Delete items from the cart
-(define (delete id cache)
- (if (nul id)
- (cache "delete" (list cartId))
- true
- )
-)
-
-; Return the price of an item
-(define (price item)
- (cadr (assoc 'price (caddr item)))
-)
-
-; Sum the prices of a list of items
-(define (sum items)
- (if (nul items)
- 0
- (+ (price (car items)) (sum (cdr items))))
-)
-
-; Return the total price of the items in the cart
-(define (gettotal cache)
- (define cart (getcart cartId cache))
- (sum cart)
-)
-
-; TODO remove these JSON-RPC specific functions
-(define (listMethods cache) (list "Service.gettotal"))
diff --git a/sca-cpp/trunk/test/store-scheme/ssl-start b/sca-cpp/trunk/test/store-scheme/ssl-start
deleted file mode 100755
index 14b85f5342..0000000000
--- a/sca-cpp/trunk/test/store-scheme/ssl-start
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-ca-conf tmp localhost
-../../modules/http/httpd-cert-conf tmp localhost
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/http/httpd-ssl-conf tmp localhost 8453 htdocs
-../../modules/server/server-conf tmp
-../../modules/server/scheme-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/cache/memcached-start
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-scheme/start b/sca-cpp/trunk/test/store-scheme/start
deleted file mode 100755
index ffd7173ee2..0000000000
--- a/sca-cpp/trunk/test/store-scheme/start
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/server/server-conf tmp
-../../modules/server/scheme-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/cache/memcached-start
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-scheme/stop b/sca-cpp/trunk/test/store-scheme/stop
deleted file mode 100755
index a59273b8ed..0000000000
--- a/sca-cpp/trunk/test/store-scheme/stop
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-stop tmp
-../../components/cache/memcached-stop
diff --git a/sca-cpp/trunk/test/store-scheme/store.composite b/sca-cpp/trunk/test/store-scheme/store.composite
deleted file mode 100644
index 36b155b595..0000000000
--- a/sca-cpp/trunk/test/store-scheme/store.composite
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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://store"
- name="store">
-
- <component name="Store">
- <t:implementation.scheme script="store.scm"/>
- <service name="Widget">
- <t:binding.http uri="store"/>
- </service>
- <reference name="catalog" target="Catalog"/>
- <reference name="shoppingCart" target="ShoppingCart/Cart"/>
- <reference name="shoppingTotal" target="ShoppingCart/Total"/>
- </component>
-
- <component name="Catalog">
- <t:implementation.scheme script="fruits-catalog.scm"/>
- <property name="currencyCode">USD</property>
- <service name="Catalog">
- <t:binding.jsonrpc uri="catalog"/>
- </service>
- <reference name="currencyConverter" target="CurrencyConverter"/>
- </component>
-
- <component name="ShoppingCart">
- <t:implementation.scheme script="shopping-cart.scm"/>
- <service name="ShoppingCart">
- <t:binding.atom uri="shoppingCart"/>
- </service>
- <service name="Total">
- <t:binding.jsonrpc uri="total"/>
- </service>
- <reference name="cache" target="Cache"/>
- </component>
-
- <component name="CurrencyConverter">
- <t:implementation.scheme script="currency-converter.scm"/>
- <service name="CurrencyConverter">
- <t:binding.jsonrpc uri="currencyConverter"/>
- </service>
- </component>
-
- <component name="Cache">
- <implementation.cpp path="../../components/cache/.libs" library="libmemcache"/>
- <service name="Cache">
- <t:binding.atom uri="cache"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-scheme/store.scm b/sca-cpp/trunk/test/store-scheme/store.scm
deleted file mode 100644
index d851dc7ed6..0000000000
--- a/sca-cpp/trunk/test/store-scheme/store.scm
+++ /dev/null
@@ -1,50 +0,0 @@
-; 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.
-
-; Store implementation
-
-(define (post item catalog shoppingCart shoppingTotal)
- (shoppingCart "post" item)
-)
-
-(define (getall catalog shoppingCart shoppingTotal)
- (shoppingCart "getall")
-)
-
-(define (get id catalog shoppingCart shoppingTotal)
- (shoppingCart "get" id)
-)
-
-(define (getcatalog catalog shoppingCart shoppingTotal)
- (catalog "get")
-)
-
-(define (gettotal catalog shoppingCart shoppingTotal)
- (shoppingCart "gettotal")
-)
-
-(define (deleteall catalog shoppingCart shoppingTotal)
- (shoppingCart "deleteall")
-)
-
-(define (delete id catalog shoppingCart shoppingTotal)
- (shoppingCart "delete" id)
-)
-
-; TODO remove these JSON-RPC specific functions
-(define (listMethods catalog shoppingCart shoppingTotal) (list "Service.getcatalog" "Service.gettotal"))
-
diff --git a/sca-cpp/trunk/test/store-sql/Makefile.am b/sca-cpp/trunk/test/store-sql/Makefile.am
deleted file mode 100644
index 345e58d544..0000000000
--- a/sca-cpp/trunk/test/store-sql/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-# 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.
-
-TESTS = server-test
-
diff --git a/sca-cpp/trunk/test/store-sql/currency-converter.scm b/sca-cpp/trunk/test/store-sql/currency-converter.scm
deleted file mode 100644
index fc506c3d73..0000000000
--- a/sca-cpp/trunk/test/store-sql/currency-converter.scm
+++ /dev/null
@@ -1,27 +0,0 @@
-; 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.
-
-; Currency converter implementation
-
-(define (convert from to amount)
- (if (equal? to "EUR") (* amount 0.70) amount)
-)
-
-(define (symbol currency)
- (if (equal? currency "EUR") "E" "$")
-)
-
diff --git a/sca-cpp/trunk/test/store-sql/fruits-catalog.scm b/sca-cpp/trunk/test/store-sql/fruits-catalog.scm
deleted file mode 100644
index d79ff1b677..0000000000
--- a/sca-cpp/trunk/test/store-sql/fruits-catalog.scm
+++ /dev/null
@@ -1,33 +0,0 @@
-; 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.
-
-; Catalog implementation
-
-(define (get converter currencyCode)
- (define code (currencyCode))
- (define (convert price) (converter "convert" "USD" code price))
- (define symbol (converter "symbol" code))
- (list
- (list (list 'javaClass "services.Item") (list 'name "Apple") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price (convert 2.99)))
- (list (list 'javaClass "services.Item") (list 'name "Orange") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price (convert 3.55)))
- (list (list 'javaClass "services.Item") (list 'name "Pear") (list 'currencyCode code) (list 'currencySymbol symbol) (list 'price (convert 1.55)))
- )
-)
-
-; TODO remove these JSON-RPC specific functions
-(define (listMethods converter currencyCode) (list "Service.get"))
-
diff --git a/sca-cpp/trunk/test/store-sql/htdocs/.htaccess b/sca-cpp/trunk/test/store-sql/htdocs/.htaccess
deleted file mode 100644
index e2e343b6b2..0000000000
--- a/sca-cpp/trunk/test/store-sql/htdocs/.htaccess
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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.
-
-DirectoryIndex store.html
diff --git a/sca-cpp/trunk/test/store-sql/htdocs/store.html b/sca-cpp/trunk/test/store-sql/htdocs/store.html
deleted file mode 100644
index 21eabca7a7..0000000000
--- a/sca-cpp/trunk/test/store-sql/htdocs/store.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!--
- * 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.
--->
-<html>
-<head>
-<title>Store</title>
-
-<script type="text/javascript" src="store.js"></script>
-
-<script language="JavaScript">
-
- //@Reference
- var catalog = new tuscany.sca.Reference("catalog");
-
- //@Reference
- var shoppingCart = new tuscany.sca.Reference("shoppingCart");
-
- //@Reference
- var shoppingTotal = new tuscany.sca.Reference("shoppingTotal");
-
- var catalogItems;
-
- function catalog_getResponse(items,exception) {
- if(exception){
- alert(exception.message);
- return;
- }
- var catalog = "";
-
- for (var i=0; i<items.length; i++) {
- var item = items[i].name + ' - ' + items[i].price;
- catalog += '<input name="items" type="checkbox" value="' +
- item + '">' + item + ' <br>';
- }
- document.getElementById('catalog').innerHTML=catalog;
- catalogItems = items;
-
- // TEMP
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
-
- function shoppingCart_getResponse(feed) {
- if (feed != null) {
- var entries = feed.getElementsByTagName("entry");
- var list = "";
- for (var i=0; i<entries.length; i++) {
- var content = entries[i].getElementsByTagName("content")[0];
- var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;
- var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;
- list += name + ' - ' + price + ' <br>';
- }
- document.getElementById("shoppingCart").innerHTML = list;
-
- if (entries.length != 0) {
- try {
- shoppingTotal.gettotal(shoppingTotal_getTotalResponse);
- }
- catch(e){
- alert(e);
- }
- }
- }
- }
-
- function shoppingTotal_getTotalResponse(total,exception) {
- if(exception) {
- alert(exception.message);
- return;
- }
- document.getElementById('total').innerHTML = total;
- }
-
- function shoppingCart_postResponse(entry) {
- shoppingCart.get("", shoppingCart_getResponse);
- }
-
- function addToCart() {
- var items = document.catalogForm.items;
- var j = 0;
- for (var i=0; i<items.length; i++)
- if (items[i].checked) {
- var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title type="text">Item</title><content type="application/xml">' +
- '<item>' +
- '<javaClass>' + catalogItems[i].javaClass + '</javaClass>' +
- '<name>' + catalogItems[i].name + '</name>' +
- '<currencyCode>' + catalogItems[i].currencyCode + '</currencyCode>' +
- '<currencySymbol>' + catalogItems[i].currencySymbol + '</currencySymbol>' +
- '<price>' + catalogItems[i].price + '</price>' +
- '</item>' +
- '</content></entry>';
- shoppingCart.post(entry, shoppingCart_postResponse);
- items[i].checked = false;
- }
- }
- function checkoutCart() {
- document.getElementById('store').innerHTML='<h2>' +
- 'Thanks for Shopping With Us!</h2>'+
- '<h2>Your Order</h2>'+
- '<form name="orderForm">'+
- document.getElementById('shoppingCart').innerHTML+
- '<br>'+
- document.getElementById('total').innerHTML+
- '<br>'+
- '<br>'+
- '<input type="submit" value="Continue Shopping">'+
- '</form>';
- shoppingCart.del("", null);
- }
- function deleteCart() {
- shoppingCart.del("", null);
- document.getElementById('shoppingCart').innerHTML = "";
- document.getElementById('total').innerHTML = "";
- }
-
- function init() {
-
- try {
- catalog.get(catalog_getResponse);
- shoppingCart.get("", shoppingCart_getResponse);
- }
- catch(e){
- alert(e);
- }
- }
-
-</script>
-
-</head>
-
-<body onload="init()">
-<h1>Store</h1>
- <div id="store">
- <h2>Catalog</h2>
- <form name="catalogForm">
- <div id="catalog" ></div>
- <br>
- <input type="button" onClick="addToCart()" value="Add to Cart">
- </form>
-
- <br>
-
- <h2>Your Shopping Cart</h2>
- <form name="shoppingCartForm">
- <div id="shoppingCart"></div>
- <br>
- <div id="total"></div>
- <br>
- <input type="button" onClick="checkoutCart()" value="Checkout">
- <input type="button" onClick="deleteCart()" value="Empty">
- <a href="../shoppingCart/">(feed)</a>
- </form>
- </div>
-</body>
-</html>
diff --git a/sca-cpp/trunk/test/store-sql/htdocs/store.js b/sca-cpp/trunk/test/store-sql/htdocs/store.js
deleted file mode 100644
index 9cd8eb526d..0000000000
--- a/sca-cpp/trunk/test/store-sql/htdocs/store.js
+++ /dev/null
@@ -1,661 +0,0 @@
-
-/* Apache Tuscany SCA Widget header */
-
-/*
- * JSON-RPC JavaScript client
- *
- * $Id: jsonrpc.js,v 1.36.2.3 2006/03/08 15:09:37 mclark Exp $
- *
- * Copyright (c) 2003-2004 Jan-Klaas Kollhof
- * Copyright (c) 2005 Michael Clark, Metaparadigm Pte Ltd
- *
- * This code is based on Jan-Klaas' JavaScript o lait library (jsolait).
- *
- * Licensed 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.
- *
- */
-
-/*
- * Modifications for Apache Tuscany:
- * - JSONRpcClient_createMethod changed so callback is last arg
- */
-
-/* escape a character */
-
-escapeJSONChar =
-function escapeJSONChar(c)
-{
- if(c == "\"" || c == "\\") return "\\" + c;
- else if (c == "\b") return "\\b";
- else if (c == "\f") return "\\f";
- else if (c == "\n") return "\\n";
- else if (c == "\r") return "\\r";
- else if (c == "\t") return "\\t";
- var hex = c.charCodeAt(0).toString(16);
- if(hex.length == 1) return "\\u000" + hex;
- else if(hex.length == 2) return "\\u00" + hex;
- else if(hex.length == 3) return "\\u0" + hex;
- else return "\\u" + hex;
-};
-
-
-/* encode a string into JSON format */
-
-escapeJSONString =
-function escapeJSONString(s)
-{
- /* The following should suffice but Safari's regex is b0rken
- (doesn't support callback substitutions)
- return "\"" + s.replace(/([^\u0020-\u007f]|[\\\"])/g,
- escapeJSONChar) + "\"";
- */
-
- /* Rather inefficient way to do it */
- var parts = s.split("");
- for(var i=0; i < parts.length; i++) {
- var c =parts[i];
- if(c == '"' ||
- c == '\\' ||
- c.charCodeAt(0) < 32 ||
- c.charCodeAt(0) >= 128)
- parts[i] = escapeJSONChar(parts[i]);
- }
- return "\"" + parts.join("") + "\"";
-};
-
-
-/* Marshall objects to JSON format */
-
-toJSON = function toJSON(o)
-{
- if(o == null) {
- return "null";
- } else if(o.constructor == String) {
- return escapeJSONString(o);
- } else if(o.constructor == Number) {
- return o.toString();
- } else if(o.constructor == Boolean) {
- return o.toString();
- } else if(o.constructor == Date) {
- return '{javaClass: "java.util.Date", time: ' + o.valueOf() +'}';
- } else if(o.constructor == Array) {
- var v = [];
- for(var i = 0; i < o.length; i++) v.push(toJSON(o[i]));
- return "[" + v.join(", ") + "]";
- } else {
- var v = [];
- for(attr in o) {
- if(o[attr] == null) v.push("\"" + attr + "\": null");
- else if(typeof o[attr] == "function"); /* skip */
- else v.push(escapeJSONString(attr) + ": " + toJSON(o[attr]));
- }
- return "{" + v.join(", ") + "}";
- }
-};
-
-
-/* JSONRpcClient constructor */
-
-JSONRpcClient =
-function JSONRpcClient_ctor(serverURL, user, pass, objectID)
-{
- this.serverURL = serverURL;
- this.user = user;
- this.pass = pass;
- this.objectID = objectID;
-
- /* Add standard methods */
- if(this.objectID) {
- this._addMethods(["listMethods"]);
- var req = this._makeRequest("listMethods", []);
- } else {
- this._addMethods(["system.listMethods"]);
- var req = this._makeRequest("system.listMethods", []);
- }
- var m = this._sendRequest(req);
- this._addMethods(m);
-};
-
-
-/* JSONRpcCLient.Exception */
-
-JSONRpcClient.Exception =
-function JSONRpcClient_Exception_ctor(code, message, javaStack)
-{
- this.code = code;
- var name;
- if(javaStack) {
- this.javaStack = javaStack;
- var m = javaStack.match(/^([^:]*)/);
- if(m) name = m[0];
- }
- if(name) this.name = name;
- else this.name = "JSONRpcClientException";
- this.message = message;
-};
-
-JSONRpcClient.Exception.CODE_REMOTE_EXCEPTION = 490;
-JSONRpcClient.Exception.CODE_ERR_CLIENT = 550;
-JSONRpcClient.Exception.CODE_ERR_PARSE = 590;
-JSONRpcClient.Exception.CODE_ERR_NOMETHOD = 591;
-JSONRpcClient.Exception.CODE_ERR_UNMARSHALL = 592;
-JSONRpcClient.Exception.CODE_ERR_MARSHALL = 593;
-
-JSONRpcClient.Exception.prototype = new Error();
-
-JSONRpcClient.Exception.prototype.toString =
-function JSONRpcClient_Exception_toString(code, msg)
-{
- return this.name + ": " + this.message;
-};
-
-
-/* Default top level exception handler */
-
-JSONRpcClient.default_ex_handler =
-function JSONRpcClient_default_ex_handler(e) { alert(e); };
-
-
-/* Client settable variables */
-
-JSONRpcClient.toplevel_ex_handler = JSONRpcClient.default_ex_handler;
-JSONRpcClient.profile_async = false;
-JSONRpcClient.max_req_active = 1;
-JSONRpcClient.requestId = 1;
-
-
-/* JSONRpcClient implementation */
-
-JSONRpcClient.prototype._createMethod =
-function JSONRpcClient_createMethod(methodName)
-{
- var fn=function()
- {
- var args = [];
- var callback = null;
- for(var i=0;i<arguments.length;i++) args.push(arguments[i]);
-
-/* TUSCANY change callback to be last arg instead of first to match binding.ajax
- if(typeof args[0] == "function") callback = args.shift();
-*/
- if(typeof args[arguments.length-1] == "function") callback = args.pop();
-
- var req = fn.client._makeRequest.call(fn.client, fn.methodName,
- args, callback);
- if(callback == null) {
- return fn.client._sendRequest.call(fn.client, req);
- } else {
- JSONRpcClient.async_requests.push(req);
- JSONRpcClient.kick_async();
- return req.requestId;
- }
- };
- fn.client = this;
- fn.methodName = methodName;
- return fn;
-};
-
-JSONRpcClient.prototype._addMethods =
-function JSONRpcClient_addMethods(methodNames)
-{
- for(var i=0; i<methodNames.length; i++) {
- var obj = this;
- var names = methodNames[i].split(".");
- for(var n=0; n<names.length-1; n++) {
- var name = names[n];
- if(obj[name]) {
- obj = obj[name];
- } else {
- obj[name] = new Object();
- obj = obj[name];
- }
- }
- var name = names[names.length-1];
- if(!obj[name]) {
- var method = this._createMethod(methodNames[i]);
- obj[name] = method;
- }
- }
-};
-
-JSONRpcClient._getCharsetFromHeaders =
-function JSONRpcClient_getCharsetFromHeaders(http)
-{
- try {
- var contentType = http.getResponseHeader("Content-type");
- var parts = contentType.split(/\s*;\s*/);
- for(var i =0; i < parts.length; i++) {
- if(parts[i].substring(0, 8) == "charset=")
- return parts[i].substring(8, parts[i].length);
- }
- } catch (e) {}
- return "UTF-8"; /* default */
-};
-
-/* Async queue globals */
-JSONRpcClient.async_requests = [];
-JSONRpcClient.async_inflight = {};
-JSONRpcClient.async_responses = [];
-JSONRpcClient.async_timeout = null;
-JSONRpcClient.num_req_active = 0;
-
-JSONRpcClient._async_handler =
-function JSONRpcClient_async_handler()
-{
- JSONRpcClient.async_timeout = null;
-
- while(JSONRpcClient.async_responses.length > 0) {
- var res = JSONRpcClient.async_responses.shift();
- if(res.canceled) continue;
- if(res.profile) res.profile.dispatch = new Date();
- try {
- res.cb(res.result, res.ex, res.profile);
- } catch(e) {
- JSONRpcClient.toplevel_ex_handler(e);
- }
- }
-
- while(JSONRpcClient.async_requests.length > 0 &&
- JSONRpcClient.num_req_active < JSONRpcClient.max_req_active) {
- var req = JSONRpcClient.async_requests.shift();
- if(req.canceled) continue;
- req.client._sendRequest.call(req.client, req);
- }
-};
-
-JSONRpcClient.kick_async =
-function JSONRpcClient_kick_async()
-{
- if(JSONRpcClient.async_timeout == null)
- JSONRpcClient.async_timeout =
- setTimeout(JSONRpcClient._async_handler, 0);
-};
-
-JSONRpcClient.cancelRequest =
-function JSONRpcClient_cancelRequest(requestId)
-{
- /* If it is in flight then mark it as canceled in the inflight map
- and the XMLHttpRequest callback will discard the reply. */
- if(JSONRpcClient.async_inflight[requestId]) {
- JSONRpcClient.async_inflight[requestId].canceled = true;
- return true;
- }
-
- /* If its not in flight yet then we can just mark it as canceled in
- the the request queue and it will get discarded before being sent. */
- for(var i in JSONRpcClient.async_requests) {
- if(JSONRpcClient.async_requests[i].requestId == requestId) {
- JSONRpcClient.async_requests[i].canceled = true;
- return true;
- }
- }
-
- /* It may have returned from the network and be waiting for its callback
- to be dispatched, so mark it as canceled in the response queue
- and the response will get discarded before calling the callback. */
- for(var i in JSONRpcClient.async_responses) {
- if(JSONRpcClient.async_responses[i].requestId == requestId) {
- JSONRpcClient.async_responses[i].canceled = true;
- return true;
- }
- }
-
- return false;
-};
-
-JSONRpcClient.prototype._makeRequest =
-function JSONRpcClient_makeRequest(methodName, args, cb)
-{
- var req = {};
- req.client = this;
- req.requestId = JSONRpcClient.requestId++;
-
- var obj = {};
- obj.id = req.requestId;
- if (this.objectID)
- obj.method = ".obj#" + this.objectID + "." + methodName;
- else
- obj.method = methodName;
- obj.params = args;
-
- if (cb) req.cb = cb;
- if (JSONRpcClient.profile_async)
- req.profile = { "submit": new Date() };
- req.data = toJSON(obj);
-
- return req;
-};
-
-JSONRpcClient.prototype._sendRequest =
-function JSONRpcClient_sendRequest(req)
-{
- if(req.profile) req.profile.start = new Date();
-
- /* Get free http object from the pool */
- var http = JSONRpcClient.poolGetHTTPRequest();
- JSONRpcClient.num_req_active++;
-
- /* Send the request */
- if (typeof(this.user) == "undefined") {
- http.open("POST", this.serverURL, (req.cb != null));
- } else {
- http.open("POST", this.serverURL, (req.cb != null), this.user, this.pass);
- }
-
- /* setRequestHeader is missing in Opera 8 Beta */
- try { http.setRequestHeader("Content-type", "text/plain"); } catch(e) {}
-
- /* Construct call back if we have one */
- if(req.cb) {
- var self = this;
- http.onreadystatechange = function() {
- if(http.readyState == 4) {
- http.onreadystatechange = function () {};
- var res = { "cb": req.cb, "result": null, "ex": null};
- if (req.profile) {
- res.profile = req.profile;
- res.profile.end = new Date();
- }
- try { res.result = self._handleResponse(http); }
- catch(e) { res.ex = e; }
- if(!JSONRpcClient.async_inflight[req.requestId].canceled)
- JSONRpcClient.async_responses.push(res);
- delete JSONRpcClient.async_inflight[req.requestId];
- JSONRpcClient.kick_async();
- }
- };
- } else {
- http.onreadystatechange = function() {};
- }
-
- JSONRpcClient.async_inflight[req.requestId] = req;
-
- try {
- http.send(req.data);
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- if(!req.cb) return this._handleResponse(http);
-};
-
-JSONRpcClient.prototype._handleResponse =
-function JSONRpcClient_handleResponse(http)
-{
- /* Get the charset */
- if(!this.charset) {
- this.charset = JSONRpcClient._getCharsetFromHeaders(http);
- }
-
- /* Get request results */
- var status, statusText, data;
- try {
- status = http.status;
- statusText = http.statusText;
- data = http.responseText;
- } catch(e) {
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
- JSONRpcClient.kick_async();
- throw new JSONRpcClient.Exception
- (JSONRpcClient.Exception.CODE_ERR_CLIENT, "Connection failed");
- }
-
- /* Return http object to the pool; */
- JSONRpcClient.poolReturnHTTPRequest(http);
- JSONRpcClient.num_req_active--;
-
- /* Unmarshall the response */
- if(status != 200) {
- throw new JSONRpcClient.Exception(status, statusText);
- }
- var obj;
- try {
- eval("obj = " + data);
- } catch(e) {
- throw new JSONRpcClient.Exception(550, "error parsing result");
- }
- if(obj.error)
- throw new JSONRpcClient.Exception(obj.error.code, obj.error.msg,
- obj.error.trace);
- var res = obj.result;
-
- /* Handle CallableProxy */
- if(res && res.objectID && res.JSONRPCType == "CallableReference")
- return new JSONRpcClient(this.serverURL, this.user,
- this.pass, res.objectID);
-
- return res;
-};
-
-
-/* XMLHttpRequest wrapper code */
-
-/* XMLHttpRequest pool globals */
-JSONRpcClient.http_spare = [];
-JSONRpcClient.http_max_spare = 8;
-
-JSONRpcClient.poolGetHTTPRequest =
-function JSONRpcClient_pool_getHTTPRequest()
-{
- if(JSONRpcClient.http_spare.length > 0) {
- return JSONRpcClient.http_spare.pop();
- }
- return JSONRpcClient.getHTTPRequest();
-};
-
-JSONRpcClient.poolReturnHTTPRequest =
-function JSONRpcClient_poolReturnHTTPRequest(http)
-{
- if(JSONRpcClient.http_spare.length >= JSONRpcClient.http_max_spare)
- delete http;
- else
- JSONRpcClient.http_spare.push(http);
-};
-
-JSONRpcClient.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
-JSONRpcClient.getHTTPRequest =
-function JSONRpcClient_getHTTPRequest()
-{
- /* Mozilla XMLHttpRequest */
- try {
- JSONRpcClient.httpObjectName = "XMLHttpRequest";
- return new XMLHttpRequest();
- } catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < JSONRpcClient.msxmlNames.length; i++) {
- try {
- JSONRpcClient.httpObjectName = JSONRpcClient.msxmlNames[i];
- return new ActiveXObject(JSONRpcClient.msxmlNames[i]);
- } catch (e) {}
- }
-
- /* None found */
- JSONRpcClient.httpObjectName = null;
- throw new JSONRpcClient.Exception(0, "Can't create XMLHttpRequest object");
-};
-
-
-/*
- * 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.
- */
-
-function AtomClient(uri) {
-
- this.msxmlNames = [ "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP" ];
-
- this.uri=uri;
-
- this.get = function(id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("get - Error getting data from the server");
- }
- }
- }
- xhr.open("GET", uri + '/' + id, true);
- xhr.send(null);
- }
-
- this.post = function (entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 201) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("post - Error getting data from the server");
- }
- }
- }
- xhr.open("POST", uri, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.put = function (id, entry, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var strDocument = xhr.responseText;
- var xmlDocument = xhr.responseXML;
- if(!xmlDocument || xmlDocument.childNodes.length==0){
- xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
- }
- if (responseFunction != null) responseFunction(xmlDocument);
- } else {
- alert("put - Error getting data from the server");
- }
- }
- }
- xhr.open("PUT", uri + '/' + id, true);
- xhr.setRequestHeader("Content-Type", "application/atom+xml");
- xhr.send(entry);
- }
-
- this.del = function (id, responseFunction) {
- var xhr = this.createXMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- if (responseFunction != null) responseFunction();
- } else {
- alert("delete - Error getting data from the server");
- }
- }
- }
- xhr.open("DELETE", uri + '/' + id, true);
- xhr.send(null);
- }
- this.createXMLHttpRequest = function () {
- /* Mozilla XMLHttpRequest */
- try {return new XMLHttpRequest();} catch(e) {}
-
- /* Microsoft MSXML ActiveX */
- for (var i=0;i < this.msxmlNames.length; i++) {
- try {return new ActiveXObject(this.msxmlNames[i]);} catch (e) {}
- }
- alert("XML http request not supported");
- return null;
- }
- if (typeof DOMParser == "undefined") {
- DOMParser = function () {}
-
- DOMParser.prototype.parseFromString = function (str, contentType) {
- if (typeof ActiveXObject != "undefined") {
- var d = new ActiveXObject("MSXML.DomDocument");
- d.loadXML(str);
- return d;
- } else if (typeof XMLHttpRequest != "undefined") {
- var req = new XMLHttpRequest;
- req.open("GET", "data:" + (contentType || "application/xml") +
- ";charset=utf-8," + encodeURIComponent(str), false);
- if (req.overrideMimeType) {
- req.overrideMimeType(contentType);
- }
- req.send(null);
- return req.responseXML;
- }
- }
- }
-}
-
-
-
-/* Tuscany Reference/Property injection code */
-
-if (!tuscany) {
-var tuscany = {};
-}
-if (!tuscany.sca) {
-tuscany.sca = {};
-}
-
-tuscany.sca.propertyMap = new String();
-tuscany.sca.Property = function (name) {
- return tuscany.sca.propertyMap[name];
-}
-
-tuscany.sca.referenceMap = new Object();
-tuscany.sca.referenceMap.catalog = new JSONRpcClient("/catalog").Service;
-tuscany.sca.referenceMap.shoppingCart = new AtomClient("/shoppingCart");
-tuscany.sca.referenceMap.shoppingTotal = new JSONRpcClient("/total").Service;
-tuscany.sca.Reference = function (name) {
- return tuscany.sca.referenceMap[name];
-}
-
-/** End of Apache Tuscany SCA Widget */
-
diff --git a/sca-cpp/trunk/test/store-sql/server-test b/sca-cpp/trunk/test/store-sql/server-test
deleted file mode 100755
index d2013f6892..0000000000
--- a/sca-cpp/trunk/test/store-sql/server-test
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-echo "Testing..."
-here=`readlink -f $0`; here=`dirname $here`
-curl_prefix=`cat $here/../../modules/http/curl.prefix`
-
-# Setup
-./start
-sleep 2
-
-# Test HTTP GET
-$curl_prefix/bin/curl http://localhost:8090/store.html 2>/dev/null >tmp/store.html
-diff tmp/store.html htdocs/store.html
-rc=$?
-
-# Cleanup
-./stop
-sleep 2
-
-if [ "$rc" = "0" ]; then
- echo "OK"
-fi
-return $rc
diff --git a/sca-cpp/trunk/test/store-sql/shopping-cart.scm b/sca-cpp/trunk/test/store-sql/shopping-cart.scm
deleted file mode 100644
index 484044d420..0000000000
--- a/sca-cpp/trunk/test/store-sql/shopping-cart.scm
+++ /dev/null
@@ -1,84 +0,0 @@
-; 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.
-
-; Shopping cart implementation
-
-(define cartId "1234")
-
-; Get the shopping cart from the cache
-; Return an empty cart if not found
-(define (getcart id cache)
- (define cart (cache "get" (list id)))
- (if (nul cart)
- (list)
- cart)
-)
-
-; Post a new item to the cart, create a new cart if necessary
-(define (post collection item cache)
- (define id (uuid))
- (define newItem (list (car item) id (caddr item)))
- (define cart (cons newItem (getcart cartId cache)))
- (cache "put" (list cartId) cart)
- (list id)
-)
-
-; Find an item in the cart
-(define (find id cart)
- (if (nul cart)
- (cons "Item" (list "0" (list)))
- (if (= id (cadr (car cart)))
- (car cart)
- (find id (cdr cart))))
-)
-
-; Get items from the cart
-(define (get id cache)
- (if (nul id)
- (cons "Your Cart" (cons cartId (getcart cartId cache)))
- (find (car id) (getcart cartId cache))
- )
-)
-
-; Delete items from the cart
-(define (delete id cache)
- (if (nul id)
- (cache "delete" (list cartId))
- true
- )
-)
-
-; Return the price of an item
-(define (price item)
- (cadr (assoc 'price (caddr item)))
-)
-
-; Sum the prices of a list of items
-(define (sum items)
- (if (nul items)
- 0
- (+ (price (car items)) (sum (cdr items))))
-)
-
-; Return the total price of the items in the cart
-(define (gettotal cache)
- (define cart (getcart cartId cache))
- (sum cart)
-)
-
-; TODO remove these JSON-RPC specific functions
-(define (listMethods cache) (list "Service.gettotal"))
diff --git a/sca-cpp/trunk/test/store-sql/ssl-start b/sca-cpp/trunk/test/store-sql/ssl-start
deleted file mode 100755
index 8e27d31a2e..0000000000
--- a/sca-cpp/trunk/test/store-sql/ssl-start
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-ca-conf tmp localhost
-../../modules/http/httpd-cert-conf tmp localhost
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/http/httpd-ssl-conf tmp localhost 8453 htdocs
-../../modules/server/server-conf tmp
-../../modules/server/scheme-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/sqldb/pgsql-start tmp
-../../components/sqldb/pgsql "create table store(key text, value text);" 1>/dev/null 2>&1
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-sql/start b/sca-cpp/trunk/test/store-sql/start
deleted file mode 100755
index 60f5a2d702..0000000000
--- a/sca-cpp/trunk/test/store-sql/start
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-conf tmp localhost 8090 htdocs
-../../modules/server/server-conf tmp
-../../modules/server/scheme-conf tmp
-cat >>tmp/conf/httpd.conf <<EOF
-# Configure SCA Composite
-SCAContribution `pwd`/
-SCAComposite store.composite
-
-EOF
-
-../../components/sqldb/pgsql-start tmp
-../../components/sqldb/pgsql "create table store(key text, value text);" 1>/dev/null 2>&1
-../../modules/http/httpd-start tmp
diff --git a/sca-cpp/trunk/test/store-sql/stop b/sca-cpp/trunk/test/store-sql/stop
deleted file mode 100755
index 603165ef46..0000000000
--- a/sca-cpp/trunk/test/store-sql/stop
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-../../modules/http/httpd-stop tmp
-../../components/sqldb/pgsql-stop tmp
diff --git a/sca-cpp/trunk/test/store-sql/store.composite b/sca-cpp/trunk/test/store-sql/store.composite
deleted file mode 100644
index 58c2741a5e..0000000000
--- a/sca-cpp/trunk/test/store-sql/store.composite
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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://store"
- name="store">
-
- <component name="Store">
- <t:implementation.scheme script="store.scm"/>
- <service name="Widget">
- <t:binding.http uri="store"/>
- </service>
- <reference name="catalog" target="Catalog"/>
- <reference name="shoppingCart" target="ShoppingCart/Cart"/>
- <reference name="shoppingTotal" target="ShoppingCart/Total"/>
- </component>
-
- <component name="Catalog">
- <t:implementation.scheme script="fruits-catalog.scm"/>
- <property name="currencyCode">USD</property>
- <service name="Catalog">
- <t:binding.jsonrpc uri="catalog"/>
- </service>
- <reference name="currencyConverter" target="CurrencyConverter"/>
- </component>
-
- <component name="ShoppingCart">
- <t:implementation.scheme script="shopping-cart.scm"/>
- <service name="ShoppingCart">
- <t:binding.atom uri="shoppingCart"/>
- </service>
- <service name="Total">
- <t:binding.jsonrpc uri="total"/>
- </service>
- <reference name="cache" target="Sqldb"/>
- </component>
-
- <component name="CurrencyConverter">
- <t:implementation.scheme script="currency-converter.scm"/>
- <service name="CurrencyConverter">
- <t:binding.jsonrpc uri="currencyConverter"/>
- </service>
- </component>
-
- <component name="Sqldb">
- <implementation.cpp path="../../components/sqldb/.libs" library="libsqldb"/>
- <property name="conninfo">dbname=db</property>
- <property name="table">store</property>
- <service name="Sqldb">
- <t:binding.atom uri="sqldb"/>
- </service>
- </component>
-
-</composite>
diff --git a/sca-cpp/trunk/test/store-sql/store.scm b/sca-cpp/trunk/test/store-sql/store.scm
deleted file mode 100644
index d851dc7ed6..0000000000
--- a/sca-cpp/trunk/test/store-sql/store.scm
+++ /dev/null
@@ -1,50 +0,0 @@
-; 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.
-
-; Store implementation
-
-(define (post item catalog shoppingCart shoppingTotal)
- (shoppingCart "post" item)
-)
-
-(define (getall catalog shoppingCart shoppingTotal)
- (shoppingCart "getall")
-)
-
-(define (get id catalog shoppingCart shoppingTotal)
- (shoppingCart "get" id)
-)
-
-(define (getcatalog catalog shoppingCart shoppingTotal)
- (catalog "get")
-)
-
-(define (gettotal catalog shoppingCart shoppingTotal)
- (shoppingCart "gettotal")
-)
-
-(define (deleteall catalog shoppingCart shoppingTotal)
- (shoppingCart "deleteall")
-)
-
-(define (delete id catalog shoppingCart shoppingTotal)
- (shoppingCart "delete" id)
-)
-
-; TODO remove these JSON-RPC specific functions
-(define (listMethods catalog shoppingCart shoppingTotal) (list "Service.getcatalog" "Service.gettotal"))
-