summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/test
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp/trunk/test')
-rw-r--r--sca-cpp/trunk/test/store-cpp/fruits-catalog.cpp5
-rw-r--r--sca-cpp/trunk/test/store-java/Makefile.am10
-rwxr-xr-xsca-cpp/trunk/test/store-java/start2
-rwxr-xr-xsca-cpp/trunk/test/store-java/stop2
-rw-r--r--sca-cpp/trunk/test/store-java/store.composite10
-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.java57
-rw-r--r--sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java130
9 files changed, 278 insertions, 11 deletions
diff --git a/sca-cpp/trunk/test/store-cpp/fruits-catalog.cpp b/sca-cpp/trunk/test/store-cpp/fruits-catalog.cpp
index a7d502a9b9..4c93b2a58e 100644
--- a/sca-cpp/trunk/test/store-cpp/fruits-catalog.cpp
+++ b/sca-cpp/trunk/test/store-cpp/fruits-catalog.cpp
@@ -33,7 +33,7 @@ namespace tuscany {
namespace store {
/**
- * Returns a catalog.
+ * Returns the catalog.
*/
struct convert {
const lambda<value(const list<value>&)> converter;
@@ -61,6 +61,9 @@ const failable<value> get(const lambda<value(const list<value>&)> converter) {
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) {
return value(mklist<value>(string("Service.get")));
}
diff --git a/sca-cpp/trunk/test/store-java/Makefile.am b/sca-cpp/trunk/test/store-java/Makefile.am
index f18bb991c1..a381f0a3fd 100644
--- a/sca-cpp/trunk/test/store-java/Makefile.am
+++ b/sca-cpp/trunk/test/store-java/Makefile.am
@@ -15,6 +15,16 @@
# specific language governing permissions and limitations
# under the License.
+JAVAROOT = ${top_builddir}/test/store-java
+
if WANT_JAVA
+AM_JAVACFLAGS = -classpath ${top_builddir}/modules/java/libmod-tuscany-java-${PACKAGE_VERSION}.jar
+
+noinst_JAVA = store/*.java
+
+CLEANFILES = store/*.class
+
+TESTS = server-test
+
endif
diff --git a/sca-cpp/trunk/test/store-java/start b/sca-cpp/trunk/test/store-java/start
index eb8c174999..43a2b90c2a 100755
--- a/sca-cpp/trunk/test/store-java/start
+++ b/sca-cpp/trunk/test/store-java/start
@@ -28,6 +28,8 @@ SCAComposite store.composite
</Location>
EOF
+export CLASSPATH=`pwd`/../../modules/java/libmod-tuscany-java-1.0.jar:`pwd`
+
apachectl -k start -d `pwd`/tmp
mc="memcached -l 127.0.0.1 -m 4 -p 11211"
diff --git a/sca-cpp/trunk/test/store-java/stop b/sca-cpp/trunk/test/store-java/stop
index 34731dbbe1..3c4f59e76e 100755
--- a/sca-cpp/trunk/test/store-java/stop
+++ b/sca-cpp/trunk/test/store-java/stop
@@ -17,6 +17,8 @@
# specific language governing permissions and limitations
# under the License.
+export CLASSPATH=`pwd`/../../modules/java/libmod-tuscany-java-1.0.jar:`pwd`
+
apachectl -k stop -d `pwd`/tmp
mc="memcached -l 127.0.0.1 -m 4 -p 11211"
kill `ps -f | grep -v grep | grep "$mc" | awk '{ print $2 }'`
diff --git a/sca-cpp/trunk/test/store-java/store.composite b/sca-cpp/trunk/test/store-java/store.composite
index 15e778ca36..5024d79ee6 100644
--- a/sca-cpp/trunk/test/store-java/store.composite
+++ b/sca-cpp/trunk/test/store-java/store.composite
@@ -22,16 +22,6 @@
targetNamespace="http://store"
name="store">
- <component name="Store">
- <implementation.java class="store.StoreImpl"/>
- <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">
<implementation.java class="store.FruitsCatalogImpl"/>
<property name="currencyCode">USD</property>
diff --git a/sca-cpp/trunk/test/store-java/store/CurrencyConverter.java b/sca-cpp/trunk/test/store-java/store/CurrencyConverter.java
new file mode 100644
index 0000000000..1ed15a670a
--- /dev/null
+++ b/sca-cpp/trunk/test/store-java/store/CurrencyConverter.java
@@ -0,0 +1,28 @@
+/*
+ * 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
new file mode 100644
index 0000000000..a6d0fd00b3
--- /dev/null
+++ b/sca-cpp/trunk/test/store-java/store/CurrencyConverterImpl.java
@@ -0,0 +1,45 @@
+/*
+ * 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
new file mode 100644
index 0000000000..3caa785416
--- /dev/null
+++ b/sca-cpp/trunk/test/store-java/store/FruitsCatalogImpl.java
@@ -0,0 +1,57 @@
+/*
+ * 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.list;
+
+/**
+ * Catalog component implementation.
+ */
+public class FruitsCatalogImpl {
+
+ /**
+ * Returns the catalog.
+ */
+ public Iterable<?> get(final CurrencyConverter converter) {
+ class Converter {
+ Double convert(Double price) {
+ return converter.convert("USD", "USD", price);
+ }
+ };
+ Converter c = new Converter();
+
+ String code = "USD";
+ 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) {
+ 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
new file mode 100644
index 0000000000..30ee59932a
--- /dev/null
+++ b/sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java
@@ -0,0 +1,130 @@
+/*
+ * 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 org.apache.tuscany.Service;
+import java.lang.System;
+import java.util.UUID;
+import static org.apache.tuscany.IterableUtil.*;
+
+/**
+ * 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(String id, Service cache) {
+ Iterable<?> cart = cache.get(id);
+ if (cart == null)
+ return list();
+ return cart;
+ }
+
+ /**
+ * Returns a UUID.
+ */
+ String uuid() {
+ return UUID.randomUUID().toString();
+ }
+
+ /**
+ * Post a new item to the cart. Create a new cart if necessary.
+ */
+ public String post(Iterable<?> item, Service cache) {
+ String id = uuid();
+ Iterable<?> newItem = list(car(item), id, caddr(item));
+ Iterable<?> cart = cons(newItem, getcart(cartId, cache));
+ cache.put(cartId, cart);
+ return id;
+ }
+
+ /**
+ * Return the contents of the cart.
+ */
+ public Iterable<?> getall(Service cache) {
+ return cons("Your Cart", cons(cartId, getcart(cartId, cache)));
+ }
+
+ /**
+ * Find an item in the cart.
+ */
+ public Iterable<?> find(String id, Iterable<?> cart) {
+ if (isNil(cart))
+ return cons("Item", list("0", list()));
+ if (id.equals(cadr(car(cart))))
+ return car(cart);
+ return find(id, cdr(cart));
+ }
+
+ public Iterable<?> get(String id, Service cache) {
+ return find(id, getcart(cartId, cache));
+ }
+
+ /**
+ * Delete the whole cart.
+ */
+ public Boolean deleteall(Service cache) {
+ return cache.delete(cartId);
+ }
+
+ /**
+ * Delete an item from the cart.
+ */
+ public Boolean delete(String id, Service cache) {
+ return true;
+ }
+
+ /**
+ * Return the price of an item.
+ */
+ Double price(Iterable<?> item) {
+ return Double.valueOf((String)cadr(assoc("'price", caddr(item))));
+ }
+
+ /**
+ * Sum the prices of a list of items.
+ */
+ Double sum(Iterable<?> items) {
+ if (isNil(items))
+ return 0.0;
+ return price((Iterable<?>)car(items)) + sum(cdr(items));
+ }
+
+ /**
+ * Return the total price of the items in the cart.
+ */
+ public Double gettotal(Service cache) {
+ Iterable<?> cart = getcart(cartId, cache);
+ return sum(cart);
+ }
+
+ /**
+ * TODO remove this JSON-RPC specific function.
+ */
+ public Iterable<?> listMethods(final CurrencyConverter converter) {
+ return list("Service.gettotal");
+ }
+
+}