summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-11-13 01:25:44 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-11-13 01:25:44 +0000
commitb5c0d648cf147d3709eb78d98011f38e07aee723 (patch)
treee82891caaa5b04b3551ef59d1c790fddd99d5131 /sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test
parent539451c7e13d98504e6f3368d892406494ca711d (diff)
Moving 1.x branches
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835694 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test')
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/BankManagerFacade.java33
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/Customer.java36
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/CustomerImpl.java57
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/calculator/AddServiceRemote.java26
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/geronimo/samples/bank/ejb/BankManagerFacade.java44
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/geronimo/samples/bank/ejb/BankManagerFacadeHome.java44
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/EJBReferenceTestCase.java71
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/MockServer.java140
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/SocketTracer.java138
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/resources/account/account.composite35
-rw-r--r--sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/resources/calculator-ejb/calculator-ejb.jarbin0 -> 5449 bytes
11 files changed, 624 insertions, 0 deletions
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/BankManagerFacade.java b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/BankManagerFacade.java
new file mode 100644
index 0000000000..28dafedaeb
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/BankManagerFacade.java
@@ -0,0 +1,33 @@
+/*
+ * 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 account;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ *
+ * Compatible EJB interface
+ *
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface BankManagerFacade {
+ Double getAccountBalance( String accountNo );
+ void changeAccountBalance( String accountNo, Double balance );
+}
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/Customer.java b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/Customer.java
new file mode 100644
index 0000000000..49ece71f7a
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/Customer.java
@@ -0,0 +1,36 @@
+/*
+ * 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 account;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Customer {
+
+ /**
+ * This method deposits the amount. method accesses external EJB to get the
+ * current balance and add the amount to existing balance.
+ *
+ * @param accountNo The number of the account into which to deposit the money
+ * @param amount The amount to be deposited
+ * @return total amount in customer account after deposit
+ */
+ Double depositAmount(java.lang.String accountNo, Double amount);
+
+}
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/CustomerImpl.java b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/CustomerImpl.java
new file mode 100644
index 0000000000..ed2b403f2d
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/account/CustomerImpl.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 account;
+
+import org.osoa.sca.ServiceRuntimeException;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import calculator.AddServiceRemote;
+
+@Service(Customer.class)
+public class CustomerImpl implements Customer {
+
+ private AddServiceRemote extEJBService = null;
+
+ public AddServiceRemote getExtEJBService() {
+ return extEJBService;
+ }
+
+ @Reference
+ public void setExtEJBService(AddServiceRemote extEJBService) {
+ this.extEJBService = extEJBService;
+ }
+
+ // this method invokes external EJB through EJB reference binding
+ public Double depositAmount(java.lang.String accountNo, Double amount) {
+
+ Double total = null;
+
+ System.out.println("In component implementation. Invoking external EJB through EJB reference binding ");
+
+ try {
+ Double balance = extEJBService.add(amount.doubleValue(), 1000); //invoke external ejb through ejb reference binding
+ total = balance + amount;
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+ return total;
+ }
+
+}
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/calculator/AddServiceRemote.java b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/calculator/AddServiceRemote.java
new file mode 100644
index 0000000000..b0d1c8f6e5
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/calculator/AddServiceRemote.java
@@ -0,0 +1,26 @@
+/*
+ * 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 calculator;
+
+import javax.ejb.Remote;
+
+@Remote
+public interface AddServiceRemote {
+ double add(double n1, double n2);
+}
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/geronimo/samples/bank/ejb/BankManagerFacade.java b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/geronimo/samples/bank/ejb/BankManagerFacade.java
new file mode 100644
index 0000000000..e480e648d9
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/geronimo/samples/bank/ejb/BankManagerFacade.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+/*
+ * Generated by XDoclet - Do not edit!
+ */
+package org.apache.geronimo.samples.bank.ejb;
+
+// copied from the Geronimo Bank sample: http://cwiki.apache.org/GMOxDOC11/ejb-sample-application.html#EJBsampleapplication-overview
+
+/**
+ * Remote interface for BankManagerFacadeBean.
+ * @xdoclet-generated at ${TODAY}
+ * @copyright The XDoclet Team
+ *
+ * @version $Rev$ $Date$
+ */
+public interface BankManagerFacade
+ extends javax.ejb.EJBObject
+{
+
+ void changeAccountBalance( java.lang.String accountNo,java.lang.Double balance )
+ throws java.rmi.RemoteException;
+
+ java.lang.Double getAccountBalance( java.lang.String accountNo )
+ throws java.rmi.RemoteException;
+
+}
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/geronimo/samples/bank/ejb/BankManagerFacadeHome.java b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/geronimo/samples/bank/ejb/BankManagerFacadeHome.java
new file mode 100644
index 0000000000..0d02be3b95
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/geronimo/samples/bank/ejb/BankManagerFacadeHome.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+/*
+ * Generated by XDoclet - Do not edit!
+ */
+
+// copied from the Geronimo Bank sample: http://cwiki.apache.org/GMOxDOC11/ejb-sample-application.html#EJBsampleapplication-overview
+
+package org.apache.geronimo.samples.bank.ejb;
+
+/**
+ * Home interface for BankManagerFacadeBean.
+ * @xdoclet-generated at ${TODAY}
+ * @copyright The XDoclet Team
+ *
+ * @version $Rev$ $Date$
+ */
+public interface BankManagerFacadeHome
+ extends javax.ejb.EJBHome
+{
+ String COMP_NAME="java:comp/env/ejb/BankManagerFacadeBean";
+ String JNDI_NAME="org.apache.geronimo.samples.bank.ejb.BankManagerFacadeBean";
+
+ org.apache.geronimo.samples.bank.ejb.BankManagerFacade create()
+ throws javax.ejb.CreateException,java.rmi.RemoteException;
+
+}
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/EJBReferenceTestCase.java b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/EJBReferenceTestCase.java
new file mode 100644
index 0000000000..83bf9c8673
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/EJBReferenceTestCase.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 org.apache.tuscany.sca.binding.ejb.tests;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import account.Customer;
+
+/**
+ * Invokes the component which calls the reference using the EJB binding
+ *
+ * @version $Rev$ $Date$
+ */
+public class EJBReferenceTestCase {
+ private static final int MOCK_PORT = 8085;
+ private SCADomain scaDomain;
+
+ @Before
+ public void setUp() throws Exception {
+ System.setProperty("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
+ System.setProperty("java.naming.provider.url", "ejbd://localhost:" + MOCK_PORT);
+ System.setProperty("managed", "false");
+
+ scaDomain = SCADomain.newInstance("account/account.composite");
+
+ // To capture the network traffic for the MockServer, uncomment the next two lines (A) and comment out B
+ // int OPENEJB_PORT = 4201; // A
+ // new Thread(new SocketTracer(MOCK_PORT, OPENEJB_PORT)).start(); // A
+
+ // Start the mock server to simulate the remote EJB
+ new Thread(new MockServer(MOCK_PORT)).start(); // B
+
+ // Wait enough for the server to be started
+ Thread.sleep(500);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ scaDomain.close();
+ }
+
+ @Test
+ public void testCalculator() throws Exception {
+ Customer customer = scaDomain.getService(Customer.class, "CustomerComponent");
+ // This is one of the customer numbers in bank application running on Geronimo
+ String accountNo = "1234567890";
+ Double balance = customer.depositAmount(accountNo, new Double(100));
+ // System.out.println("Balance amount for account " + accountNo + " is $" + balance);
+ Assert.assertEquals(1200.0, balance, 0.0);
+ }
+}
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/MockServer.java b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/MockServer.java
new file mode 100644
index 0000000000..e0cce4bae6
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/MockServer.java
@@ -0,0 +1,140 @@
+/*
+ * 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.ejb.tests;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+public class MockServer implements Runnable {
+
+ private int listen;
+ byte[][] seq =
+ {
+ {79, 69, 74, 80, 47, 51, 46, 48, 1, -84, -19, 0, 5, 119, 21, 1, 27, 0, 17, 47, 65, 100, 100, 83, 101, 114,
+ 118, 105, 99, 101, 82, 101, 109, 111, 116, 101, 112, 119, 4, -63, -5, 13, 59},
+ {79, 69, 74, 80, 47, 51, 46, 48, -84, -19, 0, 5, 119, 3, 1, 0, 21, 115, 114, 0, 41, 111, 114, 103, 46, 97,
+ 112, 97, 99, 104, 101, 46, 111, 112, 101, 110, 101, 106, 98, 46, 99, 108, 105, 101, 110, 116, 46, 69, 74, 66,
+ 77, 101, 116, 97, 68, 97, 116, 97, 73, 109, 112, 108, 29, -120, -127, 52, 16, -56, 15, 77, 12, 0, 0, 120,
+ 112, 119, 1, 1, 112, 112, 112, 112, 119, 28, 7, 0, 21, 67, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 65,
+ 100, 100, 83, 101, 114, 118, 105, 99, 101, -1, -1, 0, 1, 118, 114, 0, 27, 99, 97, 108, 99, 117, 108, 97, 116,
+ 111, 114, 46, 65, 100, 100, 83, 101, 114, 118, 105, 99, 101, 82, 101, 109, 111, 116, 101, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 120, 112, 112, 120},
+ {79, 69, 74, 80, 47, 51, 46, 48, 0, -84, -19, 0, 5, 119, 1, 23, 116, 0, 21, 67, 97, 108, 99, 117, 108, 97,
+ 116, 111, 114, 47, 65, 100, 100, 83, 101, 114, 118, 105, 99, 101, 119, 2, -1, -1, 112, 119, 5, -63, -5, 13,
+ 59, 1, 112, 118, 114, 0, 27, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 46, 65, 100, 100, 83, 101, 114,
+ 118, 105, 99, 101, 82, 101, 109, 111, 116, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 112, 119, 24, 0, 3, 97,
+ 100, 100, 2, 4, 64, 89, 0, 0, 0, 0, 0, 0, 4, 64, -113, 64, 0, 0, 0, 0, 0},
+ {79, 69, 74, 80, 47, 51, 46, 48, -84, -19, 0, 5, 119, 3, 1, 0, 4, 115, 114, 0, 16, 106, 97, 118, 97, 46, 108,
+ 97, 110, 103, 46, 68, 111, 117, 98, 108, 101, -128, -77, -62, 74, 41, 107, -5, 4, 2, 0, 1, 68, 0, 5, 118, 97,
+ 108, 117, 101, 120, 114, 0, 16, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 78, 117, 109, 98, 101, 114,
+ -122, -84, -107, 29, 11, -108, -32, -117, 2, 0, 0, 120, 112, 64, -111, 48, 0, 0, 0, 0, 0}
+ };
+
+ public MockServer(int listen) {
+ this.listen = listen;
+ }
+
+ public void run() {
+ try {
+ ServerSocket ss = new ServerSocket(listen);
+ for (int i = 0; i < seq.length; i += 2) {
+ // System.out.println("Processing request[" + i/2 + "]");
+ doExchange(ss.accept(), seq[i], seq[i + 1]);
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void doExchange(Socket socket, byte[] read, byte[] write) throws IOException, InterruptedException {
+ Thread t2 = readBytes(socket, read.length);
+ Thread t1 = writeBytes(socket, write);
+ t1.join();
+ t2.join();
+ socket.close();
+ }
+
+ private Thread readBytes(Socket socket, int x) throws IOException, InterruptedException {
+ byte[] buf = new byte[x];
+ Thread t = new Reader(socket, buf);
+ t.start();
+ return t;
+ }
+
+ private Thread writeBytes(Socket socket, byte[] bs) throws IOException, InterruptedException {
+ Thread t = new Writer(socket, bs);
+ t.start();
+ return t;
+ }
+
+ private static class Reader extends Thread {
+
+ private InputStream is;
+ private byte[] buf;
+
+ Reader(Socket socket, byte[] buf) throws IOException {
+ this.is = socket.getInputStream();
+ this.buf = buf;
+ }
+
+ @Override
+ public void run() {
+ try {
+ int totalSize = buf.length;
+ int readSize = 0;
+ int offset = 0;
+ while (totalSize > 0 && (readSize = is.read(buf, offset, totalSize)) != -1) {
+ offset += readSize;
+ totalSize -= readSize;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ private static class Writer extends Thread {
+
+ private OutputStream os;
+ private byte[] buf;
+
+ Writer(Socket socket, byte[] buf) throws IOException {
+ this.os = socket.getOutputStream();
+ this.buf = buf;
+ }
+
+ @Override
+ public void run() {
+ try {
+ os.write(buf);
+ os.flush();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+}
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/SocketTracer.java b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/SocketTracer.java
new file mode 100644
index 0000000000..66b3feb458
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/java/org/apache/tuscany/sca/binding/ejb/tests/SocketTracer.java
@@ -0,0 +1,138 @@
+/*
+ * 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.ejb.tests;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+/**
+ * Displays the bytes flowing across a Socket connection.
+ * Used to get the read count and reply data for the MockServer
+ *
+ * @version $Rev$ $Date$
+ */
+public class SocketTracer implements Runnable {
+
+ private int listen;
+ private int send;
+
+ SocketTracer(int listen, int send) {
+ this.listen = listen;
+ this.send = send;
+ }
+
+ public void run() {
+ try {
+ ServerSocket ss = new ServerSocket(listen);
+ while (true) {
+ Socket sin = ss.accept();
+
+ Socket sout = new Socket("localhost", send);
+
+ Thread st = new Thread(new Send(sin, sout));
+ st.start();
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * @param buf
+ * @param count
+ */
+ static synchronized void dump(String str, byte[] buf, int count) {
+ // System.out.println(Thread.currentThread());
+ System.out.print(str+"{");
+ for (int j = 0; j < count; j++) {
+ if (j == count - 1) {
+ System.out.println(buf[j] + "}, ");
+ } else {
+ System.out.print(buf[j] + ", ");
+ }
+ }
+ }
+}
+
+
+class Send implements Runnable {
+
+ Socket sin;
+ Socket sout;
+
+ Send(Socket sin, Socket sout) {
+ this.sin = sin;
+ this.sout = sout;
+ }
+
+ public void run() {
+ try {
+
+ Reply rr = new Reply(sout.getInputStream(), sin.getOutputStream());
+ Thread rt = new Thread(rr);
+ rt.start();
+
+ OutputStream outout = sout.getOutputStream();
+ InputStream is = sin.getInputStream();
+ byte[] buf = new byte[4096];
+ int i = 0;
+ int count = 0;
+ while ((i = is.read()) != -1) {
+ buf[count++] = (byte)i;
+ outout.write(i);
+ }
+ SocketTracer.dump("Req: ", buf, count);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
+
+class Reply implements Runnable {
+
+ InputStream is;
+ OutputStream outout;
+
+ Reply(InputStream is, OutputStream outout) {
+ this.is = is;
+ this.outout = outout;
+ }
+
+ public void run() {
+ try {
+ byte[] buf = new byte[4096];
+ int i = 0;
+ int count = 0;
+ while ((i = is.read()) != -1) {
+ buf[count++] = (byte)i;
+ outout.write(i);
+ }
+ SocketTracer.dump("Res: ", buf, count);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/resources/account/account.composite b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/resources/account/account.composite
new file mode 100644
index 0000000000..701b989659
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/resources/account/account.composite
@@ -0,0 +1,35 @@
+<?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" name="account">
+
+ <!-- composite refrence with ejb binding. Modify host and port number in uri attribute based on where you have installed target ResumeBank EJB -->
+
+ <component name="CustomerComponent">
+ <implementation.java class="account.CustomerImpl" />
+ <reference name="extEJBService">
+ <!-- To use the CosNaming, use the following URI -->
+ <!--
+ <binding.ejb uri="corbaname:iiop:1.2@localhost:1050#AddServiceBean" />
+ -->
+ <binding.ejb uri="AddServiceRemote" />
+ </reference>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/resources/calculator-ejb/calculator-ejb.jar b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/resources/calculator-ejb/calculator-ejb.jar
new file mode 100644
index 0000000000..d9afb9027f
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.5.2/modules/binding-ejb-runtime/src/test/resources/calculator-ejb/calculator-ejb.jar
Binary files differ