Java Code Examples for org.apache.harmony.jpda.tests.framework.jdwp.ArrayRegion

Following code examples demonstrate how to use org.apache.harmony.jpda.tests.framework.jdwp.ArrayRegionfrom android. These examples are extracted from various highly rated open source projects. You can directly use these code snippets or view their entire linked source code. These snippets are extracted to provide contextual information about how to use this class in the real world. These samples also let you understand some good practices on how to use org.apache.harmony.jpda.tests.framework.jdwp.ArrayRegionand various code implementation of this class.

    }

    private void checkArrayRegion(ArrayRegion valuesRegion, long arrayID,
                                  int firstIndex, int length) {
        CommandPacket packet = new CommandPacket(
                JDWPCommands.ArrayReferenceCommandSet.CommandSetID,
                JDWPCommands.ArrayReferenceCommandSet.SetValuesCommand);
        packet.setNextValueAsArrayID(arrayID);
        packet.setNextValueAsInt(firstIndex);
        packet.setNextValueAsInt(length);
        for (int i = 0; i < length; i++) {
            packet.setNextValueAsUntaggedValue(valuesRegion.getValue(i));
        }

        ReplyPacket reply = debuggeeWrapper.vmMirror.performCommand(packet);
        checkReplyPacket(reply, "ArrayReference::SetValues command");

        packet = new CommandPacket(
                JDWPCommands.ArrayReferenceCommandSet.CommandSetID,
                JDWPCommands.ArrayReferenceCommandSet.GetValuesCommand);
        packet.setNextValueAsArrayID(arrayID);
        packet.setNextValueAsInt(firstIndex);
        packet.setNextValueAsInt(length);
        reply = debuggeeWrapper.vmMirror.performCommand(packet);
        checkReplyPacket(reply, "ArrayReference::GetValues command");

        ArrayRegion region = reply.getNextValueAsArrayRegion();
        assertEquals("Invalud returned array length,", length, region.getLength());
        for (int i = 0; i < region.getLength(); i++) {
            Value value = region.getValue(i);
            logWriter.println(value.toString());
            assertEquals("ArrayReference::GetValues returned invalid value on index:<" + i + ">",
                    value, valuesRegion.getValue(i));
        }
    } 


    public void testSetValues001() {
        logWriter.println("testLength001 started");
        synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);

        long classID = getClassIDBySignature("Lorg/apache/harmony/jpda/tests/jdwp/ArrayReference/ArrayReferenceDebuggee;");

        CommandPacket packet = new CommandPacket(
                JDWPCommands.ReferenceTypeCommandSet.CommandSetID,
                JDWPCommands.ReferenceTypeCommandSet.FieldsCommand);
        packet.setNextValueAsReferenceTypeID(classID);
        ReplyPacket reply = debuggeeWrapper.vmMirror.performCommand(packet);
        checkReplyPacket(reply, "ReferenceType::Fields command");

        int declared = reply.getNextValueAsInt();
        for (int i = 0; i < declared; i++) {
            long fieldID = reply.getNextValueAsFieldID();
            String name = reply.getNextValueAsString();
            reply.getNextValueAsString();
            reply.getNextValueAsInt();

            if (name.equals("intArray")) {
                ArrayRegion valuesRegion = new ArrayRegion(
                        JDWPConstants.Tag.INT_TAG, 10);
                for (int j = 0; j < valuesRegion.getLength(); j++) {
                    valuesRegion.setValue(j, new Value(-j));
                }
                checkArrayValues(valuesRegion, classID, fieldID);
            } else if (name.equals("longArray")) {
                ArrayRegion valuesRegion = new ArrayRegion(
                        JDWPConstants.Tag.LONG_TAG, 10);
                for (int j = 0; j < valuesRegion.getLength(); j++) {
                    valuesRegion.setValue(j, new Value((long)-j));
                }
                checkArrayValues(valuesRegion, classID, fieldID);
            } else if (name.equals("byteArray")) {
                ArrayRegion valuesRegion = new ArrayRegion(
                        JDWPConstants.Tag.BYTE_TAG, 10);
                for (int j = 0; j < valuesRegion.getLength(); j++) {
                    valuesRegion.setValue(j, new Value((byte)-j));
                }
                checkArrayValues(valuesRegion, classID, fieldID);
            }
        }

        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
    } 

    }

    private void checkArrayValues(ArrayRegion valuesRegion, long classID,
                                  long fieldID) {
        CommandPacket packet = new CommandPacket(
                JDWPCommands.ReferenceTypeCommandSet.CommandSetID,
                JDWPCommands.ReferenceTypeCommandSet.GetValuesCommand);
        packet.setNextValueAsReferenceTypeID(classID);
        packet.setNextValueAsInt(1);
        packet.setNextValueAsFieldID(fieldID);

        ReplyPacket reply = debuggeeWrapper.vmMirror.performCommand(packet);
        checkReplyPacket(reply, "ReferenceType::GetValues command");

        assertEquals("GetValuesCommand returned invalid number of values,", 1, reply.getNextValueAsInt());
        Value value = reply.getNextValueAsValue();
        long arrayID = value.getLongValue();
        int length = valuesRegion.getLength();

        checkArrayRegion(valuesRegion, arrayID, 0, length);
    }