Replace default methods with helper classes.

This is a workaround for AbstractMethodErrors
thrown by on-device tests.
This commit is contained in:
akwizgran
2019-12-11 16:27:55 +00:00
parent 5ba64577bd
commit 5962d3c763
35 changed files with 182 additions and 144 deletions

View File

@@ -1,8 +1,8 @@
package org.briarproject.briar.android;
import org.briarproject.bramble.BrambleAndroidModule;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.briar.BriarCoreModule;
import org.briarproject.bramble.BrambleAndroidEagerSingletons;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.briar.BriarCoreEagerSingletons;
public class BriarTestComponentApplication extends BriarApplicationImpl {
@@ -12,10 +12,10 @@ public class BriarTestComponentApplication extends BriarApplicationImpl {
.appModule(new AppModule(this)).build();
// We need to load the eager singletons directly after making the
// dependency graphs
BrambleCoreModule.initEagerSingletons(component); // FIXME AbstractMethodError
BrambleAndroidModule.initEagerSingletons(component);
BriarCoreModule.initEagerSingletons(component);
AndroidEagerSingletons.initEagerSingletons(component);
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(component);
BrambleAndroidEagerSingletons.Helper.injectEagerSingletons(component);
BriarCoreEagerSingletons.Helper.injectEagerSingletons(component);
AndroidEagerSingletons.Helper.injectEagerSingletons(component);
return component;
}

View File

@@ -73,7 +73,7 @@ import dagger.Component;
})
public interface AndroidComponent
extends BrambleCoreEagerSingletons, BrambleAndroidEagerSingletons,
BriarCoreEagerSingletons {
BriarCoreEagerSingletons, AndroidEagerSingletons {
// Exposed objects
@CryptoExecutor
@@ -176,7 +176,4 @@ public interface AndroidComponent
void inject(EmojiTextInputView textInputView);
void inject(BriarModelLoader briarModelLoader);
// Eager singleton load
void inject(AppModule.EagerSingletons init);
}

View File

@@ -1,8 +1,13 @@
package org.briarproject.briar.android;
class AndroidEagerSingletons {
interface AndroidEagerSingletons {
static void initEagerSingletons(AndroidComponent c) {
c.inject(new AppModule.EagerSingletons());
void inject(AppModule.EagerSingletons init);
class Helper {
static void injectEagerSingletons(AndroidEagerSingletons c) {
c.inject(new AppModule.EagerSingletons());
}
}
}

View File

@@ -17,9 +17,9 @@ import com.vanniktech.emoji.google.GoogleEmojiProvider;
import org.acra.ACRA;
import org.acra.ReportingInteractionMode;
import org.acra.annotation.ReportsCrashes;
import org.briarproject.bramble.BrambleAndroidModule;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.briar.BriarCoreModule;
import org.briarproject.bramble.BrambleAndroidEagerSingletons;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.briar.BriarCoreEagerSingletons;
import org.briarproject.briar.BuildConfig;
import org.briarproject.briar.R;
import org.briarproject.briar.android.logging.CachingLogHandler;
@@ -133,10 +133,12 @@ public class BriarApplicationImpl extends Application
// We need to load the eager singletons directly after making the
// dependency graphs
BrambleCoreModule.initEagerSingletons(androidComponent);
BrambleAndroidModule.initEagerSingletons(androidComponent);
BriarCoreModule.initEagerSingletons(androidComponent);
AndroidEagerSingletons.initEagerSingletons(androidComponent);
BrambleCoreEagerSingletons.Helper
.injectEagerSingletons(androidComponent);
BrambleAndroidEagerSingletons.Helper
.injectEagerSingletons(androidComponent);
BriarCoreEagerSingletons.Helper.injectEagerSingletons(androidComponent);
AndroidEagerSingletons.Helper.injectEagerSingletons(androidComponent);
return androidComponent;
}

View File

@@ -7,9 +7,9 @@ import android.preference.PreferenceManager;
import com.vanniktech.emoji.EmojiManager;
import com.vanniktech.emoji.google.GoogleEmojiProvider;
import org.briarproject.bramble.BrambleAndroidModule;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.briar.BriarCoreModule;
import org.briarproject.bramble.BrambleAndroidEagerSingletons;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.briar.BriarCoreEagerSingletons;
import java.util.Collection;
import java.util.logging.LogRecord;
@@ -42,10 +42,14 @@ public class TestBriarApplication extends Application
// We need to load the eager singletons directly after making the
// dependency graphs
BrambleCoreModule.initEagerSingletons(applicationComponent);
BrambleAndroidModule.initEagerSingletons(applicationComponent);
BriarCoreModule.initEagerSingletons(applicationComponent);
AndroidEagerSingletons.initEagerSingletons(applicationComponent);
BrambleCoreEagerSingletons.Helper
.injectEagerSingletons(applicationComponent);
BrambleAndroidEagerSingletons.Helper
.injectEagerSingletons(applicationComponent);
BriarCoreEagerSingletons.Helper
.injectEagerSingletons(applicationComponent);
AndroidEagerSingletons.Helper
.injectEagerSingletons(applicationComponent);
EmojiManager.install(new GoogleEmojiProvider());
}