/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved. * */ package com.sleepycat.collections.test; import com.sleepycat.bind.EntityBinding; import com.sleepycat.bind.RecordNumberBinding; import com.sleepycat.db.DatabaseEntry; /** * @author Mark Hayes */ class TestEntityBinding implements EntityBinding { private boolean isRecNum; TestEntityBinding(boolean isRecNum) { this.isRecNum = isRecNum; } public Object entryToObject(DatabaseEntry key, DatabaseEntry value) { byte keyByte; if (isRecNum) { if (key.getSize() != 4) { throw new IllegalStateException(); } keyByte = (byte) RecordNumberBinding.entryToRecordNumber(key); } else { if (key.getSize() != 1) { throw new IllegalStateException(); } keyByte = key.getData()[key.getOffset()]; } if (value.getSize() != 1) { throw new IllegalStateException(); } byte valByte = value.getData()[value.getOffset()]; return new TestEntity(keyByte, valByte); } public void objectToKey(Object object, DatabaseEntry key) { byte val = (byte) ((TestEntity) object).key; if (isRecNum) { RecordNumberBinding.recordNumberToEntry(val, key); } else { key.setData(new byte[] { val }, 0, 1); } } public void objectToData(Object object, DatabaseEntry value) { byte val = (byte) ((TestEntity) object).value; value.setData(new byte[] { val }, 0, 1); } }