Java Code Examples for java.nio.ByteBuffer#rewind()

The following examples show how to use java.nio.ByteBuffer#rewind() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: NIOChannelReadBuffer.java    From swift-k with Apache License 2.0 6 votes vote down vote up
public void doStuff(boolean last, ByteBuffer b, Buffers.Allocation alloc) {
	synchronized(this) {
		if (closed) {
		    if (logger.isInfoEnabled()) {
		        logger.info("Transfer done. De-allocating one unused buffer");
		    }
		    if (alloc != null) {
		        buffers.free(alloc);
		    }
			return;
		}
	}
    if (alloc != null) {
        bufferCreated(alloc);
    }
    try {
        channel.read(b);
        b.limit(b.position());
        b.rewind();
        bufferRead(b);
    }
    catch (Exception ex) {
        error(b, ex);
    }
}
 
Example 2
Source File: GeoWaveKey.java    From geowave with Apache License 2.0 6 votes vote down vote up
public static byte[] getCompositeId(final GeoWaveKey key) {
  if ((key.getSortKey() == null) && (key.getPartitionKey() == null)) {
    // this is a data ID key
    return key.getDataId();
  }
  final ByteBuffer buffer =
      ByteBuffer.allocate(
          (key.getPartitionKey() == null ? 0 : key.getPartitionKey().length)
              + key.getSortKey().length
              + key.getDataId().length
              + VarintUtils.unsignedIntByteLength(key.getAdapterId() & 0xFFFF)
              + VarintUtils.unsignedIntByteLength(key.getDataId().length)
              + VarintUtils.unsignedIntByteLength(key.getNumberOfDuplicates()));
  if (key.getPartitionKey() != null) {
    buffer.put(key.getPartitionKey());
  }
  buffer.put(key.getSortKey());
  VarintUtils.writeUnsignedIntReversed(key.getAdapterId() & 0xFFFF, buffer);
  buffer.put(key.getDataId());
  VarintUtils.writeUnsignedIntReversed(key.getDataId().length, buffer);
  VarintUtils.writeUnsignedIntReversed(key.getNumberOfDuplicates(), buffer);
  buffer.rewind();
  return buffer.array();
}
 
Example 3
Source File: TestXUnsignedVarint64.java    From tracingplane-java with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
@Test
public void testReadUint64() throws AtomLayerException {
    ByteBuffer b = ByteBuffer.allocate(8);

    Random r = new Random(1);
    for (int test_number = 0; test_number < 1000; test_number++) {
        long value = r.nextLong();

        b.rewind();
        b.putLong(value);

        for (int i = 1; i <= 8; i++) {
            b.rewind();
            assertEquals((value >>> (8 * (8 - i))), UnsignedLexVarint.readUInt64(b, i));
        }
    }
}
 
Example 4
Source File: StructArrayStructBuilderTest.java    From terracotta-platform with Apache License 2.0 6 votes vote down vote up
@Test
public void testDump() throws Exception {
  ByteBuffer bb = struct.encoder()
      .string("name", "joe")
      .structs("mapEntry").add()
        .string("key", "1")
        .enm("type", Type.STRING)
        .string("string", "one")
        .end()
      .add()
        .string("key", "2")
        .string("string", "two")
        .end()
      .end()
      .int64("id", 999L)
      .encode();

  bb.rewind();

  struct.dump(bb, new PrintStream(new ByteArrayOutputStream()));
}
 
Example 5
Source File: AssetEditor.java    From aapt with Apache License 2.0 6 votes vote down vote up
/**
 * Parses the next UTF-16 string
 * 
 * @return an UTF-8 string
 * @throws IOException
 *             if error occurred
 */
public String parseUtf16String() throws IOException {
    int nchars = readShort();
    if ((nchars & 0x8000) != 0) {
        nchars = ((nchars & 0x7fff) << 16) | (readShort() & 0xffff);
    }

    final ByteBuffer data = ByteBuffer.allocate(nchars * 2).order(ByteOrder.LITTLE_ENDIAN);
    read(data);
    data.rewind();

    final int terminator = readChar();
    if (0 != terminator) {
        throw new AaptException(String.format("Zero terminator expected at position %d, buf 0x%04x found", (tell() - 2), terminator));
    }

    return StandardCharsets.UTF_16LE.decode(data).toString();
}
 
