String parseValue()

in ratis-logservice/src/main/java/org/apache/ratis/logservice/tool/VerificationTool.java [272:296]


      String parseValue(ByteBuffer buff) {
        if (!buff.hasArray()) {
          throw new IllegalArgumentException("Require a ByteBuffer with a backing array");
        }
        if (valueSize == -1) {
          return new String(buff.array(), buff.arrayOffset(), buff.remaining(), StandardCharsets.UTF_8);
        }
        int length = buff.limit() - buff.arrayOffset();
        byte[] value = new byte[length];
        System.arraycopy(buff.array(), buff.arrayOffset(), value, 0, length);

        int dividerOffset = -1;
        for (int i = 0; i < value.length; i++) {
          if (value[i] == DIVIDER_BYTE) {
            dividerOffset = i;
            break;
          }
        }
        // We didn't have enough space to write the divider, return all of the bytes
        if (dividerOffset < 0) {
          return new String(value, StandardCharsets.UTF_8);
        }

        return new String(value, 0, dividerOffset, StandardCharsets.UTF_8);
      }