/* * 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 code import tutorial.*; import shared.*; import java.util.HashMap; public class CalculatorHandler implements Calculator.Iface { private final static String largeString; static { // for 3M //final int size = 3 * 1024 * 1024; // for 3K //final int size = 3 * 1024; // for 300Bytes final int size = 3 * 102; char[] chars = new char[size]; for (int i = 0; i < size; i++) { chars[i] = '1'; } largeString = String.valueOf(chars, 0, size); } private HashMap log; private boolean printLog = false; public CalculatorHandler() { log = new HashMap(); } public void ping() { if (printLog) System.out.println("ping()"); } public int add(int n1, int n2) { if (printLog) System.out.println("add(" + n1 + "," + n2 + ")"); return n1 + n2; } public int calculate(int logid, Work work) throws InvalidOperation { if (printLog) 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; // for large string entry.value = largeString; log.put(logid, entry); return val; } public SharedStruct getStruct(int key) { if (printLog) System.out.println("getStruct(" + key + ")"); return log.get(key); } public void zip() { if (printLog) System.out.println("zip()"); } }