ByteBuffer createValue()

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


      ByteBuffer createValue(String prefix) {
        if (valueSize == -1) {
          return ByteBuffer.wrap(prefix.getBytes(StandardCharsets.UTF_8));
        }
        byte[] value = new byte[valueSize];
        byte[] prefixBytes = prefix.getBytes(StandardCharsets.UTF_8);
        // Write as much of the prefix as possible
        if (prefixBytes.length > valueSize) {
          System.arraycopy(prefixBytes, 0, value, 0, valueSize);
          return ByteBuffer.wrap(value);
        }

        // Write the full prefix
        System.arraycopy(prefixBytes, 0, value, 0, prefixBytes.length);
        int bytesWritten = prefixBytes.length;

        // Write the divider (but only if we can write the whole thing)
        if (bytesWritten + 1 > valueSize) {
          return ByteBuffer.wrap(value);
        }

        value[bytesWritten] = DIVIDER_BYTE;
        bytesWritten += 1;

        // Generate random data to pad the value
        int bytesToGenerate = valueSize - bytesWritten;
        Random r = new Random();
        byte[] suffix = new byte[bytesToGenerate];
        r.nextBytes(suffix);
        System.arraycopy(suffix, 0, value, bytesWritten, suffix.length);

        return ByteBuffer.wrap(value);
      }