Example 6
Source File: ContainerManagerImpl.java    From big-c with Apache License 2.0 6 votes vote down vote up
private Credentials parseCredentials(ContainerLaunchContext launchContext)
    throws IOException {
  Credentials credentials = new Credentials();
  // //////////// Parse credentials
  ByteBuffer tokens = launchContext.getTokens();

  if (tokens != null) {
    DataInputByteBuffer buf = new DataInputByteBuffer();
    tokens.rewind();
    buf.reset(tokens);
    credentials.readTokenStorageStream(buf);
    if (LOG.isDebugEnabled()) {
      for (Token<? extends TokenIdentifier> tk : credentials.getAllTokens()) {
        LOG.debug(tk.getService() + " = " + tk.toString());
      }
    }
  }
  // //////////// End of parsing credentials
  return credentials;
}
 
Example 7
Source File: MonoclePixels.java    From Monocle with GNU General Public License v2.0 6 votes vote down vote up
@Override protected void _fillDirectByteBuffer(ByteBuffer bb) {
    if (this.bytes != null) {
        this.bytes.rewind();
        if (this.bytes.isDirect()) {
            _copyPixels(bb, this.bytes, getWidth() * getHeight());
        } else {
            bb.put(this.bytes);
        }
        this.bytes.rewind();
    } else {
        this.ints.rewind();
        if (this.ints.isDirect()) {
            _copyPixels(bb, this.ints, getWidth() * getHeight());
        } else {
            for (int i = 0; i < this.ints.capacity(); i++) {
                int data = this.ints.get();
                bb.put((byte)((data) & 0xff));
                bb.put((byte)((data >> 8) & 0xff));
                bb.put((byte)((data >> 16) & 0xff));
                bb.put((byte)((data >> 24) & 0xff));
            }
        }
        this.ints.rewind();
    }
    bb.rewind();
}
 
Example 8
Source File: NativeSecp256k1.java    From green_android with GNU General Public License v3.0 5 votes vote down vote up
/**
 * libsecp256k1 Compute Pubkey - computes public key from secret key
 *
 * @param seckey ECDSA Secret key, 32 bytes
 * @return pubkey ECDSA Public key, 33 or 65 bytes
 */
// TODO add a 'compressed' arg
public static byte[] computePubkey(byte[] seckey) throws AssertFailException {
    Preconditions.checkArgument(seckey.length == 32);

    ByteBuffer byteBuff = nativeECDSABuffer.get();
    if (byteBuff == null || byteBuff.capacity() < seckey.length) {
        byteBuff = ByteBuffer.allocateDirect(seckey.length);
        byteBuff.order(ByteOrder.nativeOrder());
        nativeECDSABuffer.set(byteBuff);
    }
    byteBuff.rewind();
    byteBuff.put(seckey);

    byte[][] retByteArray;

    r.lock();
    try {
        retByteArray = secp256k1_ec_pubkey_create(byteBuff, Secp256k1Context.getContext());
    } finally {
        r.unlock();
    }

    byte[] pubArr = retByteArray[0];
    int pubLen = new BigInteger(new byte[] { retByteArray[1][0] }).intValue();
    int retVal = new BigInteger(new byte[] { retByteArray[1][1] }).intValue();

    assertEquals(pubArr.length, pubLen, "Got bad pubkey length.");

    return retVal == 0 ? new byte[0] : pubArr;
}
 
Example 9
Source File: HeapBufferTest.java    From atomix with Apache License 2.0 5 votes vote down vote up
@Test
public void testByteBufferToHeapBuffer() {
  ByteBuffer byteBuffer = ByteBuffer.allocate(8);
  byteBuffer.putLong(10);
  byteBuffer.rewind();

  HeapBuffer directBuffer = HeapBuffer.wrap(byteBuffer.array());
  assertEquals(directBuffer.readLong(), byteBuffer.getLong());
}
 
