15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/* 25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * contributor license agreements. See the NOTICE file distributed with 45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * this work for additional information regarding copyright ownership. 55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * (the "License"); you may not use this file except in compliance with 75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the License. You may obtain a copy of the License at 85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Unless required by applicable law or agreed to in writing, software 125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * See the License for the specific language governing permissions and 165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * limitations under the License. 175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @author Aleksey V. Yantsen 215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Created on 10.25.2004 255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.framework.jdwp; 275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.TestErrorException; 295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants; 305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This class represents generic value used in JDWP packets. 335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespublic class Value { 355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 37e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * Creates new boolean value. 385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 39e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createBoolean(boolean value) { 40e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(value); 415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 44e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * Creates new byte value. 455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 46e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createByte(byte value) { 47e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(JDWPConstants.Tag.BYTE_TAG, Byte.valueOf(value)); 485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 51e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * Creates new char value. 525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 53e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createChar(char value) { 54e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(value); 555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Creates new short value. 595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 60e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createShort(short value) { 61e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(JDWPConstants.Tag.SHORT_TAG, Short.valueOf(value)); 625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Creates new int value. 665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 67e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createInt(int value) { 68e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(JDWPConstants.Tag.INT_TAG, Integer.valueOf(value)); 695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Creates new long value. 735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 74e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createLong(long value) { 75e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(JDWPConstants.Tag.LONG_TAG, Long.valueOf(value)); 765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 79e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * Creates new float value. 805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 81e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createFloat(float value) { 82e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(JDWPConstants.Tag.FLOAT_TAG, Float.valueOf(value)); 835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Creates new double value. 875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 88e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createDouble(double value) { 89e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(JDWPConstants.Tag.DOUBLE_TAG, Double.valueOf(value)); 90e9e1750a916cf602df722515736d21af63de1defSebastien Hertz } 91e9e1750a916cf602df722515736d21af63de1defSebastien Hertz 92e9e1750a916cf602df722515736d21af63de1defSebastien Hertz /** 93e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * Creates void value. 94e9e1750a916cf602df722515736d21af63de1defSebastien Hertz */ 95e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createVoidValue() { 96e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(JDWPConstants.Tag.VOID_TAG, Long.valueOf(0)); 97e9e1750a916cf602df722515736d21af63de1defSebastien Hertz } 98e9e1750a916cf602df722515736d21af63de1defSebastien Hertz 99e9e1750a916cf602df722515736d21af63de1defSebastien Hertz /** 100e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * Creates object value. 101e9e1750a916cf602df722515736d21af63de1defSebastien Hertz */ 102e9e1750a916cf602df722515736d21af63de1defSebastien Hertz public static Value createObjectValue(byte tag, long value) { 103e9e1750a916cf602df722515736d21af63de1defSebastien Hertz if (isPrimitiveTag(tag)) { 104e9e1750a916cf602df722515736d21af63de1defSebastien Hertz throw new AssertionError(JDWPConstants.Tag.getName(tag) + " is primitive"); 105e9e1750a916cf602df722515736d21af63de1defSebastien Hertz } 106e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return new Value(tag, Long.valueOf(value)); 107e9e1750a916cf602df722515736d21af63de1defSebastien Hertz } 108e9e1750a916cf602df722515736d21af63de1defSebastien Hertz 109e9e1750a916cf602df722515736d21af63de1defSebastien Hertz private final byte tag; 110e9e1750a916cf602df722515736d21af63de1defSebastien Hertz 111e9e1750a916cf602df722515736d21af63de1defSebastien Hertz private final Number numberValue; 112e9e1750a916cf602df722515736d21af63de1defSebastien Hertz 113e9e1750a916cf602df722515736d21af63de1defSebastien Hertz private final boolean booleanValue; 114e9e1750a916cf602df722515736d21af63de1defSebastien Hertz 115e9e1750a916cf602df722515736d21af63de1defSebastien Hertz private final char charValue; 116e9e1750a916cf602df722515736d21af63de1defSebastien Hertz 117e9e1750a916cf602df722515736d21af63de1defSebastien Hertz /** 118e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * Creates new value. 119e9e1750a916cf602df722515736d21af63de1defSebastien Hertz */ 120e9e1750a916cf602df722515736d21af63de1defSebastien Hertz private Value(byte tag, Number numberValue) { 121e9e1750a916cf602df722515736d21af63de1defSebastien Hertz this.tag = tag; 122e9e1750a916cf602df722515736d21af63de1defSebastien Hertz this.numberValue = numberValue; 123e9e1750a916cf602df722515736d21af63de1defSebastien Hertz this.booleanValue = false; 124e9e1750a916cf602df722515736d21af63de1defSebastien Hertz this.charValue = 0; 1255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Creates new boolean value. 1295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 130e9e1750a916cf602df722515736d21af63de1defSebastien Hertz private Value(boolean value) { 1315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.tag = JDWPConstants.Tag.BOOLEAN_TAG; 1325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.booleanValue = value; 133e9e1750a916cf602df722515736d21af63de1defSebastien Hertz this.numberValue = null; 134e9e1750a916cf602df722515736d21af63de1defSebastien Hertz this.charValue = 0; 1355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Creates new char value. 1395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 140e9e1750a916cf602df722515736d21af63de1defSebastien Hertz private Value(char value) { 1415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.tag = JDWPConstants.Tag.CHAR_TAG; 1425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.charValue = value; 143e9e1750a916cf602df722515736d21af63de1defSebastien Hertz this.numberValue = null; 144e9e1750a916cf602df722515736d21af63de1defSebastien Hertz this.booleanValue = false; 1455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns tag of this value. 149e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * 1505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return Returns the tag. 1515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public byte getTag() { 1535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return tag; 1545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns byte representation of this value. 158e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * 1595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return byte value 1605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public byte getByteValue() { 1625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return numberValue.byteValue(); 1635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns short representation of this value. 167e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * 1685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return short value 1695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public short getShortValue() { 1715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return numberValue.shortValue(); 1725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns int representation of this value. 176e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * 1775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return int value 1785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public int getIntValue() { 1805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return numberValue.intValue(); 1815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns long representation of this value. 185e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * 1865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return long value 1875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getLongValue() { 1895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return numberValue.longValue(); 1905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns float representation of this value. 194e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * 1955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return float value 1965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public float getFloatValue() { 1985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return numberValue.floatValue(); 1995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns double representation of this value. 203e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * 2045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return double value 2055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public double getDoubleValue() { 2075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return numberValue.doubleValue(); 2085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns boolean representation of this value. 212e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * 2135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return boolean value 2145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean getBooleanValue() { 2165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return booleanValue; 2175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns char representation of this value. 221e9e1750a916cf602df722515736d21af63de1defSebastien Hertz * 2225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return char value 2235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public char getCharValue() { 2255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return charValue; 2265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 228e9e1750a916cf602df722515736d21af63de1defSebastien Hertz private static boolean isPrimitiveTag(byte tag) { 229e9e1750a916cf602df722515736d21af63de1defSebastien Hertz switch (tag) { 230e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.BOOLEAN_TAG: 231e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.BYTE_TAG: 232e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.CHAR_TAG: 233e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.SHORT_TAG: 234e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.INT_TAG: 235e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.LONG_TAG: 236e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.FLOAT_TAG: 237e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.DOUBLE_TAG: 238e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.VOID_TAG: 239e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return true; 240e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.NO_TAG: 241e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.ARRAY_TAG: 242e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.CLASS_LOADER_TAG: 243e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.CLASS_OBJECT_TAG: 244e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.OBJECT_TAG: 245e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.STRING_TAG: 246e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.THREAD_TAG: 247e9e1750a916cf602df722515736d21af63de1defSebastien Hertz case JDWPConstants.Tag.THREAD_GROUP_TAG: 248e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return false; 249e9e1750a916cf602df722515736d21af63de1defSebastien Hertz default: 250e9e1750a916cf602df722515736d21af63de1defSebastien Hertz throw new TestErrorException("Illegal tag value: " + tag); 251e9e1750a916cf602df722515736d21af63de1defSebastien Hertz } 252e9e1750a916cf602df722515736d21af63de1defSebastien Hertz } 253e9e1750a916cf602df722515736d21af63de1defSebastien Hertz 2545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Compares with other value. 2565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 257e1833aa2673d4f975ad35e7a39317feeea922fe1Sebastien Hertz @Override 2585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean equals(Object arg0) { 2595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (!(arg0 instanceof Value)) 2605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 2615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes Value value0 = (Value) arg0; 263e9e1750a916cf602df722515736d21af63de1defSebastien Hertz if (tag != value0.tag) 2645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 2655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes switch (tag) { 2675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BOOLEAN_TAG: 2685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getBooleanValue() == value0.getBooleanValue(); 2695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BYTE_TAG: 2705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getByteValue() == value0.getByteValue(); 2715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CHAR_TAG: 2725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getCharValue() == value0.getCharValue(); 2735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.DOUBLE_TAG: 2745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (Double.isNaN(getDoubleValue()) 2755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes && (Double.isNaN(value0.getDoubleValue()))) 2765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 2775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getDoubleValue() == value0.getDoubleValue(); 2785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.FLOAT_TAG: 2795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (Float.isNaN(getFloatValue()) 2805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes && (Float.isNaN(value0.getFloatValue()))) 2815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 2825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getFloatValue() == value0.getFloatValue(); 2835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.INT_TAG: 2845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getIntValue() == value0.getIntValue(); 2855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.LONG_TAG: 2865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getLongValue() == value0.getLongValue(); 2875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.SHORT_TAG: 2885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getShortValue() == value0.getShortValue(); 2895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.STRING_TAG: 2905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.ARRAY_TAG: 2915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_LOADER_TAG: 2925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_OBJECT_TAG: 2935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.OBJECT_TAG: 2945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_GROUP_TAG: 2955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_TAG: 2965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getLongValue() == value0.getLongValue(); 2975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Illegal tag value"); 3005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Converts this value to string representation for printing. 3045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 305e1833aa2673d4f975ad35e7a39317feeea922fe1Sebastien Hertz @Override 3065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String toString() { 3075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes switch (tag) { 3095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BOOLEAN_TAG: 3105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "boolean: " + getBooleanValue(); 3115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BYTE_TAG: 3125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "byte: " + getByteValue(); 3135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CHAR_TAG: 3145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "char: " + getCharValue(); 3155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.DOUBLE_TAG: 3165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "double: " + getDoubleValue(); 3175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.FLOAT_TAG: 3185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "float: " + getFloatValue(); 3195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.INT_TAG: 3205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "int: " + getIntValue(); 3215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.LONG_TAG: 3225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "long: " + getLongValue(); 3235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.SHORT_TAG: 3245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "short: " + getShortValue(); 3255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.STRING_TAG: 3265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "StringID: " + getLongValue(); 3275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.ARRAY_TAG: 328e9e1750a916cf602df722515736d21af63de1defSebastien Hertz return "ArrayID: " + getLongValue(); 3295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_LOADER_TAG: 3305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "ClassLoaderID: " + getLongValue(); 3315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CLASS_OBJECT_TAG: 3325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "ClassObjectID: " + getLongValue(); 3335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.OBJECT_TAG: 3345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "ObjectID: " + getLongValue(); 3355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_GROUP_TAG: 3365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "ThreadGroupID: " + getLongValue(); 3375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.THREAD_TAG: 3385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "ThreadID: " + getLongValue(); 3395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Illegal tag value: " + tag); 3425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes} 344