Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
briar
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
680
Issues
680
List
Boards
Labels
Service Desk
Milestones
Merge Requests
11
Merge Requests
11
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
briar
briar
Commits
f6611daf
Verified
Commit
f6611daf
authored
Apr 22, 2019
by
akwizgran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace Client interface with OpenDatabaseHook.
parent
00bc8ac7
Changes
31
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
151 additions
and
129 deletions
+151
-129
bramble-api/src/main/java/org/briarproject/bramble/api/identity/IdentityManager.java
...rg/briarproject/bramble/api/identity/IdentityManager.java
+6
-8
bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
.../briarproject/bramble/api/lifecycle/LifecycleManager.java
+21
-14
bramble-api/src/main/java/org/briarproject/bramble/api/sync/Client.java
...c/main/java/org/briarproject/bramble/api/sync/Client.java
+0
-14
bramble-core/src/main/java/org/briarproject/bramble/identity/IdentityManagerImpl.java
...rg/briarproject/bramble/identity/IdentityManagerImpl.java
+6
-5
bramble-core/src/main/java/org/briarproject/bramble/identity/IdentityModule.java
...ava/org/briarproject/bramble/identity/IdentityModule.java
+5
-1
bramble-core/src/main/java/org/briarproject/bramble/lifecycle/LifecycleManagerImpl.java
.../briarproject/bramble/lifecycle/LifecycleManagerImpl.java
+30
-25
bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java
...org/briarproject/bramble/properties/PropertiesModule.java
+3
-1
bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java
...ject/bramble/properties/TransportPropertyManagerImpl.java
+4
-3
bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java
...oject/bramble/versioning/ClientVersioningManagerImpl.java
+4
-4
bramble-core/src/main/java/org/briarproject/bramble/versioning/VersioningModule.java
...org/briarproject/bramble/versioning/VersioningModule.java
+3
-1
bramble-core/src/test/java/org/briarproject/bramble/identity/IdentityManagerImplTest.java
...riarproject/bramble/identity/IdentityManagerImplTest.java
+10
-6
bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyManagerImplTest.java
.../bramble/properties/TransportPropertyManagerImplTest.java
+2
-2
bramble-core/src/test/java/org/briarproject/bramble/test/TestLifecycleModule.java
...va/org/briarproject/bramble/test/TestLifecycleModule.java
+3
-2
bramble-core/src/test/java/org/briarproject/bramble/versioning/ClientVersioningManagerImplTest.java
...t/bramble/versioning/ClientVersioningManagerImplTest.java
+2
-2
briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
...c/main/java/org/briarproject/briar/android/AppModule.java
+2
-1
briar-android/src/main/java/org/briarproject/briar/android/RecentEmojiImpl.java
.../java/org/briarproject/briar/android/RecentEmojiImpl.java
+3
-3
briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
...ain/java/org/briarproject/briar/blog/BlogManagerImpl.java
+3
-3
briar-core/src/main/java/org/briarproject/briar/blog/BlogModule.java
...src/main/java/org/briarproject/briar/blog/BlogModule.java
+2
-1
briar-core/src/main/java/org/briarproject/briar/feed/FeedManagerImpl.java
...ain/java/org/briarproject/briar/feed/FeedManagerImpl.java
+5
-4
briar-core/src/main/java/org/briarproject/briar/feed/FeedModule.java
...src/main/java/org/briarproject/briar/feed/FeedModule.java
+3
-2
briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
...arproject/briar/introduction/IntroductionManagerImpl.java
+3
-3
briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionModule.java
...g/briarproject/briar/introduction/IntroductionModule.java
+2
-1
briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
...rg/briarproject/briar/messaging/MessagingManagerImpl.java
+4
-3
briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java
...ava/org/briarproject/briar/messaging/MessagingModule.java
+2
-1
briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java
...r/privategroup/invitation/GroupInvitationManagerImpl.java
+3
-3
briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationModule.java
.../briar/privategroup/invitation/GroupInvitationModule.java
+3
-1
briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
...va/org/briarproject/briar/sharing/SharingManagerImpl.java
+3
-3
briar-core/src/main/java/org/briarproject/briar/sharing/SharingModule.java
...in/java/org/briarproject/briar/sharing/SharingModule.java
+4
-2
briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
...java/org/briarproject/briar/blog/BlogManagerImplTest.java
+2
-2
briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java
...ivategroup/invitation/GroupInvitationManagerImplTest.java
+4
-4
briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingManagerImplTest.java
...riarproject/briar/sharing/BlogSharingManagerImplTest.java
+4
-4
No files found.
bramble-api/src/main/java/org/briarproject/bramble/api/identity/IdentityManager.java
View file @
f6611daf
package
org.briarproject.bramble.api.identity
;
import
org.briarproject.bramble.api.crypto.CryptoExecutor
;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.Transaction
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
@NotNullByDefault
...
...
@@ -15,17 +17,13 @@ public interface IdentityManager {
LocalAuthor
createLocalAuthor
(
String
name
);
/**
* Registers the given local identity with the manager. The identity is
* not stored until {@link #storeLocalAuthor()} is called.
* Registers the given local identity with the manager. This method should
* be called before {@link LifecycleManager#startServices(SecretKey)}. The
* identity is stored when {@link LifecycleManager#startServices(SecretKey)}
* is called.
*/
void
registerLocalAuthor
(
LocalAuthor
a
);
/**
* Stores the local identity registered with
* {@link #registerLocalAuthor(LocalAuthor)}, if any.
*/
void
storeLocalAuthor
()
throws
DbException
;
/**
* Returns the cached local identity or loads it from the database.
*/
...
...
bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
View file @
f6611daf
...
...
@@ -2,16 +2,17 @@ package org.briarproject.bramble.api.lifecycle;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.db.DatabaseComponent
;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.Transaction
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook.Priority
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.sync.Client
;
import
java.util.concurrent.ExecutorService
;
/**
* Manages the lifecycle of the app, starting {@link Client Clients}, starting
* and stopping {@link Service Services}, shutting down
* {@link ExecutorService ExecutorServices}, and opening and closing the
* {@link DatabaseComponent}.
* Manages the lifecycle of the app: opening and closing the
* {@link DatabaseComponent} starting and stopping {@link Service Services},
* and shutting down {@link ExecutorService ExecutorServices}.
*/
@NotNullByDefault
public
interface
LifecycleManager
{
...
...
@@ -43,16 +44,17 @@ public interface LifecycleManager {
}
/**
* Registers a {@link Service} to be started and stopped. This method
* should be called before {@link #startServices(SecretKey)}.
* Registers a hook to be called after the database is opened and before
* {@link Service services} are started. This method should be called
* before {@link #startServices(SecretKey)}.
*/
void
register
Service
(
Service
s
);
void
register
OpenDatabaseHook
(
OpenDatabaseHook
hook
,
Priority
p
);
/**
* Registers a {@link
Client} to be started. This method should be calle
d
* before {@link #startServices(SecretKey)}.
* Registers a {@link
Service} to be started and stopped. This metho
d
*
should be called
before {@link #startServices(SecretKey)}.
*/
void
register
Client
(
Client
c
);
void
register
Service
(
Service
s
);
/**
* Registers an {@link ExecutorService} to be shut down. This method
...
...
@@ -62,7 +64,7 @@ public interface LifecycleManager {
/**
* Opens the {@link DatabaseComponent} using the given key and starts any
* registered {@link
Client Clients} and {@link
Service Services}.
* registered {@link Service Services}.
*/
StartResult
startServices
(
SecretKey
dbKey
);
...
...
@@ -80,8 +82,7 @@ public interface LifecycleManager {
/**
* Waits for the {@link DatabaseComponent} to be opened and all registered
* {@link Client Clients} and {@link Service Services} to start before
* returning.
* {@link Service Services} to start before returning.
*/
void
waitForStartup
()
throws
InterruptedException
;
...
...
@@ -97,4 +98,10 @@ public interface LifecycleManager {
*/
LifecycleState
getLifecycleState
();
interface
OpenDatabaseHook
{
enum
Priority
{
EARLY
,
NORMAL
,
LATE
}
void
onDatabaseOpened
(
Transaction
txn
)
throws
DbException
;
}
}
\ No newline at end of file
bramble-api/src/main/java/org/briarproject/bramble/api/sync/Client.java
deleted
100644 → 0
View file @
00bc8ac7
package
org.briarproject.bramble.api.sync
;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.Transaction
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
@NotNullByDefault
public
interface
Client
{
/**
* Called at startup to create any local state needed by the client.
*/
void
createLocalState
(
Transaction
txn
)
throws
DbException
;
}
bramble-core/src/main/java/org/briarproject/bramble/identity/IdentityManagerImpl.java
View file @
f6611daf
...
...
@@ -6,6 +6,7 @@ import org.briarproject.bramble.api.db.Transaction;
import
org.briarproject.bramble.api.identity.AuthorFactory
;
import
org.briarproject.bramble.api.identity.IdentityManager
;
import
org.briarproject.bramble.api.identity.LocalAuthor
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
java.util.logging.Logger
;
...
...
@@ -14,15 +15,16 @@ import javax.annotation.Nullable;
import
javax.annotation.concurrent.ThreadSafe
;
import
javax.inject.Inject
;
import
static
java
.
util
.
logging
.
Logger
.
getLogger
;
import
static
org
.
briarproject
.
bramble
.
util
.
LogUtils
.
logDuration
;
import
static
org
.
briarproject
.
bramble
.
util
.
LogUtils
.
now
;
@ThreadSafe
@NotNullByDefault
class
IdentityManagerImpl
implements
IdentityManager
{
class
IdentityManagerImpl
implements
IdentityManager
,
OpenDatabaseHook
{
private
static
final
Logger
LOG
=
Logger
.
getLogger
(
IdentityManagerImpl
.
class
.
getName
());
getLogger
(
IdentityManagerImpl
.
class
.
getName
());
private
final
DatabaseComponent
db
;
private
final
AuthorFactory
authorFactory
;
...
...
@@ -52,13 +54,13 @@ class IdentityManagerImpl implements IdentityManager {
}
@Override
public
void
storeLocalAuthor
(
)
throws
DbException
{
public
void
onDatabaseOpened
(
Transaction
txn
)
throws
DbException
{
LocalAuthor
cached
=
cachedAuthor
;
if
(
cached
==
null
)
{
LOG
.
info
(
"No local author to store"
);
return
;
}
db
.
transaction
(
false
,
txn
->
db
.
addLocalAuthor
(
txn
,
cached
)
);
db
.
addLocalAuthor
(
txn
,
cached
);
LOG
.
info
(
"Local author stored"
);
}
...
...
@@ -89,5 +91,4 @@ class IdentityManagerImpl implements IdentityManager {
private
LocalAuthor
loadLocalAuthor
(
Transaction
txn
)
throws
DbException
{
return
db
.
getLocalAuthors
(
txn
).
iterator
().
next
();
}
}
bramble-core/src/main/java/org/briarproject/bramble/identity/IdentityModule.java
View file @
f6611daf
...
...
@@ -2,6 +2,7 @@ package org.briarproject.bramble.identity;
import
org.briarproject.bramble.api.identity.AuthorFactory
;
import
org.briarproject.bramble.api.identity.IdentityManager
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager
;
import
javax.inject.Inject
;
import
javax.inject.Singleton
;
...
...
@@ -9,6 +10,8 @@ import javax.inject.Singleton;
import
dagger.Module
;
import
dagger.Provides
;
import
static
org
.
briarproject
.
bramble
.
api
.
lifecycle
.
LifecycleManager
.
OpenDatabaseHook
.
Priority
.
EARLY
;
@Module
public
class
IdentityModule
{
...
...
@@ -24,8 +27,9 @@ public class IdentityModule {
@Provides
@Singleton
IdentityManager
provideIdentityManager
(
IdentityManager
provideIdentityManager
(
LifecycleManager
lifecycleManager
,
IdentityManagerImpl
identityManager
)
{
lifecycleManager
.
registerOpenDatabaseHook
(
identityManager
,
EARLY
);
return
identityManager
;
}
}
bramble-core/src/main/java/org/briarproject/bramble/lifecycle/LifecycleManagerImpl.java
View file @
f6611daf
package
org.briarproject.bramble.lifecycle
;
import
org.briarproject.bramble.api.Pair
;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.db.DataTooNewException
;
import
org.briarproject.bramble.api.db.DataTooOldException
;
...
...
@@ -7,14 +8,14 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.MigrationListener
;
import
org.briarproject.bramble.api.event.EventBus
;
import
org.briarproject.bramble.api.identity.IdentityManager
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook.Priority
;
import
org.briarproject.bramble.api.lifecycle.Service
;
import
org.briarproject.bramble.api.lifecycle.ServiceException
;
import
org.briarproject.bramble.api.lifecycle.event.LifecycleEvent
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.sync.Client
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.CopyOnWriteArrayList
;
import
java.util.concurrent.CountDownLatch
;
...
...
@@ -25,9 +26,11 @@ import java.util.logging.Logger;
import
javax.annotation.concurrent.ThreadSafe
;
import
javax.inject.Inject
;
import
static
java
.
util
.
Collections
.
sort
;
import
static
java
.
util
.
logging
.
Level
.
FINE
;
import
static
java
.
util
.
logging
.
Level
.
INFO
;
import
static
java
.
util
.
logging
.
Level
.
WARNING
;
import
static
java
.
util
.
logging
.
Logger
.
getLogger
;
import
static
org
.
briarproject
.
bramble
.
api
.
lifecycle
.
LifecycleManager
.
LifecycleState
.
COMPACTING_DATABASE
;
import
static
org
.
briarproject
.
bramble
.
api
.
lifecycle
.
LifecycleManager
.
LifecycleState
.
MIGRATING_DATABASE
;
import
static
org
.
briarproject
.
bramble
.
api
.
lifecycle
.
LifecycleManager
.
LifecycleState
.
RUNNING
;
...
...
@@ -49,14 +52,13 @@ import static org.briarproject.bramble.util.LogUtils.now;
class
LifecycleManagerImpl
implements
LifecycleManager
,
MigrationListener
{
private
static
final
Logger
LOG
=
Logger
.
getLogger
(
LifecycleManagerImpl
.
class
.
getName
());
getLogger
(
LifecycleManagerImpl
.
class
.
getName
());
private
final
DatabaseComponent
db
;
private
final
EventBus
eventBus
;
private
final
List
<
Service
>
services
;
private
final
List
<
Client
>
client
s
;
private
final
List
<
Pair
<
OpenDatabaseHook
,
Priority
>>
openDatabaseHook
s
;
private
final
List
<
ExecutorService
>
executors
;
private
final
IdentityManager
identityManager
;
private
final
Semaphore
startStopSemaphore
=
new
Semaphore
(
1
);
private
final
CountDownLatch
dbLatch
=
new
CountDownLatch
(
1
);
private
final
CountDownLatch
startupLatch
=
new
CountDownLatch
(
1
);
...
...
@@ -65,13 +67,11 @@ class LifecycleManagerImpl implements LifecycleManager, MigrationListener {
private
volatile
LifecycleState
state
=
STARTING
;
@Inject
LifecycleManagerImpl
(
DatabaseComponent
db
,
EventBus
eventBus
,
IdentityManager
identityManager
)
{
LifecycleManagerImpl
(
DatabaseComponent
db
,
EventBus
eventBus
)
{
this
.
db
=
db
;
this
.
eventBus
=
eventBus
;
this
.
identityManager
=
identityManager
;
services
=
new
CopyOnWriteArrayList
<>();
client
s
=
new
CopyOnWriteArrayList
<>();
openDatabaseHook
s
=
new
CopyOnWriteArrayList
<>();
executors
=
new
CopyOnWriteArrayList
<>();
}
...
...
@@ -83,10 +83,12 @@ class LifecycleManagerImpl implements LifecycleManager, MigrationListener {
}
@Override
public
void
registerClient
(
Client
c
)
{
if
(
LOG
.
isLoggable
(
INFO
))
LOG
.
info
(
"Registering client "
+
c
.
getClass
().
getSimpleName
());
clients
.
add
(
c
);
public
void
registerOpenDatabaseHook
(
OpenDatabaseHook
hook
,
Priority
p
)
{
if
(
LOG
.
isLoggable
(
INFO
))
{
LOG
.
info
(
"Registering open database hook "
+
hook
.
getClass
().
getSimpleName
());
}
openDatabaseHooks
.
add
(
new
Pair
<>(
hook
,
p
));
}
@Override
...
...
@@ -102,28 +104,31 @@ class LifecycleManagerImpl implements LifecycleManager, MigrationListener {
return
ALREADY_RUNNING
;
}
try
{
LOG
.
info
(
"
Starting services
"
);
LOG
.
info
(
"
Opening database
"
);
long
start
=
now
();
boolean
reopened
=
db
.
open
(
dbKey
,
this
);
if
(
reopened
)
logDuration
(
LOG
,
"Reopening database"
,
start
);
else
logDuration
(
LOG
,
"Creating database"
,
start
);
identityManager
.
storeLocalAuthor
();
state
=
STARTING_SERVICES
;
dbLatch
.
countDown
();
eventBus
.
broadcast
(
new
LifecycleEvent
(
STARTING_SERVICES
));
List
<
Pair
<
OpenDatabaseHook
,
Priority
>>
hooks
=
new
ArrayList
<>(
openDatabaseHooks
);
sort
(
hooks
,
(
a
,
b
)
->
a
.
getSecond
().
compareTo
(
b
.
getSecond
()));
db
.
transaction
(
false
,
txn
->
{
for
(
Client
c
:
client
s
)
{
for
(
Pair
<
OpenDatabaseHook
,
Priority
>
pair
:
hook
s
)
{
long
start1
=
now
();
c
.
createLocalState
(
txn
);
OpenDatabaseHook
hook
=
pair
.
getFirst
();
hook
.
onDatabaseOpened
(
txn
);
if
(
LOG
.
isLoggable
(
FINE
))
{
logDuration
(
LOG
,
"
Starting client
"
+
c
.
getClass
().
getSimpleName
(),
start1
);
logDuration
(
LOG
,
"
Calling open database hook
"
+
hook
.
getClass
().
getSimpleName
(),
start1
);
}
}
});
LOG
.
info
(
"Starting services"
);
state
=
STARTING_SERVICES
;
dbLatch
.
countDown
();
eventBus
.
broadcast
(
new
LifecycleEvent
(
STARTING_SERVICES
));
for
(
Service
s
:
services
)
{
start
=
now
();
s
.
startService
();
...
...
bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java
View file @
f6611daf
...
...
@@ -15,6 +15,7 @@ import javax.inject.Singleton;
import
dagger.Module
;
import
dagger.Provides
;
import
static
org
.
briarproject
.
bramble
.
api
.
lifecycle
.
LifecycleManager
.
OpenDatabaseHook
.
Priority
.
NORMAL
;
import
static
org
.
briarproject
.
bramble
.
api
.
properties
.
TransportPropertyManager
.
CLIENT_ID
;
import
static
org
.
briarproject
.
bramble
.
api
.
properties
.
TransportPropertyManager
.
MAJOR_VERSION
;
import
static
org
.
briarproject
.
bramble
.
api
.
properties
.
TransportPropertyManager
.
MINOR_VERSION
;
...
...
@@ -48,7 +49,8 @@ public class PropertiesModule {
ValidationManager
validationManager
,
ContactManager
contactManager
,
ClientVersioningManager
clientVersioningManager
,
TransportPropertyManagerImpl
transportPropertyManager
)
{
lifecycleManager
.
registerClient
(
transportPropertyManager
);
lifecycleManager
.
registerOpenDatabaseHook
(
transportPropertyManager
,
NORMAL
);
validationManager
.
registerIncomingMessageHook
(
CLIENT_ID
,
MAJOR_VERSION
,
transportPropertyManager
);
contactManager
.
registerContactHook
(
transportPropertyManager
);
...
...
bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java
View file @
f6611daf
...
...
@@ -13,11 +13,11 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.Metadata
;
import
org.briarproject.bramble.api.db.Transaction
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.plugin.TransportId
;
import
org.briarproject.bramble.api.properties.TransportProperties
;
import
org.briarproject.bramble.api.properties.TransportPropertyManager
;
import
org.briarproject.bramble.api.sync.Client
;
import
org.briarproject.bramble.api.sync.Group
;
import
org.briarproject.bramble.api.sync.Group.Visibility
;
import
org.briarproject.bramble.api.sync.GroupId
;
...
...
@@ -40,7 +40,8 @@ import javax.inject.Inject;
@Immutable
@NotNullByDefault
class
TransportPropertyManagerImpl
implements
TransportPropertyManager
,
Client
,
ContactHook
,
ClientVersioningHook
,
IncomingMessageHook
{
OpenDatabaseHook
,
ContactHook
,
ClientVersioningHook
,
IncomingMessageHook
{
private
final
DatabaseComponent
db
;
private
final
ClientHelper
clientHelper
;
...
...
@@ -67,7 +68,7 @@ class TransportPropertyManagerImpl implements TransportPropertyManager,
}
@Override
public
void
createLocalState
(
Transaction
txn
)
throws
DbException
{
public
void
onDatabaseOpened
(
Transaction
txn
)
throws
DbException
{
if
(
db
.
containsGroup
(
txn
,
localGroup
.
getId
()))
return
;
db
.
addGroup
(
txn
,
localGroup
);
// Set things up for any pre-existing contacts
...
...
bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java
View file @
f6611daf
...
...
@@ -12,10 +12,10 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.Metadata
;
import
org.briarproject.bramble.api.db.Transaction
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook
;
import
org.briarproject.bramble.api.lifecycle.Service
;
import
org.briarproject.bramble.api.lifecycle.ServiceException
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.sync.Client
;
import
org.briarproject.bramble.api.sync.ClientId
;
import
org.briarproject.bramble.api.sync.Group
;
import
org.briarproject.bramble.api.sync.Group.Visibility
;
...
...
@@ -53,8 +53,8 @@ import static org.briarproject.bramble.versioning.ClientVersioningConstants.MSG_
import
static
org
.
briarproject
.
bramble
.
versioning
.
ClientVersioningConstants
.
MSG_KEY_UPDATE_VERSION
;
@NotNullByDefault
class
ClientVersioningManagerImpl
implements
ClientVersioningManager
,
Client
,
Service
,
ContactHook
,
IncomingMessageHook
{
class
ClientVersioningManagerImpl
implements
ClientVersioningManager
,
Service
,
OpenDatabaseHook
,
ContactHook
,
IncomingMessageHook
{
private
final
DatabaseComponent
db
;
private
final
ClientHelper
clientHelper
;
...
...
@@ -124,7 +124,7 @@ class ClientVersioningManagerImpl implements ClientVersioningManager, Client,
}
@Override
public
void
createLocalState
(
Transaction
txn
)
throws
DbException
{
public
void
onDatabaseOpened
(
Transaction
txn
)
throws
DbException
{
if
(
db
.
containsGroup
(
txn
,
localGroup
.
getId
()))
return
;
db
.
addGroup
(
txn
,
localGroup
);
// Set things up for any pre-existing contacts
...
...
bramble-core/src/main/java/org/briarproject/bramble/versioning/VersioningModule.java
View file @
f6611daf
...
...
@@ -14,6 +14,7 @@ import javax.inject.Singleton;
import
dagger.Module
;
import
dagger.Provides
;
import
static
org
.
briarproject
.
bramble
.
api
.
lifecycle
.
LifecycleManager
.
OpenDatabaseHook
.
Priority
.
NORMAL
;
import
static
org
.
briarproject
.
bramble
.
api
.
versioning
.
ClientVersioningManager
.
CLIENT_ID
;
import
static
org
.
briarproject
.
bramble
.
api
.
versioning
.
ClientVersioningManager
.
MAJOR_VERSION
;
...
...
@@ -34,7 +35,8 @@ public class VersioningModule {
ClientVersioningManagerImpl
clientVersioningManager
,
LifecycleManager
lifecycleManager
,
ContactManager
contactManager
,
ValidationManager
validationManager
)
{
lifecycleManager
.
registerClient
(
clientVersioningManager
);
lifecycleManager
.
registerOpenDatabaseHook
(
clientVersioningManager
,
NORMAL
);
lifecycleManager
.
registerService
(
clientVersioningManager
);
contactManager
.
registerContactHook
(
clientVersioningManager
);
validationManager
.
registerIncomingMessageHook
(
CLIENT_ID
,
MAJOR_VERSION
,
...
...
bramble-core/src/test/java/org/briarproject/bramble/identity/IdentityManagerImplTest.java
View file @
f6611daf
...
...
@@ -4,7 +4,6 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.Transaction
;
import
org.briarproject.bramble.api.identity.AuthorFactory
;
import
org.briarproject.bramble.api.identity.IdentityManager
;
import
org.briarproject.bramble.api.identity.LocalAuthor
;
import
org.briarproject.bramble.test.BrambleMockTestCase
;
import
org.briarproject.bramble.test.DbExpectations
;
...
...
@@ -27,7 +26,7 @@ public class IdentityManagerImplTest extends BrambleMockTestCase {
private
final
LocalAuthor
localAuthor
=
getLocalAuthor
();
private
final
Collection
<
LocalAuthor
>
localAuthors
=
singletonList
(
localAuthor
);
private
IdentityManager
identityManager
;
private
IdentityManager
Impl
identityManager
;
@Before
public
void
setUp
()
{
...
...
@@ -35,15 +34,20 @@ public class IdentityManagerImplTest extends BrambleMockTestCase {
}
@Test
public
void
testRegisterAndStoreLocalAuthor
()
throws
Exception
{
public
void
testOpenDatabaseHookWithoutLocalAuthorRegistered
()
throws
Exception
{
identityManager
.
onDatabaseOpened
(
txn
);
}
@Test
public
void
testOpenDatabaseHookWithLocalAuthorRegistered
()
throws
Exception
{
context
.
checking
(
new
DbExpectations
()
{{
oneOf
(
db
).
transaction
(
with
(
false
),
withDbRunnable
(
txn
));
oneOf
(
db
).
addLocalAuthor
(
txn
,
localAuthor
);
}});
identityManager
.
registerLocalAuthor
(
localAuthor
);
assertEquals
(
localAuthor
,
identityManager
.
getLocalAuthor
());
identityManager
.
storeLocalAuthor
();
identityManager
.
onDatabaseOpened
(
txn
);
}
@Test
...
...
bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyManagerImplTest.java
View file @
f6611daf
...
...
@@ -115,7 +115,7 @@ public class TransportPropertyManagerImplTest extends BrambleMockTestCase {
1
,
true
,
true
);
TransportPropertyManagerImpl
t
=
createInstance
();
t
.
createLocalState
(
txn
);
t
.
onDatabaseOpened
(
txn
);
}
@Test
...
...
@@ -129,7 +129,7 @@ public class TransportPropertyManagerImplTest extends BrambleMockTestCase {
}});
TransportPropertyManagerImpl
t
=
createInstance
();
t
.
createLocalState
(
txn
);
t
.
onDatabaseOpened
(
txn
);
}
@Test
...
...
bramble-core/src/test/java/org/briarproject/bramble/test/TestLifecycleModule.java
View file @
f6611daf
...
...
@@ -3,10 +3,10 @@ package org.briarproject.bramble.test;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.lifecycle.IoExecutor
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook.Priority
;
import
org.briarproject.bramble.api.lifecycle.Service
;
import
org.briarproject.bramble.api.lifecycle.ShutdownManager
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.sync.Client
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ExecutorService
;
...
...
@@ -32,7 +32,8 @@ public class TestLifecycleModule {
}
@Override
public
void
registerClient
(
Client
c
)
{
public
void
registerOpenDatabaseHook
(
OpenDatabaseHook
hook
,
Priority
p
)
{
}
@Override
...
...
bramble-core/src/test/java/org/briarproject/bramble/versioning/ClientVersioningManagerImplTest.java
View file @
f6611daf
...
...
@@ -83,7 +83,7 @@ public class ClientVersioningManagerImplTest extends BrambleMockTestCase {
expectAddingContact
();
ClientVersioningManagerImpl
c
=
createInstance
();
c
.
createLocalState
(
txn
);
c
.
onDatabaseOpened
(
txn
);
}
@Test
...
...
@@ -95,7 +95,7 @@ public class ClientVersioningManagerImplTest extends BrambleMockTestCase {
}});
ClientVersioningManagerImpl
c
=
createInstance
();
c
.
createLocalState
(
txn
);
c
.
onDatabaseOpened
(
txn
);
}
@Test
...
...
briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
View file @
f6611daf
...
...
@@ -56,6 +56,7 @@ import dagger.Provides;
import
static
android
.
content
.
Context
.
MODE_PRIVATE
;
import
static
java
.
util
.
Arrays
.
asList
;
import
static
java
.
util
.
Collections
.
emptyList
;
import
static
org
.
briarproject
.
bramble
.
api
.
lifecycle
.
LifecycleManager
.
OpenDatabaseHook
.
Priority
.
NORMAL
;
import
static
org
.
briarproject
.
bramble
.
api
.
reporting
.
ReportingConstants
.
DEV_ONION_ADDRESS
;
import
static
org
.
briarproject
.
bramble
.
api
.
reporting
.
ReportingConstants
.
DEV_PUBLIC_KEY_HEX
;
...
...
@@ -226,7 +227,7 @@ public class AppModule {
@Singleton
RecentEmoji
provideRecentEmoji
(
LifecycleManager
lifecycleManager
,
RecentEmojiImpl
recentEmoji
)
{
lifecycleManager
.
register
Client
(
recentEmoji
);
lifecycleManager
.
register
OpenDatabaseHook
(
recentEmoji
,
NORMAL
);
return
recentEmoji
;
}
}
briar-android/src/main/java/org/briarproject/briar/android/RecentEmojiImpl.java
View file @
f6611daf
...
...
@@ -8,11 +8,11 @@ import com.vanniktech.emoji.emoji.Emoji;
import
org.briarproject.bramble.api.db.DatabaseExecutor
;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.Transaction
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook
;
import
org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault
;
import
org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault
;
import
org.briarproject.bramble.api.settings.Settings
;
import
org.briarproject.bramble.api.settings.SettingsManager
;
import
org.briarproject.bramble.api.sync.Client
;
import
org.briarproject.bramble.api.system.AndroidExecutor
;
import
org.briarproject.bramble.util.StringUtils
;
...
...
@@ -30,7 +30,7 @@ import static org.briarproject.briar.android.settings.SettingsFragment.SETTINGS_
@MethodsNotNullByDefault
@ParametersNotNullByDefault
class
RecentEmojiImpl
implements
RecentEmoji
,
Client
{
class
RecentEmojiImpl
implements
RecentEmoji
,
OpenDatabaseHook
{
private
static
final
Logger
LOG
=
Logger
.
getLogger
(
RecentEmojiImpl
.
class
.
getName
());
...
...
@@ -72,7 +72,7 @@ class RecentEmojiImpl implements RecentEmoji, Client {
}
@Override
public
void
createLocalState
(
Transaction
txn
)
throws
DbException
{
public
void
onDatabaseOpened
(
Transaction
txn
)
throws
DbException
{
Settings
settings
=
settingsManager
.
getSettings
(
txn
,
SETTINGS_NAMESPACE
);
String
serialized
=
settings
.
get
(
EMOJI_LRU_PREFERENCE
);
...
...
briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
View file @
f6611daf
...
...
@@ -18,8 +18,8 @@ import org.briarproject.bramble.api.identity.AuthorId;
import
org.briarproject.bramble.api.identity.AuthorInfo
;
import
org.briarproject.bramble.api.identity.IdentityManager
;
import
org.briarproject.bramble.api.identity.LocalAuthor
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.sync.Client
;
import
org.briarproject.bramble.api.sync.Group
;
import
org.briarproject.bramble.api.sync.GroupId
;
import
org.briarproject.bramble.api.sync.Message
;
...
...
@@ -68,7 +68,7 @@ import static org.briarproject.briar.api.blog.MessageType.WRAPPED_POST;
@NotNullByDefault
class
BlogManagerImpl
extends
BdfIncomingMessageHook
implements
BlogManager
,
ContactHook
,
Client
{
OpenDatabaseHook
,
ContactHook
{
private
final
ContactManager
contactManager
;
private
final
IdentityManager
identityManager
;
...
...
@@ -90,7 +90,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
}
@Override