Clean up some duplicated code.

This commit is contained in:
akwizgran
2019-04-26 17:56:31 +01:00
parent faba9a6b70
commit 0c99ef0e5b

View File

@@ -98,9 +98,7 @@ class IdentityManagerImpl implements IdentityManager, OpenDatabaseHook {
@Override @Override
public void onDatabaseOpened(Transaction txn) throws DbException { public void onDatabaseOpened(Transaction txn) throws DbException {
Account cached = cachedAccount; Account cached = getCachedAccount(txn);
if (cached == null)
cachedAccount = cached = loadAccountWithKeyPair(txn);
if (shouldStoreAccount) { if (shouldStoreAccount) {
db.addAccount(txn, cached); db.addAccount(txn, cached);
LOG.info("Account stored"); LOG.info("Account stored");
@@ -116,32 +114,32 @@ class IdentityManagerImpl implements IdentityManager, OpenDatabaseHook {
@Override @Override
public LocalAuthor getLocalAuthor() throws DbException { public LocalAuthor getLocalAuthor() throws DbException {
Account cached = cachedAccount; Account cached = cachedAccount;
if (cached == null) { if (cached == null)
cachedAccount = cached = db.transactionWithResult(true, cached = db.transactionWithResult(true, this::getCachedAccount);
this::loadAccountWithKeyPair);
}
return cached.getLocalAuthor(); return cached.getLocalAuthor();
} }
@Override @Override
public LocalAuthor getLocalAuthor(Transaction txn) throws DbException { public LocalAuthor getLocalAuthor(Transaction txn) throws DbException {
Account cached = cachedAccount; return getCachedAccount(txn).getLocalAuthor();
if (cached == null)
cachedAccount = cached = loadAccountWithKeyPair(txn);
return cached.getLocalAuthor();
} }
@Override @Override
public byte[][] getHandshakeKeys(Transaction txn) throws DbException { public byte[][] getHandshakeKeys(Transaction txn) throws DbException {
Account cached = cachedAccount; Account cached = getCachedAccount(txn);
if (cached == null)
cachedAccount = cached = loadAccountWithKeyPair(txn);
return new byte[][] { return new byte[][] {
cached.getHandshakePublicKey(), cached.getHandshakePublicKey(),
cached.getHandshakePrivateKey() cached.getHandshakePrivateKey()
}; };
} }
private Account getCachedAccount(Transaction txn) throws DbException {
Account cached = cachedAccount;
if (cached == null)
cachedAccount = cached = loadAccountWithKeyPair(txn);
return cached;
}
private Account loadAccountWithKeyPair(Transaction txn) throws DbException { private Account loadAccountWithKeyPair(Transaction txn) throws DbException {
Account a = loadAccount(txn); Account a = loadAccount(txn);
LOG.info("Account loaded"); LOG.info("Account loaded");