@Override public boolean remove(final Transaction txn, final byte[] tkey, final byte[] tvalue) throws IOException { final byte[] key = inverseTransformKey(tkey); if (key == null) { return tvalue == null; } final byte[] value = mTransformer.inverseTransformValue(tvalue, key, tkey); if (txn == null || txn.lockMode() == LockMode.UNSAFE) { return mSource.remove(txn, key, value); } return condUpdate(txn, key, value, null); }
@Override public boolean remove(final Transaction txn, final byte[] tkey, final byte[] tvalue) throws IOException { final byte[] key = inverseTransformKey(tkey); if (key == null) { return tvalue == null; } final byte[] value = mTransformer.inverseTransformValue(tvalue, key, tkey); if (txn == null || txn.lockMode() == LockMode.UNSAFE) { return mSource.remove(txn, key, value); } return condUpdate(txn, key, value, null); }
@Override public boolean update(final Transaction txn, final byte[] tkey, final byte[] oldTValue, final byte[] newTValue) throws IOException { final byte[] key = inverseTransformKey(tkey); if (key == null) { if (oldTValue == null) { if (newTValue == null) { return true; } throw fail(); } return false; } final byte[] oldValue = mTransformer.inverseTransformValue(oldTValue, key, tkey); final byte[] newValue = mTransformer.inverseTransformValue(newTValue, key, tkey); if (txn == null || txn.lockMode() == LockMode.UNSAFE) { return mSource.update(txn, key, oldValue, newValue); } return condUpdate(txn, key, oldValue, newValue); }
@Override public boolean update(final Transaction txn, final byte[] tkey, final byte[] oldTValue, final byte[] newTValue) throws IOException { final byte[] key = inverseTransformKey(tkey); if (key == null) { if (oldTValue == null) { if (newTValue == null) { return true; } throw fail(); } return false; } final byte[] oldValue = mTransformer.inverseTransformValue(oldTValue, key, tkey); final byte[] newValue = mTransformer.inverseTransformValue(newTValue, key, tkey); if (txn == null || txn.lockMode() == LockMode.UNSAFE) { return mSource.update(txn, key, oldValue, newValue); } return condUpdate(txn, key, oldValue, newValue); }