summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-04-30 23:26:18 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-04-30 23:26:18 +0000
commit71f0288a921a3098858cda3ab7d784fc8b70da99 (patch)
tree57765c1ca5051d059afa56e2c0776a744b6b1bfd /sca-java-2.x/trunk/modules/binding-rest-runtime/src/test
parent76828ad80690fc618afefbd6af566204871e3ec2 (diff)
Add basic support for binary data types for binding.rest
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@939874 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-rest-runtime/src/test')
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/binary/BinaryServiceTestCase.java106
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/binary/BinaryService.java45
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/binary/BinaryServiceImpl.java57
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/binary.composite33
4 files changed, 241 insertions, 0 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/binary/BinaryServiceTestCase.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/binary/BinaryServiceTestCase.java
new file mode 100644
index 0000000000..66dc66b21a
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/binary/BinaryServiceTestCase.java
@@ -0,0 +1,106 @@
+/*
+ * 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.rest.wireformat.binary;
+
+import java.io.ByteArrayInputStream;
+import java.net.Socket;
+
+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.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.meterware.httpunit.GetMethodWebRequest;
+import com.meterware.httpunit.PostMethodWebRequest;
+import com.meterware.httpunit.PutMethodWebRequest;
+import com.meterware.httpunit.WebConversation;
+import com.meterware.httpunit.WebRequest;
+import com.meterware.httpunit.WebResponse;
+
+public class BinaryServiceTestCase {
+ private static final String SERVICE_URL = "http://localhost:8085/Binary";
+
+ private static final String CONTENT = "ABCDefgh";
+ private static final String UPDATED_CONTENT = "abcdEFGH";
+
+ private static Node node;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ try {
+ String contribution = ContributionLocationHelper.getContributionLocation(BinaryServiceTestCase.class);
+ node = NodeFactory.newInstance().createNode("binary.composite", new Contribution("binary", contribution));
+ node.start();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ if (node != null) {
+ node.stop();
+ }
+ }
+
+ @Test
+ public void testPing() throws Exception {
+ new Socket("127.0.0.1", 8085);
+ //System.in.read();
+ }
+
+ @Test
+ public void testMethods() throws Exception {
+ WebConversation wc = new WebConversation();
+
+ // Create content
+ WebRequest request =
+ new PostMethodWebRequest(SERVICE_URL, new ByteArrayInputStream(CONTENT.getBytes("UTF-8")),
+ "application/octet-stream");
+ WebResponse response = wc.getResource(request);
+
+ Assert.assertEquals(200, response.getResponseCode());
+
+ // Read the content
+ request = new GetMethodWebRequest(SERVICE_URL);
+ response = wc.getResource(request);
+
+ Assert.assertEquals(200, response.getResponseCode());
+ Assert.assertEquals(CONTENT, response.getText());
+
+ request =
+ new PutMethodWebRequest(SERVICE_URL, new ByteArrayInputStream(UPDATED_CONTENT.getBytes("UTF-8")),
+ "application/octet-stream");
+ response = wc.getResource(request);
+
+ Assert.assertEquals(200, response.getResponseCode());
+
+ //read new results and expect to get new item back in the response
+ request = new GetMethodWebRequest(SERVICE_URL);
+ response = wc.getResource(request);
+
+ Assert.assertEquals(200, response.getResponseCode());
+ Assert.assertEquals(UPDATED_CONTENT, response.getText());
+ }
+}
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/binary/BinaryService.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/binary/BinaryService.java
new file mode 100644
index 0000000000..4749383a0c
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/binary/BinaryService.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 services.binary;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.activation.DataSource;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ *
+ */
+@Remotable
+public interface BinaryService {
+ @GET
+ InputStream get();
+
+ @PUT
+ void update(InputStream is) throws IOException;
+
+ @POST
+ void create(DataSource dataSource) throws IOException;
+}
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/binary/BinaryServiceImpl.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/binary/BinaryServiceImpl.java
new file mode 100644
index 0000000000..aefbf64504
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/binary/BinaryServiceImpl.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 services.binary;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.activation.DataSource;
+
+import org.oasisopen.sca.annotation.Scope;
+
+/**
+ *
+ */
+@Scope("COMPOSITE")
+public class BinaryServiceImpl implements BinaryService {
+ private byte[] content;
+ private int length;
+
+ public void create(DataSource dataSource) throws IOException {
+ content = new byte[10240];
+ InputStream is = dataSource.getInputStream();
+ length = is.read(content);
+ System.out.println("Content received: " + length);
+ }
+
+ public InputStream get() {
+ byte[] bytes = new byte[length];
+ System.arraycopy(content, 0, bytes, 0, length);
+ System.out.println("Content sent: " + length);
+ return new ByteArrayInputStream(bytes);
+ }
+
+ public void update(InputStream is) throws IOException {
+ length = is.read(content);
+ System.out.println("Content updated: " + length);
+ }
+
+}
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/binary.composite b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/binary.composite
new file mode 100644
index 0000000000..821ae7fcbf
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/binary.composite
@@ -0,0 +1,33 @@
+<?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://binary"
+ name="Binary">
+
+ <component name="BinaryService">
+ <implementation.java class="services.binary.BinaryServiceImpl"/>
+ <service name="BinaryService">
+ <tuscany:binding.rest uri="http://localhost:8085/Binary">
+ <tuscany:operationSelector.jaxrs />
+ </tuscany:binding.rest>
+ </service>
+ </component>
+</composite>