Example 10
Source File: DynamoDbEncryptor.java    From aws-dynamodb-encryption-java with Apache License 2.0 5 votes vote down vote up
private void actualDecryption(Map<String, AttributeValue> itemAttributes,
        Map<String, Set<EncryptionFlags>> attributeFlags, SecretKey encryptionKey,
        Map<String, String> materialDescription) throws GeneralSecurityException {
    final String encryptionMode = encryptionKey != null ?  encryptionKey.getAlgorithm() +
                materialDescription.get(symmetricEncryptionModeHeader) : null;
    Cipher cipher = null;
    int blockSize = -1;

    for (Map.Entry<String, AttributeValue> entry: itemAttributes.entrySet()) {
        Set<EncryptionFlags> flags = attributeFlags.get(entry.getKey());
        if (flags != null && flags.contains(EncryptionFlags.ENCRYPT)) {
            if (!flags.contains(EncryptionFlags.SIGN)) {
                throw new IllegalArgumentException("All encrypted fields must be signed. Bad field: " + entry.getKey());
            }
            ByteBuffer plainText;
            ByteBuffer cipherText = entry.getValue().b().asByteBuffer();
            cipherText.rewind();
            if (encryptionKey instanceof DelegatedKey) {
                plainText = ByteBuffer.wrap(((DelegatedKey)encryptionKey).decrypt(toByteArray(cipherText), null, encryptionMode));
            } else {
                if (cipher == null) {
                    blockSize = getBlockSize(encryptionMode);
                    cipher = Cipher.getInstance(encryptionMode);
                }
                byte[] iv = new byte[blockSize];
                cipherText.get(iv);
                cipher.init(Cipher.DECRYPT_MODE, encryptionKey, new IvParameterSpec(iv), Utils.getRng());
                plainText = ByteBuffer.allocate(cipher.getOutputSize(cipherText.remaining()));
                cipher.doFinal(cipherText, plainText);
                plainText.rewind();
            }
            entry.setValue(AttributeValueMarshaller.unmarshall(plainText));
        }
    }
}
 
Example 11
Source File: ImageUtils.java    From PapARt with GNU Lesser General Public License v3.0 5 votes vote down vote up
public static void byteBufferRGBtoARGB(ByteBuffer bgr, ByteBuffer argb) {
    byte[] tmpArr = new byte[3];
    for (int i = 0; i < bgr.capacity(); i += 3) {
        bgr.get(tmpArr);
        argb.put(tmpArr[0]);
        argb.put(tmpArr[1]);
        argb.put(tmpArr[2]);
        argb.put((byte) 255);
    }
    argb.rewind();
}
 
Example 12
Source File: DirectBuffers.java    From ezdb with Apache License 2.0 5 votes vote down vote up
public static byte[] array(ByteBuffer buffer) {
	synchronized (buffer) {
		byte[] bytes = new byte[buffer.remaining()];
		buffer.get(bytes);
		buffer.rewind();
		return bytes;
	}
}
 
Example 13
Source File: CorruptedTreeFailureHandlingTest.java    From ignite with Apache License 2.0 5 votes vote down vote up
/** {@inheritDoc} */
@Override public FileIO create(File file, OpenOption... modes) throws IOException {
    FileIO fileIO = delegateFactory.create(file, modes);

    return new FileIODecorator(fileIO) {
        @Override public int write(ByteBuffer srcBuf, long position) throws IOException {
            int type = PageIO.getType(srcBuf);

            AbstractDataLeafIO dataLeafIO = null;

            if (type == PageIO.T_DATA_REF_LEAF)
                dataLeafIO = DataLeafIO.VERSIONS.latest();

            if (type == PageIO.T_DATA_REF_MVCC_LEAF)
                dataLeafIO = MvccDataLeafIO.VERSIONS.latest();

            if (dataLeafIO != null) {
                long pageAddr = GridUnsafe.bufferAddress(srcBuf);

                int itemIdx = dataLeafIO.getCount(pageAddr) - 1;

                linkRef.set(dataLeafIO.getLink(pageAddr, itemIdx));

                fileRef.set(file);
            }

            srcBuf.rewind();

            return super.write(srcBuf, position);
        }
    };
}
 
Example 14
Source File: TestXUnsignedVarint64.java    From tracingplane-java with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
@Test
public void testUnsignedVarint64Comparison() {
    byte[] imax = UnsignedLexVarint.writeVarUInt64(Long.MAX_VALUE);
    byte[] imax2 = UnsignedLexVarint.writeVarUInt64(-1);

    assertTrue(Lexicographic.compare(imax, imax2) < 0);

    int numtests = 100;
    for (int sizea = 1; sizea <= 9; sizea++) {
        ByteBuffer bufa = ByteBuffer.allocate(sizea);
        for (int sizeb = sizea; sizeb <= 9; sizeb++) {
            ByteBuffer bufb = ByteBuffer.allocate(sizeb);
            for (int i = 0; i < numtests; i++) {
                long a = generate(sizea);
                long b = generate(sizeb);

                bufa.rewind();
                assertEquals(sizea, UnsignedLexVarint.writeLexVarUInt64(bufa, a));

                bufb.rewind();
                assertEquals(sizeb, UnsignedLexVarint.writeLexVarUInt64(bufb, b));

                boolean a_smaller = a >= 0 ? (b < 0 || a < b) : (b < 0 && a < b);

                assertEquals(a == b, Lexicographic.compare(bufa.array(), bufb.array()) == 0);
                assertEquals(a_smaller, Lexicographic.compare(bufa.array(), bufb.array()) < 0);
                assertEquals(a_smaller, Lexicographic.compare(bufb.array(), bufa.array()) > 0);
            }
        }
    }
}
 
