summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2010-07-09 02:22:14 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2010-07-09 02:22:14 +0000
commitb3243c64346cda94f30f9c7ab6a25b32a666e09c (patch)
tree0a1b805561b6ffe298d9094dcfea112af3dd63be /sca-java-2.x/trunk/modules/binding-rest-runtime/src/test
parent2bc19f8bc6cbf654713278bc50cd9c3cb7201215 (diff)
TUSCANY-3617 - Adding support for configuring wireFormat only for response to allow RPC over GET services to define the wireFormat to use for generating the response payload.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@962390 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/rpc/EchoServiceTestCase.java61
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java52
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/Echo.java12
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/EchoImpl.java17
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java29
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/echo.composite22
6 files changed, 112 insertions, 81 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/rpc/EchoServiceTestCase.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/rpc/EchoServiceTestCase.java
index cb65249fe3..5a7aaecaf1 100644
--- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/rpc/EchoServiceTestCase.java
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/rpc/EchoServiceTestCase.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.binding.rest.rpc;
@@ -28,7 +28,6 @@ import org.apache.tuscany.sca.node.NodeFactory;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
import com.meterware.httpunit.GetMethodWebRequest;
@@ -36,16 +35,17 @@ import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
-@Ignore
public class EchoServiceTestCase {
- private static final String SERVICE_URL = "http://localhost:8085/EchoService";
-
- private static final String GET_RESPONSE = "[{\"price\":\"$1.55\",\"name\":\"Pear\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$2.99\",\"name\":\"Apple\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$3.55\",\"name\":\"Orange\",\"javaClass\":\"services.store.Item\"}]";
- private static final String NEW_ITEM = "{\"price\":\"$4.35\",\"name\":\"Grape\"}\"";
- private static final String GET_NEW_RESPONSE = "[{\"price\":\"$1.55\",\"name\":\"Pear\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$2.99\",\"name\":\"Apple\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$3.55\",\"name\":\"Orange\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$4.35\",\"name\":\"Grape\",\"javaClass\":\"services.store.Item\"}]";
- private static final String UPDATED_ITEM = "{\"price\":\"$1.35\",\"name\":\"Grape\"}\"";
- private static final String GET_UPDATED_RESPONSE = "[{\"price\":\"$1.55\",\"name\":\"Pear\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$2.99\",\"name\":\"Apple\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$3.55\",\"name\":\"Orange\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$1.35\",\"name\":\"Grape\",\"javaClass\":\"services.store.Item\"}]";
-
+ private static final String SERVICE_URL_JSON = "http://localhost:8085/EchoService/json";
+ private static final String SERVICE_URL_XML = "http://localhost:8085/EchoService/xml";
+
+ private static final String XML_RESPONSE = "" +
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
+ "<return xmlns:ns2=\"http://echo.services/\" "+
+ "xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" " +
+ "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "+
+ "xsi:type=\"xs:string\">Hello RPC</return>";
+
private static Node node;
@BeforeClass
@@ -65,38 +65,55 @@ public class EchoServiceTestCase {
node.stop();
}
}
-
+
@Test
public void testPing() throws Exception {
new Socket("127.0.0.1", 8085);
- //System.in.read();
+ // System.in.read();
}
-
+
@Test
- public void testRPCGetOperation() throws Exception {
+ public void testJSONRPCGetOperation() throws Exception {
String queryString = "?method=echo&msg=Hello RPC";
WebConversation wc = new WebConversation();
- WebRequest request = new GetMethodWebRequest(SERVICE_URL + queryString);
+ WebRequest request = new GetMethodWebRequest(SERVICE_URL_JSON + queryString);
request.setHeaderField("Content-Type", "application/json");
WebResponse response = wc.getResource(request);
Assert.assertEquals(200, response.getResponseCode());
Assert.assertEquals("Hello RPC", response.getText());
}
-
+
@Test
public void testRPCGetArrayOperation() throws Exception {
String queryString = "?method=echoArrayString&msgArray=Hello RPC1&msgArray=Hello RPC2";
WebConversation wc = new WebConversation();
- WebRequest request = new GetMethodWebRequest(SERVICE_URL + queryString);
+ WebRequest request = new GetMethodWebRequest(SERVICE_URL_JSON + queryString);
request.setHeaderField("Content-Type", "application/json");
WebResponse response = wc.getResource(request);
Assert.assertEquals(200, response.getResponseCode());
Assert.assertEquals("[\"Hello RPC1\",\"Hello RPC2\"]", response.getText());
}
-
-
+
+
+ @Test
+ public void testXMLRPCGetOperation() throws Exception {
+ String queryString = "?method=echo&msg=Hello RPC";
+
+ WebConversation wc = new WebConversation();
+ WebRequest request = new GetMethodWebRequest(SERVICE_URL_XML + queryString);
+ request.setHeaderField("Content-Type", "application/xml");
+ WebResponse response = wc.getResource(request);
+
+ System.out.println("Expected>>" + XML_RESPONSE);
+ System.out.println("Received>>" + response.getText());
+
+ Assert.assertEquals(200, response.getResponseCode());
+ Assert.assertEquals(XML_RESPONSE, response.getText());
+ }
+
+
}
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java
index de5acc2fe7..2aa59af508 100644
--- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.binding.rest.wireformat.json;
@@ -26,6 +26,8 @@ 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.json.JSONException;
+import org.json.JSONObject;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -44,8 +46,8 @@ public class CatalogServiceTestCase {
private static final String NEW_ITEM = "{\"price\":\"$4.35\",\"name\":\"Grape\"}\"";
private static final String GET_NEW_RESPONSE = "{\"items\":[{\"price\":\"$1.55\",\"name\":\"Pear\"},{\"price\":\"$2.99\",\"name\":\"Apple\"},{\"price\":\"$3.55\",\"name\":\"Orange\"},{\"price\":\"$4.35\",\"name\":\"Grape\"}]}";
private static final String UPDATED_ITEM = "{\"price\":\"$1.35\",\"name\":\"Grape\"}\"";
- private static final String GET_UPDATED_RESPONSE = "{\"items\":[{\"price\":\"$1.55\",\"name\":\"Pear\"},{\"price\":\"$2.99\",\"name\":\"Apple\"},{\"price\":\"$3.55\",\"name\":\"Orange\"},{\"price\":\"$1.35\",\"name\":\"Grape\"}]}";
-
+ private static final String GET_UPDATED_RESPONSE = "{\"items\":[{\"price\":\"$1.55\",\"name\":\"Pear\"},{\"price\":\"$2.99\",\"name\":\"Apple\"},{\"price\":\"$3.55\",\"name\":\"Orange\"},{\"price\":\"$1.35\",\"name\":\"Grape\"}]}";
+
private static Node node;
@BeforeClass
@@ -65,27 +67,28 @@ public class CatalogServiceTestCase {
node.stop();
}
}
-
+
@Test
public void testPing() throws Exception {
new Socket("127.0.0.1", 8085);
//System.in.read();
}
-
+
@Test
- public void testGetInvocation() throws Exception {
+ public void testGetInvocation() throws Exception {
WebConversation wc = new WebConversation();
WebRequest request = new GetMethodWebRequest(SERVICE_URL);
request.setHeaderField("Content-Type", "application/json");
WebResponse response = wc.getResource(request);
Assert.assertEquals(200, response.getResponseCode());
- Assert.assertEquals(GET_RESPONSE, response.getText());
+ Assert.assertNotNull(response.getText());
+ Assert.assertTrue(validateJsonResponse(GET_RESPONSE,response.getText()));
}
@Test
- public void testPostInvocation() throws Exception {
+ public void testPostInvocation() throws Exception {
//Add new item to catalog
WebConversation wc = new WebConversation();
WebRequest request = new PostMethodWebRequest(SERVICE_URL, new ByteArrayInputStream(NEW_ITEM.getBytes("UTF-8")),"application/json");
@@ -93,22 +96,23 @@ public class CatalogServiceTestCase {
WebResponse response = wc.getResource(request);
Assert.assertEquals(204, response.getResponseCode());
-
+
//read new results and expect to get new item back in the response
request = new GetMethodWebRequest(SERVICE_URL);
request.setHeaderField("Content-Type", "application/json");
response = wc.getResource(request);
-
+
//for debug purposes
//System.out.println(">>>" + GET_UPDATED_RESPONSE);
//System.out.println(">>>" + response.getText());
Assert.assertEquals(200, response.getResponseCode());
- Assert.assertEquals(GET_NEW_RESPONSE, response.getText());
+ Assert.assertNotNull(response.getText());
+ Assert.assertTrue(validateJsonResponse(GET_NEW_RESPONSE,response.getText()));
}
@Test
- public void testPutInvocation() throws Exception {
+ public void testPutInvocation() throws Exception {
//Add new item to catalog
WebConversation wc = new WebConversation();
WebRequest request = new PostMethodWebRequest(SERVICE_URL, new ByteArrayInputStream(UPDATED_ITEM.getBytes("UTF-8")),"application/json");
@@ -116,17 +120,31 @@ public class CatalogServiceTestCase {
WebResponse response = wc.getResource(request);
Assert.assertEquals(204, response.getResponseCode());
-
+
//read new results and expect to get new item back in the response
request = new GetMethodWebRequest(SERVICE_URL);
request.setHeaderField("Content-Type", "application/json");
response = wc.getResource(request);
-
+
//for debug purposes
//System.out.println(">>>" + GET_UPDATED_RESPONSE);
//System.out.println(">>>" + response.getText());
Assert.assertEquals(200, response.getResponseCode());
- Assert.assertEquals(GET_UPDATED_RESPONSE, response.getText());
+ Assert.assertNotNull(response.getText());
+ Assert.assertTrue(validateJsonResponse(GET_UPDATED_RESPONSE,response.getText()));
+ }
+
+
+ private boolean validateJsonResponse(String expected, String actual) throws JSONException {
+ JSONObject jsonExpected = new JSONObject(expected);
+ JSONObject jsonActual = new JSONObject(actual);
+
+ if(jsonExpected.getJSONArray("items").length() != jsonActual.getJSONArray("items").length()) {
+ return false;
+ }
+
+ return true;
+
}
}
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/Echo.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/Echo.java
index ca5d73246a..8664162ffb 100644
--- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/Echo.java
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/Echo.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package services.echo;
@@ -24,7 +24,7 @@ import org.oasisopen.sca.annotation.Remotable;
/**
* Interface of our sample JSONRPC service.
- *
+ *
* @version $Rev$ $Date$
*/
@Remotable
@@ -32,9 +32,7 @@ public interface Echo {
String echo(@QueryParam("msg") String msg);
- int echoInt(int param);
-
- boolean echoBoolean(boolean param);
+ int echoInt(@QueryParam("param") int param);
String [] echoArrayString(@QueryParam("msgArray") String[] stringArray);
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/EchoImpl.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/EchoImpl.java
index 2596637ce8..6bc22bd41a 100644
--- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/EchoImpl.java
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/EchoImpl.java
@@ -6,27 +6,27 @@
* 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.
+ * under the License.
*/
package services.echo;
/**
* A simple client component that uses a reference with an JSONRPC binding.
- *
+ *
* @version $Rev$ $Date$
*/
-public class EchoImpl implements Echo {
+public class EchoImpl implements Echo {
- public String echo(String msg) {
+ public String echo(String msg) {
return msg;
}
@@ -35,11 +35,6 @@ public class EchoImpl implements Echo {
return value;
}
- public boolean echoBoolean(boolean param) {
- boolean value = param;
- return value;
- }
-
public String[] echoArrayString(String[] stringArray) {
return stringArray;
}
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java
index 498576117b..afe3d3863e 100644
--- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package services.store;
@@ -31,13 +31,13 @@ import org.oasisopen.sca.annotation.Scope;
@Scope("COMPOSITE")
public class FruitsCatalogImpl implements Catalog {
-
+
@Property
public String currencyCode = "USD";
-
+
@Reference
public CurrencyConverter currencyConverter;
-
+
private Map<String, Item> catalog = new HashMap<String, Item>();
@Init
@@ -50,32 +50,27 @@ public class FruitsCatalogImpl implements Catalog {
public Items getItem() {
Items items = new Items();
- // Add by order so that we can test in the json array
- List<Item> list = new ArrayList<Item>();
- list.add(catalog.get("Pear"));
- list.add(catalog.get("Apple"));
- list.add(catalog.get("Orange"));
- items.setItems(list);
+ items.setItems(new ArrayList<Item>(catalog.values()));
return items;
}
-
+
public Item getItemById(String itemId) {
return catalog.get(itemId);
}
-
+
public void addItem(Item item) {
catalog.put(item.getName(),item);
}
-
+
public void updateItem(Item item) {
if(catalog.get(item.getName()) != null) {
catalog.put(item.getName(), item);
}
}
-
+
public void deleteItem(String itemId) {
if(catalog.get(itemId) != null) {
catalog.remove(itemId);
- }
+ }
}
}
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/echo.composite b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/echo.composite
index b69107834a..9e56b84315 100644
--- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/echo.composite
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/echo.composite
@@ -7,15 +7,15 @@
* 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.
+ * under the License.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
@@ -26,11 +26,19 @@
<component name="EchoComponent">
<implementation.java class="services.echo.EchoImpl"/>
<service name="Echo">
- <tuscany:binding.rest uri="http://localhost:8085/EchoService">
- <tuscany:wireFormat.json />
- <tuscany:operationSelector.rpc />
+ <tuscany:binding.rest name="json" uri="http://localhost:8085/EchoService/json">
+ <tuscany:operationSelector.rpc />
+ <tuscany:response>
+ <tuscany:wireFormat.json />
+ </tuscany:response>
+ </tuscany:binding.rest>
+
+ <tuscany:binding.rest name="xml" uri="http://localhost:8085/EchoService/xml">
+ <tuscany:operationSelector.rpc />
+ <tuscany:response>
+ <tuscany:wireFormat.xml />
+ </tuscany:response>
</tuscany:binding.rest>
</service>
</component>
-
</composite>