Пример #1
0
 /**
  * Reads the an object of the given Class from the untagged value contained in the ByteBuffer.
  *
  * @param bb contains the Object
  * @param tag TAG of the Value to be read
  * @return the object
  * @throws JdwpException
  * @throws IOException
  */
 public static Object getUntaggedObj(ByteBuffer bb, byte tag) throws JdwpException, IOException {
   switch (tag) {
     case JdwpConstants.Tag.BYTE:
       return new Byte(bb.get());
     case JdwpConstants.Tag.CHAR:
       return new Character(bb.getChar());
     case JdwpConstants.Tag.FLOAT:
       return new Float(bb.getFloat());
     case JdwpConstants.Tag.DOUBLE:
       return new Double(bb.getDouble());
     case JdwpConstants.Tag.INT:
       return new Integer(bb.getInt());
     case JdwpConstants.Tag.LONG:
       return new Long(bb.getLong());
     case JdwpConstants.Tag.SHORT:
       return new Short(bb.getShort());
     case JdwpConstants.Tag.VOID:
       return new byte[0];
     case JdwpConstants.Tag.BOOLEAN:
       return (bb.get() == 0) ? new Boolean(false) : new Boolean(true);
     case JdwpConstants.Tag.STRING:
       return JdwpString.readString(bb);
     case JdwpConstants.Tag.ARRAY:
     case JdwpConstants.Tag.THREAD:
     case JdwpConstants.Tag.OBJECT:
     case JdwpConstants.Tag.THREAD_GROUP:
     case JdwpConstants.Tag.CLASS_LOADER:
     case JdwpConstants.Tag.CLASS_OBJECT:
       // All these cases are ObjectIds
       ObjectId oid = VMIdManager.getDefault().readObjectId(bb);
       return oid.getObject();
     default:
       throw new NotImplementedException("Tag " + tag + " is not implemented.");
   }
 }
Пример #2
0
 /**
  * Reads an object of the given Class from the untagged value contained in the ByteBuffer.
  *
  * @param bb contains the Object
  * @param type corresponds to the TAG of value to be read
  * @return the resultant object
  * @throws JdwpException
  * @throws IOException
  */
 public static Object getUntaggedObj(ByteBuffer bb, Class type) throws JdwpException, IOException {
   if (type.isPrimitive()) {
     if (type == byte.class) return new Byte(bb.get());
     else if (type == char.class) return new Character(bb.getChar());
     else if (type == float.class) return new Float(bb.getFloat());
     else if (type == double.class) return new Double(bb.getDouble());
     else if (type == int.class) return new Integer(bb.getInt());
     else if (type == long.class) return new Long(bb.getLong());
     else if (type == short.class) return new Short(bb.getShort());
     else if (type == boolean.class) return Boolean.valueOf(bb.get() != 0);
     else if (type == void.class) return new byte[0];
     else { // This shouldn't be possible
       throw new JdwpInternalErrorException("Field has invalid primitive!");
     }
   } else {
     // Field is an object
     ObjectId oid = VMIdManager.getDefault().readObjectId(bb);
     return oid.getObject();
   }
 }