summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/trunk/modules
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/BeanA.java60
-rw-r--r--sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldClient.java57
-rw-r--r--sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldImpl.java71
-rw-r--r--sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldService.java41
-rw-r--r--sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/BindingTestCase.java226
-rw-r--r--sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/helloworld.composite39
6 files changed, 494 insertions, 0 deletions
diff --git a/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/BeanA.java b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/BeanA.java
new file mode 100644
index 0000000000..c8fd365da5
--- /dev/null
+++ b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/BeanA.java
@@ -0,0 +1,60 @@
+/*
+ * 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 helloworld;
+
+public class BeanA {
+
+ protected Boolean b;
+ protected String s;
+ protected int x;
+ protected Integer y;
+
+ public Boolean getB() {
+ return b;
+ }
+
+ public void setB(Boolean b) {
+ this.b = b;
+ }
+
+ public String getS() {
+ return s;
+ }
+
+ public void setS(String s) {
+ this.s = s;
+ }
+
+ public int getX() {
+ return x;
+ }
+
+ public void setX(int x) {
+ this.x = x;
+ }
+
+ public Integer getY() {
+ return y;
+ }
+
+ public void setY(Integer y) {
+ this.y = y;
+ }
+}
diff --git a/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldClient.java b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldClient.java
new file mode 100644
index 0000000000..b1f81cb499
--- /dev/null
+++ b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldClient.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 helloworld;
+
+import org.osoa.sca.annotations.Reference;
+
+
+public class HelloWorldClient implements HelloWorldService {
+
+ @Reference
+ public HelloWorldService ref;
+
+ public String sayHello(String name) {
+ return ref.sayHello(name);
+ }
+
+ public String sayHello2(String firstName, String lastName) {
+ return ref.sayHello2(firstName, lastName);
+ }
+
+ public BeanA sayHello3(BeanA bean) {
+ return ref.sayHello3(bean);
+ }
+
+ public String[] sayHello4(String[] name) {
+ return ref.sayHello4(name);
+ }
+
+ public BeanA[] sayHello5(BeanA[] beans){
+ return ref.sayHello5(beans);
+ }
+
+ public String[] sayHello6(BeanA[] beans, String[] names, String anotherName){
+ return ref.sayHello6(beans, names, anotherName);
+ }
+
+ public void sayHello7() {
+ ref.sayHello7();
+ }
+}
diff --git a/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldImpl.java b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldImpl.java
new file mode 100644
index 0000000000..e3159a0274
--- /dev/null
+++ b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldImpl.java
@@ -0,0 +1,71 @@
+/*
+ * 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 helloworld;
+
+
+public class HelloWorldImpl implements HelloWorldService {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+ public String sayHello2(String firstName, String lastName) {
+ return "Hello " + firstName + " " + lastName;
+ }
+
+ public BeanA sayHello3(BeanA bean) {
+ bean.setS("XYZ");
+ return bean;
+ }
+
+ public String[] sayHello4(String[] name) {
+ String returnString = "Hello";
+
+ for (int i=0 ; i < name.length; i++){
+ returnString += " " + name[i];
+ }
+
+ String [] response = {returnString};
+ return response;
+ }
+
+ public BeanA[] sayHello5(BeanA[] beans){
+ beans[0].setS("Hello " + beans[0].getS());
+ return beans;
+ }
+
+ public String[] sayHello6(BeanA[] beans, String[] names, String anotherName){
+ String returnString = "Hello";
+
+ returnString += " " + beans[0].getS();
+
+ for (int i=0 ; i < names.length; i++){
+ returnString += " " + names[i];
+ }
+
+ returnString += " " + anotherName;
+
+ String [] response = {returnString};
+ return response;
+ }
+
+ public void sayHello7() {
+ System.out.println("Hello void Fred");
+ }
+}
diff --git a/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldService.java b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldService.java
new file mode 100644
index 0000000000..2b0208d143
--- /dev/null
+++ b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/helloworld/HelloWorldService.java
@@ -0,0 +1,41 @@
+/*
+ * 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 helloworld;
+
+import org.osoa.sca.annotations.Remotable;
+
+
+@Remotable
+public interface HelloWorldService {
+
+ String sayHello(String name);
+
+ String sayHello2(String firstName, String lastName);
+
+ BeanA sayHello3(BeanA bean);
+
+ String[] sayHello4(String[] name);
+
+ BeanA[] sayHello5(BeanA[] beans);
+
+ String[] sayHello6(BeanA[] beans, String[] names, String anotherName);
+
+ void sayHello7();
+
+}
diff --git a/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/BindingTestCase.java b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/BindingTestCase.java
new file mode 100644
index 0000000000..64ff8957b9
--- /dev/null
+++ b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/BindingTestCase.java
@@ -0,0 +1,226 @@
+/*
+ * 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 org.apache.tuscany.sca.binding.jsonrpc;
+
+import helloworld.BeanA;
+import helloworld.HelloWorldService;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.apache.tuscany.sca.node.SCANode;
+import org.json.JSONObject;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.meterware.httpunit.PostMethodWebRequest;
+import com.meterware.httpunit.WebConversation;
+import com.meterware.httpunit.WebRequest;
+import com.meterware.httpunit.WebResponse;
+
+public class BindingTestCase {
+
+ private static SCANode node;
+
+ /* SMD =
+ *
+ * {"SMDVersion":".1","objectName":"HelloWorldService","serviceType":"JSON-RPC","serviceURL":"http://ibm-7a66aa9141b:8085/HelloWorldComponent/HelloWorldService","methods":[{"name":"sayHello","parameters":[{"name":"param0","type":"STRING"}]},{"name":"sayHello2","parameters":[{"name":"param0","type":"STRING"},{"name":"param1","type":"STRING"}]},{"name":"sayHello3","parameters":[{"name":"param0","type":"STRING"}]},{"name":"sayHello4","parameters":[{"name":"param0","type":"STRING"}]},{"name":"sayHello5","parameters":[{"name":"param0","type":"STRING"}]},{"name":"sayHello6","parameters":[{"name":"param0","type":"STRING"},{"name":"param1","type":"STRING"},{"name":"param2","type":"STRING"}]},{"name":"sayHello7","parameters":[]}]}
+ */
+
+ public JSONObject callService(String url, JSONObject jsonRequest) throws Exception {
+ System.out.println("Request = " + jsonRequest.toString());
+ WebConversation wc = new WebConversation();
+ WebRequest request = new PostMethodWebRequest( url,
+ new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")),"application/json");
+ WebResponse response = wc.getResource(request);
+ System.out.println("Response= " + response.getText());
+ Assert.assertEquals(200, response.getResponseCode());
+ return new JSONObject(response.getText());
+ }
+
+ @Test
+ public void testOneArg() throws MalformedURLException, IOException {
+ try {
+ JSONObject jsonRequest = new JSONObject("{\"params\":[\"\\\"petra\\\"\"],\"method\":\"sayHello\",\"id\":1}");
+ JSONObject jsonResp = callService ("http://localhost:8085/HelloWorldComponent/HelloWorldService",
+ jsonRequest);
+ Assert.assertNotNull(jsonResp);
+ Assert.assertEquals("{\"id\":1,\"result\":\"\\\"Hello petra\\\"\"}", jsonResp.toString());
+
+ } catch(Exception ex){
+ ex.printStackTrace();
+ Assert.fail();
+ }
+ }
+
+ @Test
+ public void testTwoArgs() throws MalformedURLException, IOException {
+ try {
+ JSONObject jsonRequest = new JSONObject("{\"params\":[\"\\\"petra\\\"\", \"\\\"arnold\\\"\"],\"method\":\"sayHello2\",\"id\":1}");
+ JSONObject jsonResp = callService ("http://localhost:8085/HelloWorldComponent/HelloWorldService",
+ jsonRequest);
+ Assert.assertNotNull(jsonResp);
+ Assert.assertEquals("{\"id\":1,\"result\":\"\\\"Hello petra arnold\\\"\"}", jsonResp.toString());
+
+ } catch(Exception ex){
+ ex.printStackTrace();
+ Assert.fail();
+ }
+
+ }
+
+ @Test
+ public void testComplexParams() throws MalformedURLException, IOException {
+ try {
+ JSONObject jsonRequest = new JSONObject("{\"params\":[{\"b\":true, \"s\":\"fred\", \"x\":2, \"y\":5}],\"method\":\"sayHello3\",\"id\":1}");
+ JSONObject jsonResp = callService ("http://localhost:8085/HelloWorldComponent/HelloWorldService",
+ jsonRequest);
+ Assert.assertNotNull(jsonResp);
+ Assert.assertEquals("{\"id\":1,\"result\":{\"s\":\"XYZ\",\"b\":true,\"y\":5,\"x\":2}}", jsonResp.toString());
+
+ } catch(Exception ex){
+ ex.printStackTrace();
+ Assert.fail();
+ }
+ }
+
+ @Test
+ public void testStringArray() throws MalformedURLException, IOException {
+
+ try {
+ JSONObject jsonRequest = new JSONObject("{\"params\":[[\"Fred\", \"Bloggs\"]],\"method\":\"sayHello4\",\"id\":1}");
+ JSONObject jsonResp = callService ("http://localhost:8085/HelloWorldComponent/HelloWorldService",
+ jsonRequest);
+ Assert.assertNotNull(jsonResp);
+ Assert.assertEquals("{\"id\":1,\"result\":[\"Hello Fred Bloggs\"]}", jsonResp.toString());
+
+ } catch(Exception ex){
+ ex.printStackTrace();
+ Assert.fail();
+ }
+ }
+
+ @Test
+ @Ignore
+ public void testBeanArray() throws MalformedURLException, IOException {
+/*
+ HelloWorldService client = ((SCAClient)node).getService(HelloWorldService.class, "HelloWorldClient");
+
+ BeanA bean = new BeanA();
+ bean.setB(true);
+ bean.setS("Fred");
+ bean.setX(2);
+ bean.setX(5);
+
+ BeanA[] beans = {bean};
+ BeanA[] response = client.sayHello5(beans);
+
+ Assert.assertEquals("Hello Fred", response[0].getS());
+*/
+
+ try {
+ JSONObject jsonRequest = new JSONObject("{\"params\":[{\"b\":true, \"s\":\"fred\", \"x\":2, \"y\":5}],\"method\":\"sayHello3\",\"id\":1}");
+ JSONObject jsonResp = callService ("http://localhost:8085/HelloWorldComponent/HelloWorldService",
+ jsonRequest);
+ Assert.assertNotNull(jsonResp);
+ Assert.assertEquals("{\"id\":1,\"result\":{\"s\":\"XYZ\",\"b\":true,\"y\":5,\"x\":2}}", jsonResp.toString());
+
+ } catch(Exception ex){
+ ex.printStackTrace();
+ Assert.fail();
+ }
+ }
+
+ /* HTTP Request for testMixedArray
+ GET /HelloWorldComponent/HelloWorldService/sayHello6?arg0=%5B%7B%22b%22%3Atrue%2C%22s%22%3A%22Fred%22%2C%22y%22%3Anull%2C%22x%22%3A5%7D%5D&arg1=%5B%22Fred%22%2C%22Bloggs%22%5D&arg2=%22Bloggs%22 HTTP/1.1
+ Host: localhost:8085
+ Connection: Keep-Alive
+ User-Agent: Apache-HttpClient/4.0 (java 1.5)
+ */
+ /* FYI Converted URL =
+ /HelloWorldComponent/HelloWorldService/sayHello6?arg0=[{"b":true,"s":"Fred","y":null,"x":5}]&arg1=["Fred":"Bloggs"]&arg2="Bloggs" HTTP/1.1
+ */
+ /* HTTP Response for testMixedArray
+ HTTP/1.1 200 OK
+ Content-Length: 35
+ ["Hello Fred Fred Bloggs Bloggs"]
+ */
+ @Test
+ @Ignore
+ public void testMixedArray() throws MalformedURLException, IOException {
+ HelloWorldService client = ((SCAClient)node).getService(HelloWorldService.class, "HelloWorldClient");
+
+ BeanA bean = new BeanA();
+ bean.setB(true);
+ bean.setS("Fred");
+ bean.setX(2);
+ bean.setX(5);
+
+ BeanA[] beans = {bean};
+ String[] names = {"Fred", "Bloggs"};
+
+ String[] response = client.sayHello6(beans, names, "Bloggs");
+
+ Assert.assertEquals("Hello Fred Fred Bloggs Bloggs", response[0]);
+ }
+
+ @Test
+ @Ignore
+ public void testVoid() throws MalformedURLException, IOException {
+ HelloWorldService client = ((SCAClient)node).getService(HelloWorldService.class, "HelloWorldClient");
+
+ client.sayHello7();
+ }
+
+ @Test
+ @Ignore
+ public void waitForInput(){
+ System.out.println("Press a key");
+ try {
+ System.in.read();
+ } catch (Exception ex){
+ // do nothing
+ }
+ }
+
+ @BeforeClass
+ public static void init() throws Exception {
+ SCANodeFactory factory = SCANodeFactory.newInstance();
+ node = factory.createSCANodeFromClassLoader("helloworld.composite", BindingTestCase.class.getClassLoader());
+ node.start();
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ if (node != null) {
+ node.stop();
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/helloworld.composite b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/helloworld.composite
new file mode 100644
index 0000000000..46192f1214
--- /dev/null
+++ b/sca-java-1.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/helloworld.composite
@@ -0,0 +1,39 @@
+<?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://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://itest"
+ name="HelloWorldComposite">
+
+ <component name="HelloWorldComponent">
+ <implementation.java class="helloworld.HelloWorldImpl"/>
+ <service name="HelloWorldService" >
+ <tuscany:binding.jsonrpc uri="http://localhost:8085/HelloWorldComponent/HelloWorldService"/>
+ </service>
+ </component>
+
+ <component name="HelloWorldClient">
+ <implementation.java class="helloworld.HelloWorldClient"/>
+ <reference name="ref" >
+ <tuscany:binding.jsonrpc uri="http://localhost:8085/HelloWorldComponent/HelloWorldService"/>
+ </reference>
+ </component>
+
+</composite>