summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/branches/2.0/samples/applications/store/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/branches/2.0/samples/applications/store/src/test')
-rw-r--r--sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/client/Shopper.java29
-rw-r--r--sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/client/ShopperImpl.java64
-rw-r--r--sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/store/StoreTestCase.java120
-rw-r--r--sca-java-2.x/branches/2.0/samples/applications/store/src/test/resources/store-client.composite38
4 files changed, 251 insertions, 0 deletions
diff --git a/sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/client/Shopper.java b/sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/client/Shopper.java
new file mode 100644
index 0000000000..4e2fa63493
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/client/Shopper.java
@@ -0,0 +1,29 @@
+/*
+ * 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 client;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Shopper {
+
+ String shop(String itemName, int quantity);
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/client/ShopperImpl.java b/sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/client/ShopperImpl.java
new file mode 100644
index 0000000000..05b1800d4f
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/client/ShopperImpl.java
@@ -0,0 +1,64 @@
+/*
+ * 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 client;
+
+import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.oasisopen.sca.annotation.Reference;
+
+import services.Cart;
+import services.Catalog;
+import services.Item;
+import services.Total;
+
+public class ShopperImpl implements Shopper {
+
+ @Reference
+ public Catalog catalog;
+
+ @Reference
+ public Cart shoppingCart;
+
+ @Reference
+ public Total shoppingTotal;
+
+ public String shop(String itemName, int quantity) {
+
+ Item[] items = catalog.get();
+ for (Item item: items) {
+ if (item.getName().startsWith(itemName)) {
+
+ try {
+ shoppingCart.delete("");
+ } catch (NotFoundException e) {
+ // ignore
+ }
+
+ for (int i = 0; i < quantity; i++) {
+ shoppingCart.post("item" + i, item);
+ }
+
+ return shoppingTotal.getTotal();
+ }
+ }
+
+ return "";
+ }
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/store/StoreTestCase.java b/sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/store/StoreTestCase.java
new file mode 100644
index 0000000000..2aa4f89e2f
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/applications/store/src/test/java/store/StoreTestCase.java
@@ -0,0 +1,120 @@
+/*
+ * 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 java.io.IOException;
+import java.net.MalformedURLException;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.ContributionLocationHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import client.Shopper;
+
+import com.gargoylesoftware.htmlunit.BrowserVersion;
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+
+/**
+ * Test the store-merger.
+ *
+ * @version $Rev$ $Date$
+ */
+public class StoreTestCase {
+ private static Node nodeStore;
+
+ public static void main(String[] args) throws Exception {
+ setUp();
+ testWaitForInput();
+ tearDown();
+ }
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ String storeLocation = ContributionLocationHelper.getContributionLocation("store.composite");
+ String storeClientLocation = ContributionLocationHelper.getContributionLocation("store-client.composite");
+
+ nodeStore = NodeFactory.newInstance().createNode(new Contribution("store", storeLocation), new Contribution("storeClient", storeClientLocation));
+ nodeStore.start();
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ nodeStore.stop();
+ }
+
+ public static void testWaitForInput() {
+ try {
+ System.out.println("press enter to continue)");
+ System.in.read();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testShop() {
+ Shopper shopper = nodeStore.getService(Shopper.class, "StoreClient");
+
+ String total = shopper.shop("Orange", 5);
+ System.out.println("Total: " + total);
+
+ Assert.assertEquals("$17.75", total);
+
+ }
+
+ @Test
+ public void testStoreWidget() throws FailingHttpStatusCodeException, MalformedURLException, IOException {
+ WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);
+ webClient.setRedirectEnabled(true);
+ webClient.setThrowExceptionOnScriptError(false);
+ //webClient.waitForBackgroundJavaScript(100000);
+ //webClient.waitForBackgroundJavaScriptStartingBefore(100000);
+ webClient.setAjaxController(new NicelyResynchronizingAjaxController());
+
+ HtmlPage page = (HtmlPage) webClient.getPage("http://localhost:8080/store/store.html");
+
+ HtmlForm form = (HtmlForm) page.getFormByName("catalogForm");
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ }
+
+ HtmlCheckBoxInput catalogItems = (HtmlCheckBoxInput) form.getInputByName("items");
+
+ System.out.println(">>>" + catalogItems.getAttribute("value"));
+ Assert.assertEquals("Apple - $2.99", catalogItems.getAttribute("value"));
+
+ webClient.closeAllWindows();
+ }
+
+}
diff --git a/sca-java-2.x/branches/2.0/samples/applications/store/src/test/resources/store-client.composite b/sca-java-2.x/branches/2.0/samples/applications/store/src/test/resources/store-client.composite
new file mode 100644
index 0000000000..c9abe8e996
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/applications/store/src/test/resources/store-client.composite
@@ -0,0 +1,38 @@
+<?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:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://store"
+ name="store-client">
+
+ <component name="StoreClient">
+ <implementation.java class="client.ShopperImpl"/>
+ <reference name="catalog">
+ <tuscany:binding.jsonrpc uri="http://localhost:8080/Catalog"/>
+ </reference>
+ <reference name="shoppingCart">
+ <tuscany:binding.atom uri="http://localhost:8080/ShoppingCart/Cart"/>
+ </reference>
+ <reference name="shoppingTotal">
+ <tuscany:binding.jsonrpc uri="http://localhost:8080/ShoppingCart/Total"/>
+ </reference>
+ </component>
+
+</composite>