Builder(Context context) { //noinspection ConstantConditions if (context == null) { throw new IllegalStateException("Call `Realm.init(Context)` before creating a RealmConfiguration"); } RealmCore.loadLibrary(context); initializeBuilder(context); }
/** * Init realm configuration and instance * @return * @throws Exception */ @Provides @Singleton RealmConfiguration provideRealmConfiguration(){ mockStatic(RealmCore.class); mockStatic(RealmLog.class); mockStatic(Realm.class); mockStatic(RealmConfiguration.class); Realm.init(RuntimeEnvironment.application); // TODO: Better solution would be just mock the RealmConfiguration.Builder class. But it seems there is some // problems for powermock to mock it (static inner class). We just mock the RealmCore.loadLibrary(Context) which // will be called by RealmConfiguration.Builder's constructor. doNothing().when(RealmCore.class); RealmCore.loadLibrary(any(Context.class)); final RealmConfiguration mockRealmConfig = PowerMockito.mock(RealmConfiguration.class); try { whenNew(RealmConfiguration.class).withAnyArguments().thenReturn(mockRealmConfig); } catch (Exception e) { e.printStackTrace(); } when(Realm.getDefaultConfiguration()).thenReturn(mockRealmConfig); // init mock realm Realm mockRealm = PowerMockito.mock(Realm.class);; // Anytime getInstance is called with any configuration, then return the mockRealm when(Realm.getDefaultInstance()).thenReturn(mockRealm); when(Realm.getInstance(mockRealmConfig)).thenReturn(mockRealm); return mockRealmConfig; }
/** * Initializes the Realm library and creates a default configuration that is ready to use. It is required to call * this method before interacting with any other of the Realm API's. * <p> * A good place is in an {@link android.app.Application} subclass: * <pre> * {@code * public class MyApplication extends Application { * \@Override * public void onCreate() { * super.onCreate(); * Realm.init(this); * } * } * } * </pre> * <p> * Remember to register it in the {@code AndroidManifest.xml} file: * <pre> * {@code * <?xml version="1.0" encoding="utf-8"?> * <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.realm.example"> * <application android:name=".MyApplication"> * // ... * </application> * </manifest> * } * </pre> * * @param context the Application Context. * @throws IllegalArgumentException if a {@code null} context is provided. * @throws IllegalStateException if {@link Context#getFilesDir()} could not be found. * @see #getDefaultInstance() */ public static synchronized void init(Context context) { if (BaseRealm.applicationContext == null) { //noinspection ConstantConditions if (context == null) { throw new IllegalArgumentException("Non-null context required."); } checkFilesDirAvailable(context); RealmCore.loadLibrary(context); setDefaultConfiguration(new RealmConfiguration.Builder(context).build()); ObjectServerFacade.getSyncFacadeIfPossible().init(context); if (context.getApplicationContext() != null) { BaseRealm.applicationContext = context.getApplicationContext(); } else { BaseRealm.applicationContext = context; } OsSharedRealm.initialize(new File(context.getFilesDir(), ".realm.temp")); } }