Example 15
Source File: Fp64Test.java    From terracotta-platform with Apache License 2.0 5 votes vote down vote up
@Test
public void testStructWithFp64() throws Exception {
  Struct struct = StructBuilder.newStructBuilder()
      .fp64("x", 1)
      .fp64s("y", 2)
      .fp64("z", 3)
      .build();

  ByteBuffer encoded = struct.encoder()
      .fp64("x", -1.0)
      .fp64s("y")
        .value(1.0)
        .value(-0.123)
        .value(Double.NaN)
        .value(Double.NEGATIVE_INFINITY)
        .value(Double.POSITIVE_INFINITY)
      .end()
      .fp64("z", 2.0)
      .encode();

  encoded.rewind();

  StructDecoder<Void> decoder = struct.decoder(encoded);

  assertThat(decoder.fp64("x"), is(-1.0));
  ArrayDecoder<Double, StructDecoder<Void>> ad = decoder.fp64s("y");
  assertThat(ad.length(), is(5));
  assertThat(ad.value(), is(1.0));
  assertThat(ad.value(), is(-0.123));
  assertThat(ad.value(), is(Double.NaN));
  assertThat(ad.value(), is(Double.NEGATIVE_INFINITY));
  assertThat(ad.value(), is(Double.POSITIVE_INFINITY));
  ad.end();
  assertThat(decoder.fp64("z"), is(2.0));
}
 
Example 16
Source File: BTChipTransportAndroidHID.java    From xmrwallet with Apache License 2.0 5 votes vote down vote up
@Override
public byte[] exchange(byte[] command) {
    ByteArrayOutputStream response = new ByteArrayOutputStream();
    byte[] responseData = null;
    int offset = 0;
    if (debug) {
        Timber.d("=> %s", Dump.dump(command));
    }
    command = LedgerHelper.wrapCommandAPDU(LEDGER_DEFAULT_CHANNEL, command, HID_BUFFER_SIZE);
    UsbRequest requestOut = new UsbRequest();
    requestOut.initialize(connection, out);
    while (offset != command.length) {
        int blockSize = (command.length - offset > HID_BUFFER_SIZE ? HID_BUFFER_SIZE : command.length - offset);
        System.arraycopy(command, offset, transferBuffer, 0, blockSize);
        requestOut.queue(ByteBuffer.wrap(transferBuffer), HID_BUFFER_SIZE);
        connection.requestWait();
        offset += blockSize;
    }
    requestOut.close();
    ByteBuffer responseBuffer = ByteBuffer.allocate(HID_BUFFER_SIZE);
    UsbRequest requestIn = new UsbRequest();
    requestIn.initialize(connection, in);
    while ((responseData = LedgerHelper.unwrapResponseAPDU(LEDGER_DEFAULT_CHANNEL, response.toByteArray(), HID_BUFFER_SIZE)) == null) {
        responseBuffer.clear();
        requestIn.queue(responseBuffer, HID_BUFFER_SIZE);
        connection.requestWait();
        responseBuffer.rewind();
        responseBuffer.get(transferBuffer, 0, HID_BUFFER_SIZE);
        response.write(transferBuffer, 0, HID_BUFFER_SIZE);
    }
    requestIn.close();
    if (debug) {
        Timber.d("<= %s", Dump.dump(responseData));
    }
    return responseData;
}
 
Example 17
Source File: AggregateImplementation.java    From hbase with Apache License 2.0 4 votes vote down vote up
/**
 * Gives the row count for the given column family and column qualifier, in
 * the given row range as defined in the Scan object.
 */
