mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-16 04:39:54 +01:00
Use a lock to ensure transaction isolation. #272
This commit is contained in:
@@ -45,8 +45,9 @@ public interface DatabaseComponent {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts a new transaction and returns an object representing it.
|
* Starts a new transaction and returns an object representing it.
|
||||||
|
* @param readOnly true if the transaction will only be used for reading.
|
||||||
*/
|
*/
|
||||||
Transaction startTransaction() throws DbException;
|
Transaction startTransaction(boolean readOnly) throws DbException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ends a transaction. If the transaction is marked as complete, the
|
* Ends a transaction. If the transaction is marked as complete, the
|
||||||
|
|||||||
@@ -12,12 +12,14 @@ import java.util.List;
|
|||||||
public class Transaction {
|
public class Transaction {
|
||||||
|
|
||||||
private final Object txn;
|
private final Object txn;
|
||||||
|
private final boolean readOnly;
|
||||||
|
|
||||||
private List<Event> events = null;
|
private List<Event> events = null;
|
||||||
private boolean complete = false;
|
private boolean complete = false;
|
||||||
|
|
||||||
public Transaction(Object txn) {
|
public Transaction(Object txn, boolean readOnly) {
|
||||||
this.txn = txn;
|
this.txn = txn;
|
||||||
|
this.readOnly = readOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -28,6 +30,13 @@ public class Transaction {
|
|||||||
return txn;
|
return txn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the transaction can only be used for reading.
|
||||||
|
*/
|
||||||
|
public boolean isReadOnly() {
|
||||||
|
return readOnly;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attaches an event to be broadcast when the transaction has been
|
* Attaches an event to be broadcast when the transaction has been
|
||||||
* committed.
|
* committed.
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class ClientHelperImpl implements ClientHelper {
|
|||||||
@Override
|
@Override
|
||||||
public void addLocalMessage(Message m, ClientId c, BdfDictionary metadata,
|
public void addLocalMessage(Message m, ClientId c, BdfDictionary metadata,
|
||||||
boolean shared) throws DbException, FormatException {
|
boolean shared) throws DbException, FormatException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
addLocalMessage(txn, m, c, metadata, shared);
|
addLocalMessage(txn, m, c, metadata, shared);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -89,7 +89,7 @@ class ClientHelperImpl implements ClientHelper {
|
|||||||
public BdfDictionary getMessageAsDictionary(MessageId m) throws DbException,
|
public BdfDictionary getMessageAsDictionary(MessageId m) throws DbException,
|
||||||
FormatException {
|
FormatException {
|
||||||
BdfDictionary dictionary;
|
BdfDictionary dictionary;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
dictionary = getMessageAsDictionary(txn, m);
|
dictionary = getMessageAsDictionary(txn, m);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -112,7 +112,7 @@ class ClientHelperImpl implements ClientHelper {
|
|||||||
public BdfList getMessageAsList(MessageId m) throws DbException,
|
public BdfList getMessageAsList(MessageId m) throws DbException,
|
||||||
FormatException {
|
FormatException {
|
||||||
BdfList list;
|
BdfList list;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
list = getMessageAsList(txn, m);
|
list = getMessageAsList(txn, m);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -135,7 +135,7 @@ class ClientHelperImpl implements ClientHelper {
|
|||||||
public BdfDictionary getGroupMetadataAsDictionary(GroupId g)
|
public BdfDictionary getGroupMetadataAsDictionary(GroupId g)
|
||||||
throws DbException, FormatException {
|
throws DbException, FormatException {
|
||||||
BdfDictionary dictionary;
|
BdfDictionary dictionary;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
dictionary = getGroupMetadataAsDictionary(txn, g);
|
dictionary = getGroupMetadataAsDictionary(txn, g);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -156,7 +156,7 @@ class ClientHelperImpl implements ClientHelper {
|
|||||||
public BdfDictionary getMessageMetadataAsDictionary(MessageId m)
|
public BdfDictionary getMessageMetadataAsDictionary(MessageId m)
|
||||||
throws DbException, FormatException {
|
throws DbException, FormatException {
|
||||||
BdfDictionary dictionary;
|
BdfDictionary dictionary;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
dictionary = getMessageMetadataAsDictionary(txn, m);
|
dictionary = getMessageMetadataAsDictionary(txn, m);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -177,7 +177,7 @@ class ClientHelperImpl implements ClientHelper {
|
|||||||
public Map<MessageId, BdfDictionary> getMessageMetatataAsDictionary(
|
public Map<MessageId, BdfDictionary> getMessageMetatataAsDictionary(
|
||||||
GroupId g) throws DbException, FormatException {
|
GroupId g) throws DbException, FormatException {
|
||||||
Map<MessageId, BdfDictionary> map;
|
Map<MessageId, BdfDictionary> map;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
map = getMessageMetadataAsDictionary(txn, g);
|
map = getMessageMetadataAsDictionary(txn, g);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -201,7 +201,7 @@ class ClientHelperImpl implements ClientHelper {
|
|||||||
@Override
|
@Override
|
||||||
public void mergeGroupMetadata(GroupId g, BdfDictionary metadata)
|
public void mergeGroupMetadata(GroupId g, BdfDictionary metadata)
|
||||||
throws DbException, FormatException {
|
throws DbException, FormatException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
mergeGroupMetadata(txn, g, metadata);
|
mergeGroupMetadata(txn, g, metadata);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -219,7 +219,7 @@ class ClientHelperImpl implements ClientHelper {
|
|||||||
@Override
|
@Override
|
||||||
public void mergeMessageMetadata(MessageId m, BdfDictionary metadata)
|
public void mergeMessageMetadata(MessageId m, BdfDictionary metadata)
|
||||||
throws DbException, FormatException {
|
throws DbException, FormatException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
mergeMessageMetadata(txn, m, metadata);
|
mergeMessageMetadata(txn, m, metadata);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ class ContactManagerImpl implements ContactManager, RemoveIdentityHook {
|
|||||||
long timestamp, boolean alice, boolean active)
|
long timestamp, boolean alice, boolean active)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
ContactId c;
|
ContactId c;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
c = db.addContact(txn, remote, local, active);
|
c = db.addContact(txn, remote, local, active);
|
||||||
keyManager.addContact(txn, c, master, timestamp, alice);
|
keyManager.addContact(txn, c, master, timestamp, alice);
|
||||||
@@ -68,7 +68,7 @@ class ContactManagerImpl implements ContactManager, RemoveIdentityHook {
|
|||||||
@Override
|
@Override
|
||||||
public Contact getContact(ContactId c) throws DbException {
|
public Contact getContact(ContactId c) throws DbException {
|
||||||
Contact contact;
|
Contact contact;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
contact = db.getContact(txn, c);
|
contact = db.getContact(txn, c);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -81,7 +81,7 @@ class ContactManagerImpl implements ContactManager, RemoveIdentityHook {
|
|||||||
@Override
|
@Override
|
||||||
public Collection<Contact> getActiveContacts() throws DbException {
|
public Collection<Contact> getActiveContacts() throws DbException {
|
||||||
Collection<Contact> contacts;
|
Collection<Contact> contacts;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
contacts = db.getContacts(txn);
|
contacts = db.getContacts(txn);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -95,7 +95,7 @@ class ContactManagerImpl implements ContactManager, RemoveIdentityHook {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeContact(ContactId c) throws DbException {
|
public void removeContact(ContactId c) throws DbException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
removeContact(txn, c);
|
removeContact(txn, c);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -107,7 +107,7 @@ class ContactManagerImpl implements ContactManager, RemoveIdentityHook {
|
|||||||
@Override
|
@Override
|
||||||
public void setContactActive(ContactId c, boolean active)
|
public void setContactActive(ContactId c, boolean active)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setContactActive(txn, c, active);
|
db.setContactActive(txn, c, active);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
|
|||||||
@@ -59,6 +59,8 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.concurrent.locks.ReadWriteLock;
|
||||||
|
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -78,6 +80,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
private final EventBus eventBus;
|
private final EventBus eventBus;
|
||||||
private final ShutdownManager shutdown;
|
private final ShutdownManager shutdown;
|
||||||
private final AtomicBoolean closed = new AtomicBoolean(false);
|
private final AtomicBoolean closed = new AtomicBoolean(false);
|
||||||
|
private final ReadWriteLock lock = new ReentrantReadWriteLock(true);
|
||||||
|
|
||||||
private volatile int shutdownHandle = -1;
|
private volatile int shutdownHandle = -1;
|
||||||
|
|
||||||
@@ -115,18 +118,33 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
db.close();
|
db.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Transaction startTransaction() throws DbException {
|
public Transaction startTransaction(boolean readOnly) throws DbException {
|
||||||
return new Transaction(db.startTransaction());
|
if (readOnly) lock.readLock().lock();
|
||||||
|
else lock.writeLock().lock();
|
||||||
|
try {
|
||||||
|
return new Transaction(db.startTransaction(), readOnly);
|
||||||
|
} catch (DbException e) {
|
||||||
|
if (readOnly) lock.readLock().unlock();
|
||||||
|
else lock.writeLock().unlock();
|
||||||
|
throw e;
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
if (readOnly) lock.readLock().unlock();
|
||||||
|
else lock.writeLock().unlock();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void endTransaction(Transaction transaction) throws DbException {
|
public void endTransaction(Transaction transaction) throws DbException {
|
||||||
T txn = txnClass.cast(transaction.unbox());
|
try {
|
||||||
if (transaction.isComplete()) {
|
T txn = txnClass.cast(transaction.unbox());
|
||||||
db.commitTransaction(txn);
|
if (transaction.isComplete()) db.commitTransaction(txn);
|
||||||
for (Event e : transaction.getEvents()) eventBus.broadcast(e);
|
else db.abortTransaction(txn);
|
||||||
} else {
|
} finally {
|
||||||
db.abortTransaction(txn);
|
if (transaction.isReadOnly()) lock.readLock().unlock();
|
||||||
|
else lock.writeLock().unlock();
|
||||||
}
|
}
|
||||||
|
if (transaction.isComplete())
|
||||||
|
for (Event e : transaction.getEvents()) eventBus.broadcast(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private T unbox(Transaction transaction) {
|
private T unbox(Transaction transaction) {
|
||||||
@@ -136,6 +154,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public ContactId addContact(Transaction transaction, Author remote,
|
public ContactId addContact(Transaction transaction, Author remote,
|
||||||
AuthorId local, boolean active) throws DbException {
|
AuthorId local, boolean active) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsLocalAuthor(txn, local))
|
if (!db.containsLocalAuthor(txn, local))
|
||||||
throw new NoSuchLocalAuthorException();
|
throw new NoSuchLocalAuthorException();
|
||||||
@@ -148,6 +167,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addGroup(Transaction transaction, Group g) throws DbException {
|
public void addGroup(Transaction transaction, Group g) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsGroup(txn, g.getId())) {
|
if (!db.containsGroup(txn, g.getId())) {
|
||||||
db.addGroup(txn, g);
|
db.addGroup(txn, g);
|
||||||
@@ -157,6 +177,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void addLocalAuthor(Transaction transaction, LocalAuthor a)
|
public void addLocalAuthor(Transaction transaction, LocalAuthor a)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsLocalAuthor(txn, a.getId())) {
|
if (!db.containsLocalAuthor(txn, a.getId())) {
|
||||||
db.addLocalAuthor(txn, a);
|
db.addLocalAuthor(txn, a);
|
||||||
@@ -166,6 +187,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void addLocalMessage(Transaction transaction, Message m, ClientId c,
|
public void addLocalMessage(Transaction transaction, Message m, ClientId c,
|
||||||
Metadata meta, boolean shared) throws DbException {
|
Metadata meta, boolean shared) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsGroup(txn, m.getGroupId()))
|
if (!db.containsGroup(txn, m.getGroupId()))
|
||||||
throw new NoSuchGroupException();
|
throw new NoSuchGroupException();
|
||||||
@@ -189,6 +211,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void addTransport(Transaction transaction, TransportId t,
|
public void addTransport(Transaction transaction, TransportId t,
|
||||||
int maxLatency) throws DbException {
|
int maxLatency) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsTransport(txn, t))
|
if (!db.containsTransport(txn, t))
|
||||||
db.addTransport(txn, t, maxLatency);
|
db.addTransport(txn, t, maxLatency);
|
||||||
@@ -196,6 +219,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void addTransportKeys(Transaction transaction, ContactId c,
|
public void addTransportKeys(Transaction transaction, ContactId c,
|
||||||
TransportKeys k) throws DbException {
|
TransportKeys k) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -206,6 +230,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void deleteMessage(Transaction transaction, MessageId m)
|
public void deleteMessage(Transaction transaction, MessageId m)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsMessage(txn, m))
|
if (!db.containsMessage(txn, m))
|
||||||
throw new NoSuchMessageException();
|
throw new NoSuchMessageException();
|
||||||
@@ -214,6 +239,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void deleteMessageMetadata(Transaction transaction, MessageId m)
|
public void deleteMessageMetadata(Transaction transaction, MessageId m)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsMessage(txn, m))
|
if (!db.containsMessage(txn, m))
|
||||||
throw new NoSuchMessageException();
|
throw new NoSuchMessageException();
|
||||||
@@ -222,6 +248,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public Ack generateAck(Transaction transaction, ContactId c,
|
public Ack generateAck(Transaction transaction, ContactId c,
|
||||||
int maxMessages) throws DbException {
|
int maxMessages) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -233,6 +260,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public Collection<byte[]> generateBatch(Transaction transaction,
|
public Collection<byte[]> generateBatch(Transaction transaction,
|
||||||
ContactId c, int maxLength, int maxLatency) throws DbException {
|
ContactId c, int maxLength, int maxLatency) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -250,6 +278,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public Offer generateOffer(Transaction transaction, ContactId c,
|
public Offer generateOffer(Transaction transaction, ContactId c,
|
||||||
int maxMessages, int maxLatency) throws DbException {
|
int maxMessages, int maxLatency) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -261,6 +290,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public Request generateRequest(Transaction transaction, ContactId c,
|
public Request generateRequest(Transaction transaction, ContactId c,
|
||||||
int maxMessages) throws DbException {
|
int maxMessages) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -273,6 +303,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public Collection<byte[]> generateRequestedBatch(Transaction transaction,
|
public Collection<byte[]> generateRequestedBatch(Transaction transaction,
|
||||||
ContactId c, int maxLength, int maxLatency) throws DbException {
|
ContactId c, int maxLength, int maxLatency) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -418,6 +449,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void incrementStreamCounter(Transaction transaction, ContactId c,
|
public void incrementStreamCounter(Transaction transaction, ContactId c,
|
||||||
TransportId t, long rotationPeriod) throws DbException {
|
TransportId t, long rotationPeriod) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -438,6 +470,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void mergeGroupMetadata(Transaction transaction, GroupId g,
|
public void mergeGroupMetadata(Transaction transaction, GroupId g,
|
||||||
Metadata meta) throws DbException {
|
Metadata meta) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsGroup(txn, g))
|
if (!db.containsGroup(txn, g))
|
||||||
throw new NoSuchGroupException();
|
throw new NoSuchGroupException();
|
||||||
@@ -446,6 +479,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void mergeMessageMetadata(Transaction transaction, MessageId m,
|
public void mergeMessageMetadata(Transaction transaction, MessageId m,
|
||||||
Metadata meta) throws DbException {
|
Metadata meta) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsMessage(txn, m))
|
if (!db.containsMessage(txn, m))
|
||||||
throw new NoSuchMessageException();
|
throw new NoSuchMessageException();
|
||||||
@@ -454,6 +488,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void mergeSettings(Transaction transaction, Settings s,
|
public void mergeSettings(Transaction transaction, Settings s,
|
||||||
String namespace) throws DbException {
|
String namespace) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
Settings old = db.getSettings(txn, namespace);
|
Settings old = db.getSettings(txn, namespace);
|
||||||
Settings merged = new Settings();
|
Settings merged = new Settings();
|
||||||
@@ -467,6 +502,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void receiveAck(Transaction transaction, ContactId c, Ack a)
|
public void receiveAck(Transaction transaction, ContactId c, Ack a)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -482,6 +518,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void receiveMessage(Transaction transaction, ContactId c, Message m)
|
public void receiveMessage(Transaction transaction, ContactId c, Message m)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -497,6 +534,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void receiveOffer(Transaction transaction, ContactId c, Offer o)
|
public void receiveOffer(Transaction transaction, ContactId c, Offer o)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -519,6 +557,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void receiveRequest(Transaction transaction, ContactId c, Request r)
|
public void receiveRequest(Transaction transaction, ContactId c, Request r)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -535,6 +574,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void removeContact(Transaction transaction, ContactId c)
|
public void removeContact(Transaction transaction, ContactId c)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -544,6 +584,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void removeGroup(Transaction transaction, Group g)
|
public void removeGroup(Transaction transaction, Group g)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
GroupId id = g.getId();
|
GroupId id = g.getId();
|
||||||
if (!db.containsGroup(txn, id))
|
if (!db.containsGroup(txn, id))
|
||||||
@@ -556,6 +597,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void removeLocalAuthor(Transaction transaction, AuthorId a)
|
public void removeLocalAuthor(Transaction transaction, AuthorId a)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsLocalAuthor(txn, a))
|
if (!db.containsLocalAuthor(txn, a))
|
||||||
throw new NoSuchLocalAuthorException();
|
throw new NoSuchLocalAuthorException();
|
||||||
@@ -565,6 +607,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void removeTransport(Transaction transaction, TransportId t)
|
public void removeTransport(Transaction transaction, TransportId t)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsTransport(txn, t))
|
if (!db.containsTransport(txn, t))
|
||||||
throw new NoSuchTransportException();
|
throw new NoSuchTransportException();
|
||||||
@@ -573,6 +616,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void setContactActive(Transaction transaction, ContactId c,
|
public void setContactActive(Transaction transaction, ContactId c,
|
||||||
boolean active) throws DbException {
|
boolean active) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -582,6 +626,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void setMessageShared(Transaction transaction, Message m,
|
public void setMessageShared(Transaction transaction, Message m,
|
||||||
boolean shared) throws DbException {
|
boolean shared) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsMessage(txn, m.getId()))
|
if (!db.containsMessage(txn, m.getId()))
|
||||||
throw new NoSuchMessageException();
|
throw new NoSuchMessageException();
|
||||||
@@ -591,6 +636,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void setMessageValid(Transaction transaction, Message m, ClientId c,
|
public void setMessageValid(Transaction transaction, Message m, ClientId c,
|
||||||
boolean valid) throws DbException {
|
boolean valid) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsMessage(txn, m.getId()))
|
if (!db.containsMessage(txn, m.getId()))
|
||||||
throw new NoSuchMessageException();
|
throw new NoSuchMessageException();
|
||||||
@@ -601,6 +647,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
public void setReorderingWindow(Transaction transaction, ContactId c,
|
public void setReorderingWindow(Transaction transaction, ContactId c,
|
||||||
TransportId t, long rotationPeriod, long base, byte[] bitmap)
|
TransportId t, long rotationPeriod, long base, byte[] bitmap)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -611,6 +658,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void setVisibleToContact(Transaction transaction, ContactId c,
|
public void setVisibleToContact(Transaction transaction, ContactId c,
|
||||||
GroupId g, boolean visible) throws DbException {
|
GroupId g, boolean visible) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
if (!db.containsContact(txn, c))
|
if (!db.containsContact(txn, c))
|
||||||
throw new NoSuchContactException();
|
throw new NoSuchContactException();
|
||||||
@@ -636,6 +684,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
|
|||||||
|
|
||||||
public void updateTransportKeys(Transaction transaction,
|
public void updateTransportKeys(Transaction transaction,
|
||||||
Map<ContactId, TransportKeys> keys) throws DbException {
|
Map<ContactId, TransportKeys> keys) throws DbException {
|
||||||
|
if (transaction.isReadOnly()) throw new IllegalArgumentException();
|
||||||
T txn = unbox(transaction);
|
T txn = unbox(transaction);
|
||||||
Map<ContactId, TransportKeys> filtered =
|
Map<ContactId, TransportKeys> filtered =
|
||||||
new HashMap<ContactId, TransportKeys>();
|
new HashMap<ContactId, TransportKeys>();
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ class ForumManagerImpl implements ForumManager {
|
|||||||
public Forum getForum(GroupId g) throws DbException {
|
public Forum getForum(GroupId g) throws DbException {
|
||||||
try {
|
try {
|
||||||
Group group;
|
Group group;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
group = db.getGroup(txn, g);
|
group = db.getGroup(txn, g);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -100,7 +100,7 @@ class ForumManagerImpl implements ForumManager {
|
|||||||
public Collection<Forum> getForums() throws DbException {
|
public Collection<Forum> getForums() throws DbException {
|
||||||
try {
|
try {
|
||||||
Collection<Group> groups;
|
Collection<Group> groups;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
groups = db.getGroups(txn, CLIENT_ID);
|
groups = db.getGroups(txn, CLIENT_ID);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -132,7 +132,7 @@ class ForumManagerImpl implements ForumManager {
|
|||||||
Set<AuthorId> localAuthorIds = new HashSet<AuthorId>();
|
Set<AuthorId> localAuthorIds = new HashSet<AuthorId>();
|
||||||
Set<AuthorId> contactAuthorIds = new HashSet<AuthorId>();
|
Set<AuthorId> contactAuthorIds = new HashSet<AuthorId>();
|
||||||
Map<MessageId, BdfDictionary> metadata;
|
Map<MessageId, BdfDictionary> metadata;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
// Load the IDs of the user's identities
|
// Load the IDs of the user's identities
|
||||||
for (LocalAuthor a : db.getLocalAuthors(txn))
|
for (LocalAuthor a : db.getLocalAuthors(txn))
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addForum(Forum f) throws DbException {
|
public void addForum(Forum f) throws DbException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.addGroup(txn, f.getGroup());
|
db.addGroup(txn, f.getGroup());
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -144,7 +144,7 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook,
|
|||||||
public void removeForum(Forum f) throws DbException {
|
public void removeForum(Forum f) throws DbException {
|
||||||
try {
|
try {
|
||||||
// Update the list shared with each contact
|
// Update the list shared with each contact
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
for (Contact c : db.getContacts(txn))
|
for (Contact c : db.getContacts(txn))
|
||||||
removeFromList(txn, getContactGroup(c).getId(), f);
|
removeFromList(txn, getContactGroup(c).getId(), f);
|
||||||
@@ -162,7 +162,7 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook,
|
|||||||
public Collection<Forum> getAvailableForums() throws DbException {
|
public Collection<Forum> getAvailableForums() throws DbException {
|
||||||
try {
|
try {
|
||||||
Set<Forum> available = new HashSet<Forum>();
|
Set<Forum> available = new HashSet<Forum>();
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
// Get any forums we subscribe to
|
// Get any forums we subscribe to
|
||||||
Set<Group> subscribed = new HashSet<Group>(db.getGroups(txn,
|
Set<Group> subscribed = new HashSet<Group>(db.getGroups(txn,
|
||||||
@@ -196,7 +196,7 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook,
|
|||||||
public Collection<Contact> getSharedBy(GroupId g) throws DbException {
|
public Collection<Contact> getSharedBy(GroupId g) throws DbException {
|
||||||
try {
|
try {
|
||||||
List<Contact> subscribers = new ArrayList<Contact>();
|
List<Contact> subscribers = new ArrayList<Contact>();
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
for (Contact c : db.getContacts(txn)) {
|
for (Contact c : db.getContacts(txn)) {
|
||||||
if (listContains(txn, getContactGroup(c).getId(), g, false))
|
if (listContains(txn, getContactGroup(c).getId(), g, false))
|
||||||
@@ -216,7 +216,7 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook,
|
|||||||
public Collection<ContactId> getSharedWith(GroupId g) throws DbException {
|
public Collection<ContactId> getSharedWith(GroupId g) throws DbException {
|
||||||
try {
|
try {
|
||||||
List<ContactId> shared = new ArrayList<ContactId>();
|
List<ContactId> shared = new ArrayList<ContactId>();
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
for (Contact c : db.getContacts(txn)) {
|
for (Contact c : db.getContacts(txn)) {
|
||||||
if (listContains(txn, getContactGroup(c).getId(), g, true))
|
if (listContains(txn, getContactGroup(c).getId(), g, true))
|
||||||
@@ -236,7 +236,7 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook,
|
|||||||
public void setSharedWith(GroupId g, Collection<ContactId> shared)
|
public void setSharedWith(GroupId g, Collection<ContactId> shared)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
// Retrieve the forum
|
// Retrieve the forum
|
||||||
Forum f = parseForum(db.getGroup(txn, g));
|
Forum f = parseForum(db.getGroup(txn, g));
|
||||||
@@ -268,7 +268,7 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook,
|
|||||||
@Override
|
@Override
|
||||||
public void setSharedWithAll(GroupId g) throws DbException {
|
public void setSharedWithAll(GroupId g) throws DbException {
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
// Retrieve the forum
|
// Retrieve the forum
|
||||||
Forum f = parseForum(db.getGroup(txn, g));
|
Forum f = parseForum(db.getGroup(txn, g));
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class IdentityManagerImpl implements IdentityManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addLocalAuthor(LocalAuthor localAuthor) throws DbException {
|
public void addLocalAuthor(LocalAuthor localAuthor) throws DbException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.addLocalAuthor(txn, localAuthor);
|
db.addLocalAuthor(txn, localAuthor);
|
||||||
for (AddIdentityHook hook : addHooks)
|
for (AddIdentityHook hook : addHooks)
|
||||||
@@ -51,7 +51,7 @@ class IdentityManagerImpl implements IdentityManager {
|
|||||||
@Override
|
@Override
|
||||||
public LocalAuthor getLocalAuthor(AuthorId a) throws DbException {
|
public LocalAuthor getLocalAuthor(AuthorId a) throws DbException {
|
||||||
LocalAuthor author;
|
LocalAuthor author;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
author = db.getLocalAuthor(txn, a);
|
author = db.getLocalAuthor(txn, a);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -64,7 +64,7 @@ class IdentityManagerImpl implements IdentityManager {
|
|||||||
@Override
|
@Override
|
||||||
public Collection<LocalAuthor> getLocalAuthors() throws DbException {
|
public Collection<LocalAuthor> getLocalAuthors() throws DbException {
|
||||||
Collection<LocalAuthor> authors;
|
Collection<LocalAuthor> authors;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
authors = db.getLocalAuthors(txn);
|
authors = db.getLocalAuthors(txn);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -76,7 +76,7 @@ class IdentityManagerImpl implements IdentityManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeLocalAuthor(AuthorId a) throws DbException {
|
public void removeLocalAuthor(AuthorId a) throws DbException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
LocalAuthor localAuthor = db.getLocalAuthor(txn, a);
|
LocalAuthor localAuthor = db.getLocalAuthor(txn, a);
|
||||||
for (RemoveIdentityHook hook : removeHooks)
|
for (RemoveIdentityHook hook : removeHooks)
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ class MessagingManagerImpl implements MessagingManager, AddContactHook,
|
|||||||
@Override
|
@Override
|
||||||
public GroupId getConversationId(ContactId c) throws DbException {
|
public GroupId getConversationId(ContactId c) throws DbException {
|
||||||
Contact contact;
|
Contact contact;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
contact = db.getContact(txn, c);
|
contact = db.getContact(txn, c);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -121,7 +121,7 @@ class MessagingManagerImpl implements MessagingManager, AddContactHook,
|
|||||||
throws DbException {
|
throws DbException {
|
||||||
Map<MessageId, BdfDictionary> metadata;
|
Map<MessageId, BdfDictionary> metadata;
|
||||||
Collection<MessageStatus> statuses;
|
Collection<MessageStatus> statuses;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
GroupId g = getContactGroup(db.getContact(txn, c)).getId();
|
GroupId g = getContactGroup(db.getContact(txn, c)).getId();
|
||||||
metadata = clientHelper.getMessageMetadataAsDictionary(txn, g);
|
metadata = clientHelper.getMessageMetadataAsDictionary(txn, g);
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ class TransportPropertyManagerImpl implements TransportPropertyManager,
|
|||||||
@Override
|
@Override
|
||||||
public void addRemoteProperties(ContactId c, DeviceId dev,
|
public void addRemoteProperties(ContactId c, DeviceId dev,
|
||||||
Map<TransportId, TransportProperties> props) throws DbException {
|
Map<TransportId, TransportProperties> props) throws DbException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Group g = getContactGroup(db.getContact(txn, c));
|
Group g = getContactGroup(db.getContact(txn, c));
|
||||||
for (Entry<TransportId, TransportProperties> e : props.entrySet()) {
|
for (Entry<TransportId, TransportProperties> e : props.entrySet()) {
|
||||||
@@ -101,7 +101,7 @@ class TransportPropertyManagerImpl implements TransportPropertyManager,
|
|||||||
public Map<TransportId, TransportProperties> getLocalProperties()
|
public Map<TransportId, TransportProperties> getLocalProperties()
|
||||||
throws DbException {
|
throws DbException {
|
||||||
Map<TransportId, TransportProperties> local;
|
Map<TransportId, TransportProperties> local;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
local = getLocalProperties(txn);
|
local = getLocalProperties(txn);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -116,7 +116,7 @@ class TransportPropertyManagerImpl implements TransportPropertyManager,
|
|||||||
throws DbException {
|
throws DbException {
|
||||||
try {
|
try {
|
||||||
TransportProperties p = null;
|
TransportProperties p = null;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
// Find the latest local update
|
// Find the latest local update
|
||||||
LatestUpdate latest = findLatest(txn, localGroup.getId(), t,
|
LatestUpdate latest = findLatest(txn, localGroup.getId(), t,
|
||||||
@@ -146,7 +146,7 @@ class TransportPropertyManagerImpl implements TransportPropertyManager,
|
|||||||
try {
|
try {
|
||||||
Map<ContactId, TransportProperties> remote =
|
Map<ContactId, TransportProperties> remote =
|
||||||
new HashMap<ContactId, TransportProperties>();
|
new HashMap<ContactId, TransportProperties>();
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
for (Contact c : db.getContacts(txn)) {
|
for (Contact c : db.getContacts(txn)) {
|
||||||
Group g = getContactGroup(c);
|
Group g = getContactGroup(c);
|
||||||
@@ -173,7 +173,7 @@ class TransportPropertyManagerImpl implements TransportPropertyManager,
|
|||||||
public void mergeLocalProperties(TransportId t, TransportProperties p)
|
public void mergeLocalProperties(TransportId t, TransportProperties p)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
// Create the local group if necessary
|
// Create the local group if necessary
|
||||||
db.addGroup(txn, localGroup);
|
db.addGroup(txn, localGroup);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class SettingsManagerImpl implements SettingsManager {
|
|||||||
@Override
|
@Override
|
||||||
public Settings getSettings(String namespace) throws DbException {
|
public Settings getSettings(String namespace) throws DbException {
|
||||||
Settings s;
|
Settings s;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
s = db.getSettings(txn, namespace);
|
s = db.getSettings(txn, namespace);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -33,7 +33,7 @@ class SettingsManagerImpl implements SettingsManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mergeSettings(Settings s, String namespace) throws DbException {
|
public void mergeSettings(Settings s, String namespace) throws DbException {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.mergeSettings(txn, s, namespace);
|
db.mergeSettings(txn, s, namespace);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ class DuplexOutgoingSession implements SyncSession, EventListener {
|
|||||||
if (interrupted) return;
|
if (interrupted) return;
|
||||||
try {
|
try {
|
||||||
Ack a;
|
Ack a;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
a = db.generateAck(txn, contactId, MAX_MESSAGE_IDS);
|
a = db.generateAck(txn, contactId, MAX_MESSAGE_IDS);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -213,7 +213,7 @@ class DuplexOutgoingSession implements SyncSession, EventListener {
|
|||||||
if (interrupted) return;
|
if (interrupted) return;
|
||||||
try {
|
try {
|
||||||
Collection<byte[]> b;
|
Collection<byte[]> b;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
b = db.generateRequestedBatch(txn, contactId,
|
b = db.generateRequestedBatch(txn, contactId,
|
||||||
MAX_PACKET_PAYLOAD_LENGTH, maxLatency);
|
MAX_PACKET_PAYLOAD_LENGTH, maxLatency);
|
||||||
@@ -255,7 +255,7 @@ class DuplexOutgoingSession implements SyncSession, EventListener {
|
|||||||
if (interrupted) return;
|
if (interrupted) return;
|
||||||
try {
|
try {
|
||||||
Offer o;
|
Offer o;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
o = db.generateOffer(txn, contactId, MAX_MESSAGE_IDS,
|
o = db.generateOffer(txn, contactId, MAX_MESSAGE_IDS,
|
||||||
maxLatency);
|
maxLatency);
|
||||||
@@ -297,7 +297,7 @@ class DuplexOutgoingSession implements SyncSession, EventListener {
|
|||||||
if (interrupted) return;
|
if (interrupted) return;
|
||||||
try {
|
try {
|
||||||
Request r;
|
Request r;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
r = db.generateRequest(txn, contactId, MAX_MESSAGE_IDS);
|
r = db.generateRequest(txn, contactId, MAX_MESSAGE_IDS);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ class IncomingSession implements SyncSession, EventListener {
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.receiveAck(txn, contactId, ack);
|
db.receiveAck(txn, contactId, ack);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -123,7 +123,7 @@ class IncomingSession implements SyncSession, EventListener {
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.receiveMessage(txn, contactId, message);
|
db.receiveMessage(txn, contactId, message);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -147,7 +147,7 @@ class IncomingSession implements SyncSession, EventListener {
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.receiveOffer(txn, contactId, offer);
|
db.receiveOffer(txn, contactId, offer);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -171,7 +171,7 @@ class IncomingSession implements SyncSession, EventListener {
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.receiveRequest(txn, contactId, request);
|
db.receiveRequest(txn, contactId, request);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ class SimplexOutgoingSession implements SyncSession, EventListener {
|
|||||||
if (interrupted) return;
|
if (interrupted) return;
|
||||||
try {
|
try {
|
||||||
Ack a;
|
Ack a;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
a = db.generateAck(txn, contactId, MAX_MESSAGE_IDS);
|
a = db.generateAck(txn, contactId, MAX_MESSAGE_IDS);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -156,7 +156,7 @@ class SimplexOutgoingSession implements SyncSession, EventListener {
|
|||||||
if (interrupted) return;
|
if (interrupted) return;
|
||||||
try {
|
try {
|
||||||
Collection<byte[]> b;
|
Collection<byte[]> b;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
b = db.generateBatch(txn, contactId,
|
b = db.generateBatch(txn, contactId,
|
||||||
MAX_PACKET_PAYLOAD_LENGTH, maxLatency);
|
MAX_PACKET_PAYLOAD_LENGTH, maxLatency);
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ class ValidationManagerImpl implements ValidationManager, Service,
|
|||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Queue<MessageId> unvalidated = new LinkedList<MessageId>();
|
Queue<MessageId> unvalidated = new LinkedList<MessageId>();
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
unvalidated.addAll(db.getMessagesToValidate(txn, c));
|
unvalidated.addAll(db.getMessagesToValidate(txn, c));
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -106,7 +106,7 @@ class ValidationManagerImpl implements ValidationManager, Service,
|
|||||||
try {
|
try {
|
||||||
Message m = null;
|
Message m = null;
|
||||||
Group g = null;
|
Group g = null;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
MessageId id = unvalidated.poll();
|
MessageId id = unvalidated.poll();
|
||||||
byte[] raw = db.getRawMessage(txn, id);
|
byte[] raw = db.getRawMessage(txn, id);
|
||||||
@@ -160,7 +160,7 @@ class ValidationManagerImpl implements ValidationManager, Service,
|
|||||||
dbExecutor.execute(new Runnable() {
|
dbExecutor.execute(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
db.setMessageValid(txn, m, c, false);
|
db.setMessageValid(txn, m, c, false);
|
||||||
@@ -198,7 +198,7 @@ class ValidationManagerImpl implements ValidationManager, Service,
|
|||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Group g;
|
Group g;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
g = db.getGroup(txn, m.getGroupId());
|
g = db.getGroup(txn, m.getGroupId());
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ class KeyManagerImpl implements KeyManager, Service, EventListener {
|
|||||||
latencies.put(f.getId(), f.getMaxLatency());
|
latencies.put(f.getId(), f.getMaxLatency());
|
||||||
try {
|
try {
|
||||||
Collection<Contact> contacts;
|
Collection<Contact> contacts;
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
contacts = db.getContacts(txn);
|
contacts = db.getContacts(txn);
|
||||||
for (Entry<TransportId, Integer> e : latencies.entrySet())
|
for (Entry<TransportId, Integer> e : latencies.entrySet())
|
||||||
@@ -123,7 +123,7 @@ class KeyManagerImpl implements KeyManager, Service, EventListener {
|
|||||||
// Activate the contact if not already active
|
// Activate the contact if not already active
|
||||||
if (!activeContacts.containsKey(ctx.getContactId())) {
|
if (!activeContacts.containsKey(ctx.getContactId())) {
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setContactActive(txn, ctx.getContactId(), true);
|
db.setContactActive(txn, ctx.getContactId(), true);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ class TransportKeyManager {
|
|||||||
// Load the transport keys from the DB
|
// Load the transport keys from the DB
|
||||||
Map<ContactId, TransportKeys> loaded;
|
Map<ContactId, TransportKeys> loaded;
|
||||||
try {
|
try {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(true);
|
||||||
try {
|
try {
|
||||||
loaded = db.getTransportKeys(txn, transportId);
|
loaded = db.getTransportKeys(txn, transportId);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -129,7 +129,7 @@ class TransportKeyManager {
|
|||||||
private void updateTransportKeys(Map<ContactId, TransportKeys> rotated)
|
private void updateTransportKeys(Map<ContactId, TransportKeys> rotated)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
if (!rotated.isEmpty()) {
|
if (!rotated.isEmpty()) {
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.updateTransportKeys(txn, rotated);
|
db.updateTransportKeys(txn, rotated);
|
||||||
txn.setComplete();
|
txn.setComplete();
|
||||||
@@ -198,7 +198,7 @@ class TransportKeyManager {
|
|||||||
outKeys.getStreamCounter());
|
outKeys.getStreamCounter());
|
||||||
// Increment the stream counter and write it back to the DB
|
// Increment the stream counter and write it back to the DB
|
||||||
outKeys.incrementStreamCounter();
|
outKeys.incrementStreamCounter();
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.incrementStreamCounter(txn, c, transportId,
|
db.incrementStreamCounter(txn, c, transportId,
|
||||||
outKeys.getRotationPeriod());
|
outKeys.getRotationPeriod());
|
||||||
@@ -244,7 +244,7 @@ class TransportKeyManager {
|
|||||||
inContexts.remove(new Bytes(removeTag));
|
inContexts.remove(new Bytes(removeTag));
|
||||||
}
|
}
|
||||||
// Write the window back to the DB
|
// Write the window back to the DB
|
||||||
Transaction txn = db.startTransaction();
|
Transaction txn = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setReorderingWindow(txn, tagCtx.contactId, transportId,
|
db.setReorderingWindow(txn, tagCtx.contactId, transportId,
|
||||||
inKeys.getRotationPeriod(), window.getBase(),
|
inKeys.getRotationPeriod(), window.getBase(),
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class MessageQueueManagerImplTest extends BriarTestCase {
|
|||||||
context.mock(QueueMessageFactory.class);
|
context.mock(QueueMessageFactory.class);
|
||||||
final ValidationManager validationManager =
|
final ValidationManager validationManager =
|
||||||
context.mock(ValidationManager.class);
|
context.mock(ValidationManager.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
final byte[] body = new byte[123];
|
final byte[] body = new byte[123];
|
||||||
final Metadata groupMetadata = new Metadata();
|
final Metadata groupMetadata = new Metadata();
|
||||||
final Metadata messageMetadata = new Metadata();
|
final Metadata messageMetadata = new Metadata();
|
||||||
@@ -249,7 +249,7 @@ public class MessageQueueManagerImplTest extends BriarTestCase {
|
|||||||
new AtomicReference<IncomingMessageHook>();
|
new AtomicReference<IncomingMessageHook>();
|
||||||
final IncomingQueueMessageHook incomingQueueMessageHook =
|
final IncomingQueueMessageHook incomingQueueMessageHook =
|
||||||
context.mock(IncomingQueueMessageHook.class);
|
context.mock(IncomingQueueMessageHook.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
final Metadata groupMetadata = new Metadata();
|
final Metadata groupMetadata = new Metadata();
|
||||||
final byte[] queueState = new byte[123];
|
final byte[] queueState = new byte[123];
|
||||||
groupMetadata.put(QUEUE_STATE_KEY, queueState);
|
groupMetadata.put(QUEUE_STATE_KEY, queueState);
|
||||||
@@ -300,7 +300,7 @@ public class MessageQueueManagerImplTest extends BriarTestCase {
|
|||||||
new AtomicReference<IncomingMessageHook>();
|
new AtomicReference<IncomingMessageHook>();
|
||||||
final IncomingQueueMessageHook incomingQueueMessageHook =
|
final IncomingQueueMessageHook incomingQueueMessageHook =
|
||||||
context.mock(IncomingQueueMessageHook.class);
|
context.mock(IncomingQueueMessageHook.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
final Metadata groupMetadata = new Metadata();
|
final Metadata groupMetadata = new Metadata();
|
||||||
final byte[] queueState = new byte[123];
|
final byte[] queueState = new byte[123];
|
||||||
groupMetadata.put(QUEUE_STATE_KEY, queueState);
|
groupMetadata.put(QUEUE_STATE_KEY, queueState);
|
||||||
@@ -355,7 +355,7 @@ public class MessageQueueManagerImplTest extends BriarTestCase {
|
|||||||
new AtomicReference<IncomingMessageHook>();
|
new AtomicReference<IncomingMessageHook>();
|
||||||
final IncomingQueueMessageHook incomingQueueMessageHook =
|
final IncomingQueueMessageHook incomingQueueMessageHook =
|
||||||
context.mock(IncomingQueueMessageHook.class);
|
context.mock(IncomingQueueMessageHook.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
final Metadata groupMetadata = new Metadata();
|
final Metadata groupMetadata = new Metadata();
|
||||||
final byte[] queueState = new byte[123];
|
final byte[] queueState = new byte[123];
|
||||||
groupMetadata.put(QUEUE_STATE_KEY, queueState);
|
groupMetadata.put(QUEUE_STATE_KEY, queueState);
|
||||||
@@ -412,7 +412,7 @@ public class MessageQueueManagerImplTest extends BriarTestCase {
|
|||||||
new AtomicReference<IncomingMessageHook>();
|
new AtomicReference<IncomingMessageHook>();
|
||||||
final IncomingQueueMessageHook incomingQueueMessageHook =
|
final IncomingQueueMessageHook incomingQueueMessageHook =
|
||||||
context.mock(IncomingQueueMessageHook.class);
|
context.mock(IncomingQueueMessageHook.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
final Metadata groupMetadata = new Metadata();
|
final Metadata groupMetadata = new Metadata();
|
||||||
final byte[] queueState = new byte[123];
|
final byte[] queueState = new byte[123];
|
||||||
groupMetadata.put(QUEUE_STATE_KEY, queueState);
|
groupMetadata.put(QUEUE_STATE_KEY, queueState);
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
assertFalse(db.open());
|
assertFalse(db.open());
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.addLocalAuthor(transaction, localAuthor);
|
db.addLocalAuthor(transaction, localAuthor);
|
||||||
assertEquals(contactId,
|
assertEquals(contactId,
|
||||||
@@ -233,7 +233,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.addLocalMessage(transaction, message, clientId, metadata, true);
|
db.addLocalMessage(transaction, message, clientId, metadata, true);
|
||||||
fail();
|
fail();
|
||||||
@@ -276,7 +276,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.addLocalMessage(transaction, message, clientId, metadata, true);
|
db.addLocalMessage(transaction, message, clientId, metadata, true);
|
||||||
transaction.setComplete();
|
transaction.setComplete();
|
||||||
@@ -306,7 +306,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.addTransportKeys(transaction, contactId, createTransportKeys());
|
db.addTransportKeys(transaction, contactId, createTransportKeys());
|
||||||
fail();
|
fail();
|
||||||
@@ -316,7 +316,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.generateAck(transaction, contactId, 123);
|
db.generateAck(transaction, contactId, 123);
|
||||||
fail();
|
fail();
|
||||||
@@ -326,7 +326,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.generateBatch(transaction, contactId, 123, 456);
|
db.generateBatch(transaction, contactId, 123, 456);
|
||||||
fail();
|
fail();
|
||||||
@@ -336,7 +336,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.generateOffer(transaction, contactId, 123, 456);
|
db.generateOffer(transaction, contactId, 123, 456);
|
||||||
fail();
|
fail();
|
||||||
@@ -346,7 +346,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.generateRequest(transaction, contactId, 123);
|
db.generateRequest(transaction, contactId, 123);
|
||||||
fail();
|
fail();
|
||||||
@@ -356,7 +356,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getContact(transaction, contactId);
|
db.getContact(transaction, contactId);
|
||||||
fail();
|
fail();
|
||||||
@@ -366,7 +366,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getMessageStatus(transaction, contactId, groupId);
|
db.getMessageStatus(transaction, contactId, groupId);
|
||||||
fail();
|
fail();
|
||||||
@@ -376,7 +376,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getMessageStatus(transaction, contactId, messageId);
|
db.getMessageStatus(transaction, contactId, messageId);
|
||||||
fail();
|
fail();
|
||||||
@@ -386,7 +386,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.incrementStreamCounter(transaction, contactId, transportId, 0);
|
db.incrementStreamCounter(transaction, contactId, transportId, 0);
|
||||||
fail();
|
fail();
|
||||||
@@ -396,7 +396,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.isVisibleToContact(transaction, contactId, groupId);
|
db.isVisibleToContact(transaction, contactId, groupId);
|
||||||
fail();
|
fail();
|
||||||
@@ -406,7 +406,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Ack a = new Ack(Collections.singletonList(messageId));
|
Ack a = new Ack(Collections.singletonList(messageId));
|
||||||
db.receiveAck(transaction, contactId, a);
|
db.receiveAck(transaction, contactId, a);
|
||||||
@@ -417,7 +417,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.receiveMessage(transaction, contactId, message);
|
db.receiveMessage(transaction, contactId, message);
|
||||||
fail();
|
fail();
|
||||||
@@ -427,7 +427,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Offer o = new Offer(Collections.singletonList(messageId));
|
Offer o = new Offer(Collections.singletonList(messageId));
|
||||||
db.receiveOffer(transaction, contactId, o);
|
db.receiveOffer(transaction, contactId, o);
|
||||||
@@ -438,7 +438,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Request r = new Request(Collections.singletonList(messageId));
|
Request r = new Request(Collections.singletonList(messageId));
|
||||||
db.receiveRequest(transaction, contactId, r);
|
db.receiveRequest(transaction, contactId, r);
|
||||||
@@ -449,7 +449,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.removeContact(transaction, contactId);
|
db.removeContact(transaction, contactId);
|
||||||
fail();
|
fail();
|
||||||
@@ -459,7 +459,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setContactActive(transaction, contactId, true);
|
db.setContactActive(transaction, contactId, true);
|
||||||
fail();
|
fail();
|
||||||
@@ -469,7 +469,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setReorderingWindow(transaction, contactId, transportId, 0, 0,
|
db.setReorderingWindow(transaction, contactId, transportId, 0, 0,
|
||||||
new byte[REORDERING_WINDOW_SIZE / 8]);
|
new byte[REORDERING_WINDOW_SIZE / 8]);
|
||||||
@@ -480,7 +480,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setVisibleToContact(transaction, contactId, groupId, true);
|
db.setVisibleToContact(transaction, contactId, groupId, true);
|
||||||
fail();
|
fail();
|
||||||
@@ -512,7 +512,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.addContact(transaction, author, localAuthorId, true);
|
db.addContact(transaction, author, localAuthorId, true);
|
||||||
fail();
|
fail();
|
||||||
@@ -522,7 +522,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getLocalAuthor(transaction, localAuthorId);
|
db.getLocalAuthor(transaction, localAuthorId);
|
||||||
fail();
|
fail();
|
||||||
@@ -532,7 +532,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.removeLocalAuthor(transaction, localAuthorId);
|
db.removeLocalAuthor(transaction, localAuthorId);
|
||||||
fail();
|
fail();
|
||||||
@@ -568,7 +568,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getGroup(transaction, groupId);
|
db.getGroup(transaction, groupId);
|
||||||
fail();
|
fail();
|
||||||
@@ -578,7 +578,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getGroupMetadata(transaction, groupId);
|
db.getGroupMetadata(transaction, groupId);
|
||||||
fail();
|
fail();
|
||||||
@@ -588,7 +588,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getMessageStatus(transaction, contactId, groupId);
|
db.getMessageStatus(transaction, contactId, groupId);
|
||||||
fail();
|
fail();
|
||||||
@@ -598,7 +598,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.isVisibleToContact(transaction, contactId, groupId);
|
db.isVisibleToContact(transaction, contactId, groupId);
|
||||||
fail();
|
fail();
|
||||||
@@ -608,7 +608,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.mergeGroupMetadata(transaction, groupId, metadata);
|
db.mergeGroupMetadata(transaction, groupId, metadata);
|
||||||
fail();
|
fail();
|
||||||
@@ -618,7 +618,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.removeGroup(transaction, group);
|
db.removeGroup(transaction, group);
|
||||||
fail();
|
fail();
|
||||||
@@ -628,7 +628,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setVisibleToContact(transaction, contactId, groupId, true);
|
db.setVisibleToContact(transaction, contactId, groupId, true);
|
||||||
fail();
|
fail();
|
||||||
@@ -663,7 +663,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.deleteMessage(transaction, messageId);
|
db.deleteMessage(transaction, messageId);
|
||||||
fail();
|
fail();
|
||||||
@@ -673,7 +673,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.deleteMessageMetadata(transaction, messageId);
|
db.deleteMessageMetadata(transaction, messageId);
|
||||||
fail();
|
fail();
|
||||||
@@ -683,7 +683,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getRawMessage(transaction, messageId);
|
db.getRawMessage(transaction, messageId);
|
||||||
fail();
|
fail();
|
||||||
@@ -693,7 +693,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getMessageMetadata(transaction, messageId);
|
db.getMessageMetadata(transaction, messageId);
|
||||||
fail();
|
fail();
|
||||||
@@ -703,7 +703,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getMessageStatus(transaction, contactId, messageId);
|
db.getMessageStatus(transaction, contactId, messageId);
|
||||||
fail();
|
fail();
|
||||||
@@ -713,7 +713,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.mergeMessageMetadata(transaction, messageId, metadata);
|
db.mergeMessageMetadata(transaction, messageId, metadata);
|
||||||
fail();
|
fail();
|
||||||
@@ -723,7 +723,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setMessageShared(transaction, message, true);
|
db.setMessageShared(transaction, message, true);
|
||||||
fail();
|
fail();
|
||||||
@@ -733,7 +733,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setMessageValid(transaction, message, clientId, true);
|
db.setMessageValid(transaction, message, clientId, true);
|
||||||
fail();
|
fail();
|
||||||
@@ -787,7 +787,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.addLocalAuthor(transaction, localAuthor);
|
db.addLocalAuthor(transaction, localAuthor);
|
||||||
assertEquals(contactId,
|
assertEquals(contactId,
|
||||||
@@ -797,7 +797,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.getTransportKeys(transaction, transportId);
|
db.getTransportKeys(transaction, transportId);
|
||||||
fail();
|
fail();
|
||||||
@@ -807,7 +807,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.incrementStreamCounter(transaction, contactId, transportId, 0);
|
db.incrementStreamCounter(transaction, contactId, transportId, 0);
|
||||||
fail();
|
fail();
|
||||||
@@ -817,7 +817,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.removeTransport(transaction, transportId);
|
db.removeTransport(transaction, transportId);
|
||||||
fail();
|
fail();
|
||||||
@@ -827,7 +827,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
db.endTransaction(transaction);
|
db.endTransaction(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction = db.startTransaction();
|
transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setReorderingWindow(transaction, contactId, transportId, 0, 0,
|
db.setReorderingWindow(transaction, contactId, transportId, 0, 0,
|
||||||
new byte[REORDERING_WINDOW_SIZE / 8]);
|
new byte[REORDERING_WINDOW_SIZE / 8]);
|
||||||
@@ -863,7 +863,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Ack a = db.generateAck(transaction, contactId, 123);
|
Ack a = db.generateAck(transaction, contactId, 123);
|
||||||
assertEquals(messagesToAck, a.getMessageIds());
|
assertEquals(messagesToAck, a.getMessageIds());
|
||||||
@@ -907,7 +907,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
assertEquals(messages, db.generateBatch(transaction, contactId,
|
assertEquals(messages, db.generateBatch(transaction, contactId,
|
||||||
size * 2, maxLatency));
|
size * 2, maxLatency));
|
||||||
@@ -944,7 +944,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Offer o = db.generateOffer(transaction, contactId, 123, maxLatency);
|
Offer o = db.generateOffer(transaction, contactId, 123, maxLatency);
|
||||||
assertEquals(ids, o.getMessageIds());
|
assertEquals(ids, o.getMessageIds());
|
||||||
@@ -978,7 +978,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Request r = db.generateRequest(transaction, contactId, 123);
|
Request r = db.generateRequest(transaction, contactId, 123);
|
||||||
assertEquals(ids, r.getMessageIds());
|
assertEquals(ids, r.getMessageIds());
|
||||||
@@ -1023,7 +1023,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
assertEquals(messages, db.generateRequestedBatch(transaction,
|
assertEquals(messages, db.generateRequestedBatch(transaction,
|
||||||
contactId, size * 2, maxLatency));
|
contactId, size * 2, maxLatency));
|
||||||
@@ -1056,7 +1056,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Ack a = new Ack(Collections.singletonList(messageId));
|
Ack a = new Ack(Collections.singletonList(messageId));
|
||||||
db.receiveAck(transaction, contactId, a);
|
db.receiveAck(transaction, contactId, a);
|
||||||
@@ -1099,7 +1099,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.receiveMessage(transaction, contactId, message);
|
db.receiveMessage(transaction, contactId, message);
|
||||||
transaction.setComplete();
|
transaction.setComplete();
|
||||||
@@ -1135,7 +1135,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.receiveMessage(transaction, contactId, message);
|
db.receiveMessage(transaction, contactId, message);
|
||||||
transaction.setComplete();
|
transaction.setComplete();
|
||||||
@@ -1165,7 +1165,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.receiveMessage(transaction, contactId, message);
|
db.receiveMessage(transaction, contactId, message);
|
||||||
transaction.setComplete();
|
transaction.setComplete();
|
||||||
@@ -1217,7 +1217,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Offer o = new Offer(Arrays.asList(messageId, messageId1,
|
Offer o = new Offer(Arrays.asList(messageId, messageId1,
|
||||||
messageId2, messageId3));
|
messageId2, messageId3));
|
||||||
@@ -1252,7 +1252,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
Request r = new Request(Collections.singletonList(messageId));
|
Request r = new Request(Collections.singletonList(messageId));
|
||||||
db.receiveRequest(transaction, contactId, r);
|
db.receiveRequest(transaction, contactId, r);
|
||||||
@@ -1293,7 +1293,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setVisibleToContact(transaction, contactId, groupId, true);
|
db.setVisibleToContact(transaction, contactId, groupId, true);
|
||||||
transaction.setComplete();
|
transaction.setComplete();
|
||||||
@@ -1326,7 +1326,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.setVisibleToContact(transaction, contactId, groupId, true);
|
db.setVisibleToContact(transaction, contactId, groupId, true);
|
||||||
transaction.setComplete();
|
transaction.setComplete();
|
||||||
@@ -1368,7 +1368,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
db.updateTransportKeys(transaction, keys);
|
db.updateTransportKeys(transaction, keys);
|
||||||
assertEquals(keys, db.getTransportKeys(transaction, transportId));
|
assertEquals(keys, db.getTransportKeys(transaction, transportId));
|
||||||
@@ -1434,7 +1434,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
|
|||||||
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
DatabaseComponent db = createDatabaseComponent(database, eventBus,
|
||||||
shutdown);
|
shutdown);
|
||||||
|
|
||||||
Transaction transaction = db.startTransaction();
|
Transaction transaction = db.startTransaction(false);
|
||||||
try {
|
try {
|
||||||
// First merge should broadcast an event
|
// First merge should broadcast an event
|
||||||
db.mergeSettings(transaction, update, "namespace");
|
db.mergeSettings(transaction, update, "namespace");
|
||||||
|
|||||||
@@ -46,20 +46,20 @@ public class SimplexOutgoingSessionTest extends BriarTestCase {
|
|||||||
public void testNothingToSend() throws Exception {
|
public void testNothingToSend() throws Exception {
|
||||||
final SimplexOutgoingSession session = new SimplexOutgoingSession(db,
|
final SimplexOutgoingSession session = new SimplexOutgoingSession(db,
|
||||||
dbExecutor, eventBus, contactId, maxLatency, packetWriter);
|
dbExecutor, eventBus, contactId, maxLatency, packetWriter);
|
||||||
final Transaction noAckTxn = new Transaction(null);
|
final Transaction noAckTxn = new Transaction(null, false);
|
||||||
final Transaction noMsgTxn = new Transaction(null);
|
final Transaction noMsgTxn = new Transaction(null, false);
|
||||||
|
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
// Add listener
|
// Add listener
|
||||||
oneOf(eventBus).addListener(session);
|
oneOf(eventBus).addListener(session);
|
||||||
// No acks to send
|
// No acks to send
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(noAckTxn));
|
will(returnValue(noAckTxn));
|
||||||
oneOf(db).generateAck(noAckTxn, contactId, MAX_MESSAGE_IDS);
|
oneOf(db).generateAck(noAckTxn, contactId, MAX_MESSAGE_IDS);
|
||||||
will(returnValue(null));
|
will(returnValue(null));
|
||||||
oneOf(db).endTransaction(noAckTxn);
|
oneOf(db).endTransaction(noAckTxn);
|
||||||
// No messages to send
|
// No messages to send
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(noMsgTxn));
|
will(returnValue(noMsgTxn));
|
||||||
oneOf(db).generateBatch(with(noMsgTxn), with(contactId),
|
oneOf(db).generateBatch(with(noMsgTxn), with(contactId),
|
||||||
with(any(int.class)), with(maxLatency));
|
with(any(int.class)), with(maxLatency));
|
||||||
@@ -82,23 +82,23 @@ public class SimplexOutgoingSessionTest extends BriarTestCase {
|
|||||||
final byte[] raw = new byte[1234];
|
final byte[] raw = new byte[1234];
|
||||||
final SimplexOutgoingSession session = new SimplexOutgoingSession(db,
|
final SimplexOutgoingSession session = new SimplexOutgoingSession(db,
|
||||||
dbExecutor, eventBus, contactId, maxLatency, packetWriter);
|
dbExecutor, eventBus, contactId, maxLatency, packetWriter);
|
||||||
final Transaction ackTxn = new Transaction(null);
|
final Transaction ackTxn = new Transaction(null, false);
|
||||||
final Transaction noAckTxn = new Transaction(null);
|
final Transaction noAckTxn = new Transaction(null, false);
|
||||||
final Transaction msgTxn = new Transaction(null);
|
final Transaction msgTxn = new Transaction(null, false);
|
||||||
final Transaction noMsgTxn = new Transaction(null);
|
final Transaction noMsgTxn = new Transaction(null, false);
|
||||||
|
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
// Add listener
|
// Add listener
|
||||||
oneOf(eventBus).addListener(session);
|
oneOf(eventBus).addListener(session);
|
||||||
// One ack to send
|
// One ack to send
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(ackTxn));
|
will(returnValue(ackTxn));
|
||||||
oneOf(db).generateAck(ackTxn, contactId, MAX_MESSAGE_IDS);
|
oneOf(db).generateAck(ackTxn, contactId, MAX_MESSAGE_IDS);
|
||||||
will(returnValue(ack));
|
will(returnValue(ack));
|
||||||
oneOf(db).endTransaction(ackTxn);
|
oneOf(db).endTransaction(ackTxn);
|
||||||
oneOf(packetWriter).writeAck(ack);
|
oneOf(packetWriter).writeAck(ack);
|
||||||
// One message to send
|
// One message to send
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(msgTxn));
|
will(returnValue(msgTxn));
|
||||||
oneOf(db).generateBatch(with(msgTxn), with(contactId),
|
oneOf(db).generateBatch(with(msgTxn), with(contactId),
|
||||||
with(any(int.class)), with(maxLatency));
|
with(any(int.class)), with(maxLatency));
|
||||||
@@ -106,13 +106,13 @@ public class SimplexOutgoingSessionTest extends BriarTestCase {
|
|||||||
oneOf(db).endTransaction(msgTxn);
|
oneOf(db).endTransaction(msgTxn);
|
||||||
oneOf(packetWriter).writeMessage(raw);
|
oneOf(packetWriter).writeMessage(raw);
|
||||||
// No more acks
|
// No more acks
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(noAckTxn));
|
will(returnValue(noAckTxn));
|
||||||
oneOf(db).generateAck(noAckTxn, contactId, MAX_MESSAGE_IDS);
|
oneOf(db).generateAck(noAckTxn, contactId, MAX_MESSAGE_IDS);
|
||||||
will(returnValue(null));
|
will(returnValue(null));
|
||||||
oneOf(db).endTransaction(noAckTxn);
|
oneOf(db).endTransaction(noAckTxn);
|
||||||
// No more messages
|
// No more messages
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(noMsgTxn));
|
will(returnValue(noMsgTxn));
|
||||||
oneOf(db).generateBatch(with(noMsgTxn), with(contactId),
|
oneOf(db).generateBatch(with(noMsgTxn), with(contactId),
|
||||||
with(any(int.class)), with(maxLatency));
|
with(any(int.class)), with(maxLatency));
|
||||||
|
|||||||
@@ -58,20 +58,20 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
final MessageValidator validator = context.mock(MessageValidator.class);
|
final MessageValidator validator = context.mock(MessageValidator.class);
|
||||||
final IncomingMessageHook hook =
|
final IncomingMessageHook hook =
|
||||||
context.mock(IncomingMessageHook.class);
|
context.mock(IncomingMessageHook.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
final Transaction txn1 = new Transaction(null);
|
final Transaction txn1 = new Transaction(null, false);
|
||||||
final Transaction txn2 = new Transaction(null);
|
final Transaction txn2 = new Transaction(null, false);
|
||||||
final Transaction txn3 = new Transaction(null);
|
final Transaction txn3 = new Transaction(null, false);
|
||||||
final Transaction txn4 = new Transaction(null);
|
final Transaction txn4 = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
// Get messages to validate
|
// Get messages to validate
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn));
|
will(returnValue(txn));
|
||||||
oneOf(db).getMessagesToValidate(txn, clientId);
|
oneOf(db).getMessagesToValidate(txn, clientId);
|
||||||
will(returnValue(Arrays.asList(messageId, messageId1)));
|
will(returnValue(Arrays.asList(messageId, messageId1)));
|
||||||
oneOf(db).endTransaction(txn);
|
oneOf(db).endTransaction(txn);
|
||||||
// Load the first raw message and group
|
// Load the first raw message and group
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn1));
|
will(returnValue(txn1));
|
||||||
oneOf(db).getRawMessage(txn1, messageId);
|
oneOf(db).getRawMessage(txn1, messageId);
|
||||||
will(returnValue(raw));
|
will(returnValue(raw));
|
||||||
@@ -82,7 +82,7 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
oneOf(validator).validateMessage(message, group);
|
oneOf(validator).validateMessage(message, group);
|
||||||
will(returnValue(metadata));
|
will(returnValue(metadata));
|
||||||
// Store the validation result for the first message
|
// Store the validation result for the first message
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(txn2));
|
will(returnValue(txn2));
|
||||||
oneOf(db).mergeMessageMetadata(txn2, messageId, metadata);
|
oneOf(db).mergeMessageMetadata(txn2, messageId, metadata);
|
||||||
oneOf(db).setMessageValid(txn2, message, clientId, true);
|
oneOf(db).setMessageValid(txn2, message, clientId, true);
|
||||||
@@ -91,7 +91,7 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
oneOf(hook).incomingMessage(txn2, message, metadata);
|
oneOf(hook).incomingMessage(txn2, message, metadata);
|
||||||
oneOf(db).endTransaction(txn2);
|
oneOf(db).endTransaction(txn2);
|
||||||
// Load the second raw message and group
|
// Load the second raw message and group
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn3));
|
will(returnValue(txn3));
|
||||||
oneOf(db).getRawMessage(txn3, messageId1);
|
oneOf(db).getRawMessage(txn3, messageId1);
|
||||||
will(returnValue(raw));
|
will(returnValue(raw));
|
||||||
@@ -102,7 +102,7 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
oneOf(validator).validateMessage(message1, group);
|
oneOf(validator).validateMessage(message1, group);
|
||||||
will(returnValue(null));
|
will(returnValue(null));
|
||||||
// Store the validation result for the second message
|
// Store the validation result for the second message
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(txn4));
|
will(returnValue(txn4));
|
||||||
oneOf(db).setMessageValid(txn4, message1, clientId, false);
|
oneOf(db).setMessageValid(txn4, message1, clientId, false);
|
||||||
oneOf(db).endTransaction(txn4);
|
oneOf(db).endTransaction(txn4);
|
||||||
@@ -127,25 +127,25 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
final MessageValidator validator = context.mock(MessageValidator.class);
|
final MessageValidator validator = context.mock(MessageValidator.class);
|
||||||
final IncomingMessageHook hook =
|
final IncomingMessageHook hook =
|
||||||
context.mock(IncomingMessageHook.class);
|
context.mock(IncomingMessageHook.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, true);
|
||||||
final Transaction txn1 = new Transaction(null);
|
final Transaction txn1 = new Transaction(null, true);
|
||||||
final Transaction txn2 = new Transaction(null);
|
final Transaction txn2 = new Transaction(null, true);
|
||||||
final Transaction txn3 = new Transaction(null);
|
final Transaction txn3 = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
// Get messages to validate
|
// Get messages to validate
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn));
|
will(returnValue(txn));
|
||||||
oneOf(db).getMessagesToValidate(txn, clientId);
|
oneOf(db).getMessagesToValidate(txn, clientId);
|
||||||
will(returnValue(Arrays.asList(messageId, messageId1)));
|
will(returnValue(Arrays.asList(messageId, messageId1)));
|
||||||
oneOf(db).endTransaction(txn);
|
oneOf(db).endTransaction(txn);
|
||||||
// Load the first raw message - *gasp* it's gone!
|
// Load the first raw message - *gasp* it's gone!
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn1));
|
will(returnValue(txn1));
|
||||||
oneOf(db).getRawMessage(txn1, messageId);
|
oneOf(db).getRawMessage(txn1, messageId);
|
||||||
will(throwException(new NoSuchMessageException()));
|
will(throwException(new NoSuchMessageException()));
|
||||||
oneOf(db).endTransaction(txn1);
|
oneOf(db).endTransaction(txn1);
|
||||||
// Load the second raw message and group
|
// Load the second raw message and group
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn2));
|
will(returnValue(txn2));
|
||||||
oneOf(db).getRawMessage(txn2, messageId1);
|
oneOf(db).getRawMessage(txn2, messageId1);
|
||||||
will(returnValue(raw));
|
will(returnValue(raw));
|
||||||
@@ -156,7 +156,7 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
oneOf(validator).validateMessage(message1, group);
|
oneOf(validator).validateMessage(message1, group);
|
||||||
will(returnValue(null));
|
will(returnValue(null));
|
||||||
// Store the validation result for the second message
|
// Store the validation result for the second message
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(txn3));
|
will(returnValue(txn3));
|
||||||
oneOf(db).setMessageValid(txn3, message1, clientId, false);
|
oneOf(db).setMessageValid(txn3, message1, clientId, false);
|
||||||
oneOf(db).endTransaction(txn3);
|
oneOf(db).endTransaction(txn3);
|
||||||
@@ -181,19 +181,19 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
final MessageValidator validator = context.mock(MessageValidator.class);
|
final MessageValidator validator = context.mock(MessageValidator.class);
|
||||||
final IncomingMessageHook hook =
|
final IncomingMessageHook hook =
|
||||||
context.mock(IncomingMessageHook.class);
|
context.mock(IncomingMessageHook.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, true);
|
||||||
final Transaction txn1 = new Transaction(null);
|
final Transaction txn1 = new Transaction(null, true);
|
||||||
final Transaction txn2 = new Transaction(null);
|
final Transaction txn2 = new Transaction(null, true);
|
||||||
final Transaction txn3 = new Transaction(null);
|
final Transaction txn3 = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
// Get messages to validate
|
// Get messages to validate
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn));
|
will(returnValue(txn));
|
||||||
oneOf(db).getMessagesToValidate(txn, clientId);
|
oneOf(db).getMessagesToValidate(txn, clientId);
|
||||||
will(returnValue(Arrays.asList(messageId, messageId1)));
|
will(returnValue(Arrays.asList(messageId, messageId1)));
|
||||||
oneOf(db).endTransaction(txn);
|
oneOf(db).endTransaction(txn);
|
||||||
// Load the first raw message
|
// Load the first raw message
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn1));
|
will(returnValue(txn1));
|
||||||
oneOf(db).getRawMessage(txn1, messageId);
|
oneOf(db).getRawMessage(txn1, messageId);
|
||||||
will(returnValue(raw));
|
will(returnValue(raw));
|
||||||
@@ -202,7 +202,7 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
will(throwException(new NoSuchGroupException()));
|
will(throwException(new NoSuchGroupException()));
|
||||||
oneOf(db).endTransaction(txn1);
|
oneOf(db).endTransaction(txn1);
|
||||||
// Load the second raw message and group
|
// Load the second raw message and group
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn2));
|
will(returnValue(txn2));
|
||||||
oneOf(db).getRawMessage(txn2, messageId1);
|
oneOf(db).getRawMessage(txn2, messageId1);
|
||||||
will(returnValue(raw));
|
will(returnValue(raw));
|
||||||
@@ -213,7 +213,7 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
oneOf(validator).validateMessage(message1, group);
|
oneOf(validator).validateMessage(message1, group);
|
||||||
will(returnValue(null));
|
will(returnValue(null));
|
||||||
// Store the validation result for the second message
|
// Store the validation result for the second message
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(txn3));
|
will(returnValue(txn3));
|
||||||
oneOf(db).setMessageValid(txn3, message1, clientId, false);
|
oneOf(db).setMessageValid(txn3, message1, clientId, false);
|
||||||
oneOf(db).endTransaction(txn3);
|
oneOf(db).endTransaction(txn3);
|
||||||
@@ -237,11 +237,11 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
final MessageValidator validator = context.mock(MessageValidator.class);
|
final MessageValidator validator = context.mock(MessageValidator.class);
|
||||||
final IncomingMessageHook hook =
|
final IncomingMessageHook hook =
|
||||||
context.mock(IncomingMessageHook.class);
|
context.mock(IncomingMessageHook.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, true);
|
||||||
final Transaction txn1 = new Transaction(null);
|
final Transaction txn1 = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
// Load the group
|
// Load the group
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn));
|
will(returnValue(txn));
|
||||||
oneOf(db).getGroup(txn, groupId);
|
oneOf(db).getGroup(txn, groupId);
|
||||||
will(returnValue(group));
|
will(returnValue(group));
|
||||||
@@ -250,7 +250,7 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
|||||||
oneOf(validator).validateMessage(message, group);
|
oneOf(validator).validateMessage(message, group);
|
||||||
will(returnValue(metadata));
|
will(returnValue(metadata));
|
||||||
// Store the validation result
|
// Store the validation result
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(txn1));
|
will(returnValue(txn1));
|
||||||
oneOf(db).mergeMessageMetadata(txn1, messageId, metadata);
|
oneOf(db).mergeMessageMetadata(txn1, messageId, metadata);
|
||||||
oneOf(db).setMessageValid(txn1, message, clientId, true);
|
oneOf(db).setMessageValid(txn1, message, clientId, true);
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
final CryptoComponent crypto = context.mock(CryptoComponent.class);
|
final CryptoComponent crypto = context.mock(CryptoComponent.class);
|
||||||
final Timer timer = context.mock(Timer.class);
|
final Timer timer = context.mock(Timer.class);
|
||||||
final Clock clock = context.mock(Clock.class);
|
final Clock clock = context.mock(Clock.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, true);
|
||||||
final Map<ContactId, TransportKeys> loaded =
|
final Map<ContactId, TransportKeys> loaded =
|
||||||
new LinkedHashMap<ContactId, TransportKeys>();
|
new LinkedHashMap<ContactId, TransportKeys>();
|
||||||
final TransportKeys shouldRotate = createTransportKeys(900, 0);
|
final TransportKeys shouldRotate = createTransportKeys(900, 0);
|
||||||
@@ -65,13 +65,13 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
loaded.put(contactId, shouldRotate);
|
loaded.put(contactId, shouldRotate);
|
||||||
loaded.put(contactId1, shouldNotRotate);
|
loaded.put(contactId1, shouldNotRotate);
|
||||||
final TransportKeys rotated = createTransportKeys(1000, 0);
|
final TransportKeys rotated = createTransportKeys(1000, 0);
|
||||||
final Transaction txn1 = new Transaction(null);
|
final Transaction txn1 = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
// Get the current time (1 ms after start of rotation period 1000)
|
// Get the current time (1 ms after start of rotation period 1000)
|
||||||
oneOf(clock).currentTimeMillis();
|
oneOf(clock).currentTimeMillis();
|
||||||
will(returnValue(rotationPeriodLength * 1000 + 1));
|
will(returnValue(rotationPeriodLength * 1000 + 1));
|
||||||
// Load the transport keys
|
// Load the transport keys
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn));
|
will(returnValue(txn));
|
||||||
oneOf(db).getTransportKeys(txn, transportId);
|
oneOf(db).getTransportKeys(txn, transportId);
|
||||||
will(returnValue(loaded));
|
will(returnValue(loaded));
|
||||||
@@ -88,7 +88,7 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
will(new EncodeTagAction());
|
will(new EncodeTagAction());
|
||||||
}
|
}
|
||||||
// Save the keys that were rotated
|
// Save the keys that were rotated
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(txn1));
|
will(returnValue(txn1));
|
||||||
oneOf(db).updateTransportKeys(txn1,
|
oneOf(db).updateTransportKeys(txn1,
|
||||||
Collections.singletonMap(contactId, rotated));
|
Collections.singletonMap(contactId, rotated));
|
||||||
@@ -115,7 +115,7 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
final boolean alice = true;
|
final boolean alice = true;
|
||||||
final TransportKeys transportKeys = createTransportKeys(999, 0);
|
final TransportKeys transportKeys = createTransportKeys(999, 0);
|
||||||
final TransportKeys rotated = createTransportKeys(1000, 0);
|
final TransportKeys rotated = createTransportKeys(1000, 0);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
oneOf(crypto).deriveTransportKeys(transportId, masterKey, 999,
|
oneOf(crypto).deriveTransportKeys(transportId, masterKey, 999,
|
||||||
alice);
|
alice);
|
||||||
@@ -174,7 +174,7 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
// The stream counter has been exhausted
|
// The stream counter has been exhausted
|
||||||
final TransportKeys transportKeys = createTransportKeys(1000,
|
final TransportKeys transportKeys = createTransportKeys(1000,
|
||||||
MAX_32_BIT_UNSIGNED + 1);
|
MAX_32_BIT_UNSIGNED + 1);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
oneOf(crypto).deriveTransportKeys(transportId, masterKey, 1000,
|
oneOf(crypto).deriveTransportKeys(transportId, masterKey, 1000,
|
||||||
alice);
|
alice);
|
||||||
@@ -217,8 +217,8 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
// The stream counter can be used one more time before being exhausted
|
// The stream counter can be used one more time before being exhausted
|
||||||
final TransportKeys transportKeys = createTransportKeys(1000,
|
final TransportKeys transportKeys = createTransportKeys(1000,
|
||||||
MAX_32_BIT_UNSIGNED);
|
MAX_32_BIT_UNSIGNED);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
final Transaction txn1 = new Transaction(null);
|
final Transaction txn1 = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
oneOf(crypto).deriveTransportKeys(transportId, masterKey, 1000,
|
oneOf(crypto).deriveTransportKeys(transportId, masterKey, 1000,
|
||||||
alice);
|
alice);
|
||||||
@@ -238,7 +238,7 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
// Save the keys
|
// Save the keys
|
||||||
oneOf(db).addTransportKeys(txn, contactId, transportKeys);
|
oneOf(db).addTransportKeys(txn, contactId, transportKeys);
|
||||||
// Increment the stream counter
|
// Increment the stream counter
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(txn1));
|
will(returnValue(txn1));
|
||||||
oneOf(db).incrementStreamCounter(txn1, contactId, transportId,
|
oneOf(db).incrementStreamCounter(txn1, contactId, transportId,
|
||||||
1000);
|
1000);
|
||||||
@@ -275,7 +275,7 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
final Clock clock = context.mock(Clock.class);
|
final Clock clock = context.mock(Clock.class);
|
||||||
final boolean alice = true;
|
final boolean alice = true;
|
||||||
final TransportKeys transportKeys = createTransportKeys(1000, 0);
|
final TransportKeys transportKeys = createTransportKeys(1000, 0);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
oneOf(crypto).deriveTransportKeys(transportId, masterKey, 1000,
|
oneOf(crypto).deriveTransportKeys(transportId, masterKey, 1000,
|
||||||
alice);
|
alice);
|
||||||
@@ -316,8 +316,8 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
final Clock clock = context.mock(Clock.class);
|
final Clock clock = context.mock(Clock.class);
|
||||||
final boolean alice = true;
|
final boolean alice = true;
|
||||||
final TransportKeys transportKeys = createTransportKeys(1000, 0);
|
final TransportKeys transportKeys = createTransportKeys(1000, 0);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, false);
|
||||||
final Transaction txn1 = new Transaction(null);
|
final Transaction txn1 = new Transaction(null, false);
|
||||||
// Keep a copy of the tags
|
// Keep a copy of the tags
|
||||||
final List<byte[]> tags = new ArrayList<byte[]>();
|
final List<byte[]> tags = new ArrayList<byte[]>();
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
@@ -343,7 +343,7 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
with(tagKey), with((long) REORDERING_WINDOW_SIZE));
|
with(tagKey), with((long) REORDERING_WINDOW_SIZE));
|
||||||
will(new EncodeTagAction(tags));
|
will(new EncodeTagAction(tags));
|
||||||
// Save the reordering window (previous rotation period, base 1)
|
// Save the reordering window (previous rotation period, base 1)
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(txn1));
|
will(returnValue(txn1));
|
||||||
oneOf(db).setReorderingWindow(txn1, contactId, transportId, 999,
|
oneOf(db).setReorderingWindow(txn1, contactId, transportId, 999,
|
||||||
1, new byte[REORDERING_WINDOW_SIZE / 8]);
|
1, new byte[REORDERING_WINDOW_SIZE / 8]);
|
||||||
@@ -382,18 +382,18 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
final CryptoComponent crypto = context.mock(CryptoComponent.class);
|
final CryptoComponent crypto = context.mock(CryptoComponent.class);
|
||||||
final Timer timer = context.mock(Timer.class);
|
final Timer timer = context.mock(Timer.class);
|
||||||
final Clock clock = context.mock(Clock.class);
|
final Clock clock = context.mock(Clock.class);
|
||||||
final Transaction txn = new Transaction(null);
|
final Transaction txn = new Transaction(null, true);
|
||||||
final TransportKeys transportKeys = createTransportKeys(1000, 0);
|
final TransportKeys transportKeys = createTransportKeys(1000, 0);
|
||||||
final Map<ContactId, TransportKeys> loaded =
|
final Map<ContactId, TransportKeys> loaded =
|
||||||
Collections.singletonMap(contactId, transportKeys);
|
Collections.singletonMap(contactId, transportKeys);
|
||||||
final TransportKeys rotated = createTransportKeys(1001, 0);
|
final TransportKeys rotated = createTransportKeys(1001, 0);
|
||||||
final Transaction txn1 = new Transaction(null);
|
final Transaction txn1 = new Transaction(null, false);
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
// Get the current time (the start of rotation period 1000)
|
// Get the current time (the start of rotation period 1000)
|
||||||
oneOf(clock).currentTimeMillis();
|
oneOf(clock).currentTimeMillis();
|
||||||
will(returnValue(rotationPeriodLength * 1000));
|
will(returnValue(rotationPeriodLength * 1000));
|
||||||
// Load the transport keys
|
// Load the transport keys
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(true);
|
||||||
will(returnValue(txn));
|
will(returnValue(txn));
|
||||||
oneOf(db).getTransportKeys(txn, transportId);
|
oneOf(db).getTransportKeys(txn, transportId);
|
||||||
will(returnValue(loaded));
|
will(returnValue(loaded));
|
||||||
@@ -425,7 +425,7 @@ public class TransportKeyManagerTest extends BriarTestCase {
|
|||||||
will(new EncodeTagAction());
|
will(new EncodeTagAction());
|
||||||
}
|
}
|
||||||
// Save the keys that were rotated
|
// Save the keys that were rotated
|
||||||
oneOf(db).startTransaction();
|
oneOf(db).startTransaction(false);
|
||||||
will(returnValue(txn1));
|
will(returnValue(txn1));
|
||||||
oneOf(db).updateTransportKeys(txn1,
|
oneOf(db).updateTransportKeys(txn1,
|
||||||
Collections.singletonMap(contactId, rotated));
|
Collections.singletonMap(contactId, rotated));
|
||||||
|
|||||||
Reference in New Issue
Block a user