summaryrefslogtreecommitdiff
path: root/tutorial/java
diff options
context:
space:
mode:
authorMark Slee <mcslee@apache.org>2007-04-10 02:30:30 +0000
committerMark Slee <mcslee@apache.org>2007-04-10 02:30:30 +0000
commitcb39f08ceda2bedf5b80c3520590aec8917edcbf (patch)
treec2b604f3b8bfc13f68c4cff274eb4870c05b39a1 /tutorial/java
parent2e15e2080438b6d8e8d8bd457fcb172301bcdb18 (diff)
downloadthrift-cb39f08ceda2bedf5b80c3520590aec8917edcbf.tar.gz
Forgot to add Java tutorials to thrift
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665090 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'tutorial/java')
-rwxr-xr-xtutorial/java/JavaClient2
-rwxr-xr-xtutorial/java/JavaServer2
-rw-r--r--tutorial/java/build.xml29
-rw-r--r--tutorial/java/src/JavaClient.java66
-rw-r--r--tutorial/java/src/JavaServer.java100
5 files changed, 199 insertions, 0 deletions
diff --git a/tutorial/java/JavaClient b/tutorial/java/JavaClient
new file mode 100755
index 000000000..7e9947569
--- /dev/null
+++ b/tutorial/java/JavaClient
@@ -0,0 +1,2 @@
+#!/bin/sh
+java -cp tutorial.jar:/usr/local/lib/libthrift.jar JavaClient
diff --git a/tutorial/java/JavaServer b/tutorial/java/JavaServer
new file mode 100755
index 000000000..f5d3cfc86
--- /dev/null
+++ b/tutorial/java/JavaServer
@@ -0,0 +1,2 @@
+#!/bin/sh
+java -cp tutorial.jar:/usr/local/lib/libthrift.jar JavaServer
diff --git a/tutorial/java/build.xml b/tutorial/java/build.xml
new file mode 100644
index 000000000..66e291480
--- /dev/null
+++ b/tutorial/java/build.xml
@@ -0,0 +1,29 @@
+<project name="tutorial" default="tutorial" basedir=".">
+
+ <description>Thrift Tutorial</description>
+
+ <property name="src" location="src" />
+ <property name="gen" location="../gen-java" />
+ <property name="build" location="build" />
+ <property name="cpath" location="/usr/local/lib/libthrift.jar" />
+
+ <target name="init">
+ <tstamp />
+ <mkdir dir="${build}"/>
+ </target>
+
+ <target name="compile" depends="init">
+ <javac srcdir="${gen}" destdir="${build}" classpath="${cpath}" />
+ <javac srcdir="${src}" destdir="${build}" classpath="${cpath}:${gen}" />
+ </target>
+
+ <target name="tutorial" depends="compile">
+ <jar jarfile="tutorial.jar" basedir="${build}"/>
+ </target>
+
+ <target name="clean">
+ <delete dir="${build}" />
+ <delete file="tutorial.jar" />
+ </target>
+
+</project>
diff --git a/tutorial/java/src/JavaClient.java b/tutorial/java/src/JavaClient.java
new file mode 100644
index 000000000..6667d6f62
--- /dev/null
+++ b/tutorial/java/src/JavaClient.java
@@ -0,0 +1,66 @@
+// Generated code
+import tutorial.*;
+import shared.*;
+
+import com.facebook.thrift.TException;
+import com.facebook.thrift.transport.TTransport;
+import com.facebook.thrift.transport.TSocket;
+import com.facebook.thrift.transport.TTransportException;
+import com.facebook.thrift.protocol.TBinaryProtocol;
+import com.facebook.thrift.protocol.TProtocol;
+
+import java.util.AbstractMap;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.ArrayList;
+
+public class JavaClient {
+ public static void main(String [] args) {
+ try {
+
+ TTransport transport = new TSocket("localhost", 9090);
+ TProtocol protocol = new TBinaryProtocol(transport);
+ Calculator.Client client = new Calculator.Client(protocol);
+
+ transport.open();
+
+ client.ping();
+ System.out.println("ping()");
+
+ int sum = client.add(1,1);
+ System.out.println("1+1=" + sum);
+
+ Work work = new Work();
+
+ work.op = Operation.DIVIDE;
+ work.num1 = 1;
+ work.num2 = 0;
+ try {
+ int quotient = client.calculate(1, work);
+ System.out.println("Whoa we can divide by 0");
+ } catch (InvalidOperation io) {
+ System.out.println("Invalid operation: " + io.why);
+ }
+
+ work.op = Operation.SUBTRACT;
+ work.num1 = 15;
+ work.num2 = 10;
+ try {
+ int diff = client.calculate(1, work);
+ System.out.println("15-10=" + diff);
+ } catch (InvalidOperation io) {
+ System.out.println("Invalid operation: " + io.why);
+ }
+
+ SharedStruct log = client.getStruct(1);
+ System.out.println("Check log: " + log.value);
+
+ transport.close();
+
+ } catch (TException x) {
+ x.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/tutorial/java/src/JavaServer.java b/tutorial/java/src/JavaServer.java
new file mode 100644
index 000000000..b7db0db20
--- /dev/null
+++ b/tutorial/java/src/JavaServer.java
@@ -0,0 +1,100 @@
+import com.facebook.thrift.TException;
+import com.facebook.thrift.protocol.TBinaryProtocol;
+import com.facebook.thrift.protocol.TProtocol;
+import com.facebook.thrift.server.TServer;
+import com.facebook.thrift.server.TSimpleServer;
+import com.facebook.thrift.transport.TServerSocket;
+import com.facebook.thrift.transport.TServerTransport;
+
+// Generated code
+import tutorial.*;
+import shared.*;
+
+import java.util.HashMap;
+
+public class JavaServer {
+
+ public static class CalculatorHandler implements Calculator.Iface {
+
+ private HashMap<Integer,SharedStruct> log;
+
+ public CalculatorHandler() {
+ log = new HashMap<Integer, SharedStruct>();
+ }
+
+ public void ping() {
+ System.out.println("ping()");
+ }
+
+ public int add(int n1, int n2) {
+ System.out.println("add(" + n1 + "," + n2 + ")");
+ return n1 + n2;
+ }
+
+ public int calculate(int logid, Work work) throws InvalidOperation {
+ System.out.println("calculate(" + logid + ", {" + work.op + "," + work.num1 + "," + work.num2 + "})");
+ int val = 0;
+ switch (work.op) {
+ case Operation.ADD:
+ val = work.num1 + work.num2;
+ break;
+ case Operation.SUBTRACT:
+ val = work.num1 - work.num2;
+ break;
+ case Operation.MULTIPLY:
+ val = work.num1 * work.num2;
+ break;
+ case Operation.DIVIDE:
+ if (work.num2 == 0) {
+ InvalidOperation io = new InvalidOperation();
+ io.what = work.op;
+ io.why = "Cannot divide by 0";
+ throw io;
+ }
+ val = work.num1 / work.num2;
+ break;
+ default:
+ InvalidOperation io = new InvalidOperation();
+ io.what = work.op;
+ io.why = "Unknown operation";
+ throw io;
+ }
+
+ SharedStruct entry = new SharedStruct();
+ entry.key = logid;
+ entry.value = Integer.toString(val);
+ log.put(logid, entry);
+
+ return val;
+ }
+
+ public SharedStruct getStruct(int key) {
+ System.out.println("getStruct(" + key + ")");
+ return log.get(key);
+ }
+
+ public void zip() {
+ System.out.println("zip()");
+ }
+
+ }
+
+ public static void main(String [] args) {
+ try {
+ CalculatorHandler handler = new CalculatorHandler();
+ Calculator.Processor processor = new Calculator.Processor(handler);
+ TServerTransport serverTransport = new TServerSocket(9090);
+ TServer server = new TSimpleServer(processor, serverTransport);
+
+ // Use this for a multithreaded server
+ // server = new TThreadPoolServer(processor, serverTransport);
+
+ System.out.println("Starting the server...");
+ server.serve();
+
+ } catch (Exception x) {
+ x.printStackTrace();
+ }
+ System.out.println("done.");
+ }
+}