1e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes/* 2e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * contributor license agreements. See the NOTICE file distributed with 4e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * this work for additional information regarding copyright ownership. 5e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * (the "License"); you may not use this file except in compliance with 7e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the License. You may obtain a copy of the License at 8e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 9e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 11e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Unless required by applicable law or agreed to in writing, software 12e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * See the License for the specific language governing permissions and 15e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * limitations under the License. 16e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 17e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 18e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespackage tests.util; 19e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 20e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.util.Stack; 21e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 22e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes/** 23e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * A stack to store the parameters of a call, as well as the call stack. 24e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 25e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespublic class CallVerificationStack extends Stack<Object> { 26e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * -------------------------------------------------------------------- 298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Class variables 308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * -------------------------------------------------------------------- 318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private static final long serialVersionUID = 1L; 348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // the singleton 368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private static final CallVerificationStack _instance = new CallVerificationStack(); 378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * -------------------------------------------------------------------- 408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Instance variables 418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * -------------------------------------------------------------------- 428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // the call stack, store StackTraceElement 458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private final Stack<StackTraceElement> callStack = new Stack<StackTraceElement>(); 468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * ------------------------------------------------------------------- 498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Constructors 508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * ------------------------------------------------------------------- 518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Can't be instantiated. 558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private CallVerificationStack() { 578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // empty 588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * ------------------------------------------------------------------- 628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Methods 638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * ------------------------------------------------------------------- 648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Gets the singleton instance. 688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the singleton instance 708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static CallVerificationStack getInstance() { 728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return _instance; 738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pushes the call stack. 778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private void pushCallStack() { 798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath StackTraceElement[] eles = (new Throwable()).getStackTrace(); 808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int i; 818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (i = 1; i < eles.length; i++) { 828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath if (!eles[i].getClassName().equals(this.getClass().getName())) { 838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath break; 848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.callStack.push(eles[i]); 878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Gets the "current" calling class name. 918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the "current" calling class name 938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public String getCurrentSourceClass() { 958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return this.callStack.peek().getClassName(); 968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Gets the "current" calling method name. 1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the "current" calling method name 1028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public String getCurrentSourceMethod() { 1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return this.callStack.peek().getMethodName(); 1058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Clear the parameter stack and the call stack. 1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath @Override 111e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public void clear() { 1128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.callStack.clear(); 1138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super.clear(); 1148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 115e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 1168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath @Override 117e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public Object push(Object o) { 1188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath pushCallStack(); 1198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return super.push(o); 1208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pushes a boolean onto the top of this stack. 1248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @param val the value to push 1268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void push(boolean val) { 1288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.push(new BaseTypeWrapper(val)); 1298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pushes a char onto the top of this stack. 1338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @param val the value to push 1358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void push(char val) { 1378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.push(new BaseTypeWrapper(val)); 1388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pushes a double onto the top of this stack. 1428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @param val the value to push 1448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void push(double val) { 1468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.push(new BaseTypeWrapper(val)); 1478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pushes a float onto the top of this stack. 1518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @param val the value to push 1538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void push(float val) { 1558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.push(new BaseTypeWrapper(val)); 1568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pushes an int onto the top of this stack. 1608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @param val the value to push 1628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void push(int val) { 1648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.push(new BaseTypeWrapper(val)); 1658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pushes a long onto the top of this stack. 1698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @param val the value to push 1718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void push(long val) { 1738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.push(new BaseTypeWrapper(val)); 1748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pushes a short onto the top of this stack. 1788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @param val the value to push 1808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void push(short val) { 1828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.push(new BaseTypeWrapper(val)); 1838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pop an object. 1878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the object 1898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath @Override 191e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public Object pop() { 1928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.callStack.pop(); 1938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return super.pop(); 1948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 1978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pop a boolean. 1988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 1998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the value 2008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public boolean popBoolean() { 2028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 2038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Boolean value = (Boolean) wrapper.getValue(); 2048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return value.booleanValue(); 2058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 2088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pop a char. 2098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 2108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the value 2118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public char popChar() { 2138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 2148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Character value = (Character) wrapper.getValue(); 2158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return value.charValue(); 2168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 2198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pop a double. 2208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 2218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the value 2228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public double popDouble() { 2248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 2258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Double value = (Double) wrapper.getValue(); 2268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return value.doubleValue(); 2278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 2308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pop a float. 2318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 2328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the value 2338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public float popFloat() { 2358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 2368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Float value = (Float) wrapper.getValue(); 2378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return value.floatValue(); 2388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 2418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pop a int. 2428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 2438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the value 2448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public int popInt() { 2468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 2478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Integer value = (Integer) wrapper.getValue(); 2488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return value.intValue(); 2498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 2528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pop a long. 2538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 2548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the value 2558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public long popLong() { 2578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 2588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Long value = (Long) wrapper.getValue(); 2598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return value.longValue(); 2608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 2638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Pop a short. 2648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 2658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @return the value 2668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public short popShort() { 2688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 2698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Short value = (Short) wrapper.getValue(); 2708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return value.shortValue(); 2718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 2748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Wrapper of base types. 2758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath class BaseTypeWrapper { 2778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // the internal value 2798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private Object value; 2808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 2828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Constructs a wrapper object for the base type <code> boolean </code> . 2838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public BaseTypeWrapper(boolean val) { 2858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.value = new Boolean(val); 2868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 2898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Constructs a wrapper object for the base type <code> c </code> . 2908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public BaseTypeWrapper(byte val) { 2928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.value = new Byte(val); 2938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 2968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Constructs a wrapper object for the base type <code> char </code> . 2978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public BaseTypeWrapper(char val) { 2998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.value = new Character(val); 3008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Constructs a wrapper object for the base type <code> double </code> . 3048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public BaseTypeWrapper(double val) { 3068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.value = new Double(val); 3078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Constructs a wrapper object for the base type <code> float </code> . 3118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public BaseTypeWrapper(float val) { 3138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.value = new Float(val); 3148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Constructs a wrapper object for the base type <code> int </code> . 3188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public BaseTypeWrapper(int val) { 3208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.value = new Integer(val); 3218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Constructs a wrapper object for the base type <code> long </code> . 3258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public BaseTypeWrapper(long val) { 3278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.value = new Long(val); 3288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Constructs a wrapper object for the base type <code> short </code> . 3328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public BaseTypeWrapper(short val) { 3348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.value = new Short(val); 3358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Gets the internal value. 3398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public Object getValue() { 3418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return this.value; 3428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 344e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes} 345