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
diff --git a/tutorial/java/JavaClient b/tutorial/java/JavaClient
new file mode 100755
index 0000000..7e99475
--- /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 0000000..f5d3cfc
--- /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 0000000..66e2914
--- /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 0000000..6667d6f
--- /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 0000000..b7db0db
--- /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.");
+  }
+}