@Override
public void getRowNum(RpcController controller, AggregateRequest request,
        RpcCallback<AggregateResponse> done) {
  AggregateResponse response = null;
  long counter = 0L;
  List<Cell> results = new ArrayList<>();
  InternalScanner scanner = null;
  try {
    Scan scan = ProtobufUtil.toScan(request.getScan());
    byte[][] colFamilies = scan.getFamilies();
    byte[] colFamily = colFamilies != null ? colFamilies[0] : null;
    NavigableSet<byte[]> qualifiers = colFamilies != null ?
        scan.getFamilyMap().get(colFamily) : null;
    byte[] qualifier = null;
    if (qualifiers != null && !qualifiers.isEmpty()) {
      qualifier = qualifiers.pollFirst();
    }
    if (scan.getFilter() == null && qualifier == null) {
      scan.setFilter(new FirstKeyOnlyFilter());
    }
    scanner = env.getRegion().getScanner(scan);
    boolean hasMoreRows = false;
    do {
      hasMoreRows = scanner.next(results);
      if (results.size() > 0) {
        counter++;
      }
      results.clear();
    } while (hasMoreRows);
    ByteBuffer bb = ByteBuffer.allocate(8).putLong(counter);
    bb.rewind();
    response = AggregateResponse.newBuilder().addFirstPart(
        ByteString.copyFrom(bb)).build();
  } catch (IOException e) {
    CoprocessorRpcUtils.setControllerException(controller, e);
  } finally {
    if (scanner != null) {
      try {
        scanner.close();
      } catch (IOException ignored) {}
    }
  }
  log.info("Row counter from this region is "
      + env.getRegion().getRegionInfo().getRegionNameAsString() + ": " + counter);
  done.run(response);
}
 
Example 18
Source File: STLMeshDecoder.java    From cineast with MIT License 4 votes vote down vote up
/**
 * Reads a binary STL file.
 *
 * @param is InputStream to read from.
 * @param skip Number of bytes to skip before reading the STL file.
 * @return Mesh
 * @throws IOException If an error occurs during reading.
 */
private Mesh readBinary(InputStream is, int skip) throws IOException {
    /* Prepare a ByteBuffer to read the rest of the STL file. */
    byte[] bytes = new byte[50];
    ByteBuffer buffer = ByteBuffer.wrap(bytes);
    buffer.order(ByteOrder.LITTLE_ENDIAN);

    /* Skip the STL header! */
    is.skip(skip);

    /* Read the bytes for the size (unsigned 32 bit int, little-endian). */
    byte[] sizeBytes = new byte[4];
    is.read(sizeBytes, 0, 4);
    long triangles = ((sizeBytes[0] & 0xFF)) | ((sizeBytes[1] & 0xFF) << 8) | ((sizeBytes[2] & 0xFF) << 16) | ((sizeBytes[3] & 0xFF) << 24);

    /* TODO: Properly handle models whose triangles > MAX_TRIANGLES. */
    if (triangles <= 0) {
        LOGGER.error("The number of triangles in the Mesh seems to be smaller than zero. This STL file is probably corrupt!");
        return null;
    } else if (triangles > MAX_TRIANGLES) {
        LOGGER.error("The number of triangles in the Mesh exceeds the limit that can currently be processed by STLMeshDecoder. The Mesh will be downsampled!");
        return null;
    }

    /* Prepare Mesh. */
    Mesh mesh = new Mesh((int)triangles, (int)triangles);

    /* Prepare helper structures. */
    TObjectIntHashMap<Vector3f> vertexBuffer = new TObjectIntHashMap<>();
    int index = 0;
    int[] vertexindices = new int[3];

    /* Now add all triangles. */
    for (int i=0; i<triangles; i++) {
        /* Ready 48 bytes from the stream. */
        buffer.rewind();
        is.read(bytes);

        /* Read and ignore three floats. */
        buffer.getFloat();
        buffer.getFloat();
        buffer.getFloat();

        /* Add the vertices and the vertex-normal to the mesh. */
        for (int vidx = 0; vidx < 3; vidx++) {
            Vector3f vertex = new Vector3f(buffer.getFloat(), buffer.getFloat(), buffer.getFloat());
            if (!vertexBuffer.containsKey(vertex)) {
                mesh.addVertex(vertex);
                vertexBuffer.put(vertex, index);
                index++;
            }
            vertexindices[vidx] = vertexBuffer.get(vertex);
        }

        /* Add a new face to the Mesh. */
        if (!mesh.addFace(new Vector3i(vertexindices[0], vertexindices[1], vertexindices[2]))) {
            LOGGER.warn("Could not add face {}/{}/{} because index points to non-existing vertex.", vertexindices[0], vertexindices[1], vertexindices[2]);
        }
    }

    /* Closes the InputStream. */
    is.close();
    return mesh;
}
 
