THRIFT-969 Java Tutorial broken, move CalculatorHandler to a separate file


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1028079 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tutorial/java/src/CalculatorHandler.java b/tutorial/java/src/CalculatorHandler.java
new file mode 100644
index 0000000..4216be5
--- /dev/null
+++ b/tutorial/java/src/CalculatorHandler.java
@@ -0,0 +1,92 @@
+/*
+ * 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.
+ */
+
+import org.apache.thrift.TException;
+
+// Generated code
+import tutorial.*;
+import shared.*;
+
+import java.util.HashMap;
+
+public 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 ADD:
+      val = work.num1 + work.num2;
+      break;
+    case SUBTRACT:
+      val = work.num1 - work.num2;
+      break;
+    case MULTIPLY:
+      val = work.num1 * work.num2;
+      break;
+    case DIVIDE:
+      if (work.num2 == 0) {
+        InvalidOperation io = new InvalidOperation();
+        io.what = work.op.getValue();
+        io.why = "Cannot divide by 0";
+        throw io;
+      }
+      val = work.num1 / work.num2;
+      break;
+    default:
+      InvalidOperation io = new InvalidOperation();
+      io.what = work.op.getValue();
+      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()");
+  }
+
+}
+