Example 19
Source File: PageChannel.java    From jackcess with Apache License 2.0 4 votes vote down vote up
/**
 * Write a page (or part of a page) to disk
 * @param page Page to write
 * @param pageNumber Page number to write the page to
 * @param pageOffset offset within the page at which to start writing the
 *                   page data
 */
public void writePage(ByteBuffer page, int pageNumber, int pageOffset)
  throws IOException
{
  assertWriting();
  validatePageNumber(pageNumber);

  page.rewind().position(pageOffset);

  int writeLen = page.remaining();
  if((writeLen + pageOffset) > getFormat().PAGE_SIZE) {
    throw new IllegalArgumentException(
        "Page buffer is too large, size " + (writeLen + pageOffset));
  }

  ByteBuffer encodedPage = page;
  if(pageNumber == 0) {
    // re-mask header
    applyHeaderMask(page);
  } else {

    if(!_codecHandler.canEncodePartialPage()) {
      if((pageOffset > 0) && (writeLen < getFormat().PAGE_SIZE)) {

        // current codec handler cannot encode part of a page, so need to
        // copy the modified part into the current page contents in a temp
        // buffer so that we can encode the entire page
        ByteBuffer fullPage = _fullPageEncodeBufferH.setPage(
            this, pageNumber);

        // copy the modified part to the full page
        fullPage.position(pageOffset);
        fullPage.put(page);
        fullPage.rewind();

        // reset so we can write the whole page
        page = fullPage;
        pageOffset = 0;
        writeLen = getFormat().PAGE_SIZE;

      } else {

        _fullPageEncodeBufferH.possiblyInvalidate(pageNumber, null);
      }
    }

    // re-encode page
    encodedPage = _codecHandler.encodePage(page, pageNumber, pageOffset);

    // reset position/limit in case they were affected by encoding
    encodedPage.position(pageOffset).limit(pageOffset + writeLen);
  }

  try {
    _channel.write(encodedPage, (getPageOffset(pageNumber) + pageOffset));
  } finally {
    if(pageNumber == 0) {
      // de-mask header
      applyHeaderMask(page);
    }
  }
}
 
Example 20
Source File: AlignedJournalImplTest.java    From activemq-artemis with Apache License 2.0 2 votes vote down vote up
@Test
public void testReloadInvalidCheckSizeOnTransaction() throws Exception {
   final int JOURNAL_SIZE = 2000;

   setupAndLoadJournal(JOURNAL_SIZE, 100);

   Assert.assertEquals(2, factory.listFiles("tt").size());

   Assert.assertEquals(0, records.size());
   Assert.assertEquals(0, transactions.size());

   for (int i = 0; i < 2; i++) {
      journalImpl.appendAddRecordTransactional(1L, i, (byte) 0, new SimpleEncoding(1, (byte) 15));
   }

   journalImpl.appendCommitRecord(1L, false);

   journalImpl.debugWait();

   log.debug("Files = " + factory.listFiles("tt"));

   SequentialFile file = factory.createSequentialFile("tt-1.tt");

   file.open();

   ByteBuffer buffer = ByteBuffer.allocate(100);

   // Messing up with the first record (removing the position)
   file.position(100);

   file.read(buffer);

   // jumping RecordType, FileId, TransactionID, RecordID, VariableSize,
   // RecordType, RecordBody (that we know it is 1 )
   buffer.position(1 + 4 + 8 + 8 + 4 + 1 + 1 + 1);

   int posCheckSize = buffer.position();

   Assert.assertEquals(JournalImpl.SIZE_ADD_RECORD_TX + 2, buffer.getInt());

   buffer.position(posCheckSize);

   buffer.putInt(-1);

   buffer.rewind();

   // Changing the check bufferSize, so reload will ignore this record
   file.position(100);

   file.writeDirect(buffer, true);

   file.close();

   setupAndLoadJournal(JOURNAL_SIZE, 100);

   Assert.assertEquals(0, records.size());

   journalImpl.checkReclaimStatus();

   Assert.assertEquals(0, journalImpl.getDataFilesCount());

   Assert.assertEquals(2, factory.listFiles("tt").size());

}