use of io.realm.RealmConfiguration in project realm-java by realm.
the class OsObjectStoreTests method callWithLock_throwInCallback.
// Test if a java exception can be thrown from the callback.
@Test
public void callWithLock_throwInCallback() {
RealmConfiguration config = configFactory.createConfiguration();
final RuntimeException exception = new RuntimeException();
try {
OsObjectStore.callWithLock(config, new Runnable() {
@Override
public void run() {
throw exception;
}
});
fail();
} catch (RuntimeException e) {
assertEquals(exception, e);
}
// The lock should be released after exception thrown
final AtomicBoolean callbackCalled = new AtomicBoolean(false);
assertTrue(OsObjectStore.callWithLock(config, new Runnable() {
@Override
public void run() {
callbackCalled.set(true);
}
}));
}
use of io.realm.RealmConfiguration in project realm-java by realm.
the class RunInLooperThread method before.
@Override
protected void before() throws Throwable {
super.before();
RealmConfiguration config = createConfiguration(UUID.randomUUID().toString());
List<Object> refs = new ArrayList<>();
List<Realm> realms = new ArrayList<>();
List<Closeable> closeables = new ArrayList<>();
synchronized (lock) {
realmConfiguration = config;
realm = null;
backgroundHandler = null;
keepStrongReference = refs;
testRealms = realms;
closableResources = closeables;
}
}
use of io.realm.RealmConfiguration in project realm-java by realm.
the class ModulesExampleActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_modules_example);
rootLayout = ((LinearLayout) findViewById(R.id.container));
rootLayout.removeAllViews();
// The default Realm instance implicitly knows about all classes in the realmModuleAppExample Android Studio
// module. This does not include the classes from the realmModuleLibraryExample AS module so a Realm using this
// configuration would know about the following classes: { Cow, Pig, Snake, Spider }
RealmConfiguration defaultConfig = new RealmConfiguration.Builder().build();
// It is possible to extend the default schema by adding additional Realm modules using modules(). This can
// also be Realm modules from libraries. The below Realm contains the following classes: { Cow, Pig, Snake,
// Spider, Cat, Dog }
RealmConfiguration farmAnimalsConfig = new RealmConfiguration.Builder().name("farm.realm").modules(Realm.getDefaultModule(), new DomesticAnimalsModule()).build();
// Or you can completely replace the default schema.
// This Realm contains the following classes: { Elephant, Lion, Zebra, Snake, Spider }
RealmConfiguration exoticAnimalsConfig = new RealmConfiguration.Builder().name("exotic.realm").modules(new ZooAnimalsModule(), new CreepyAnimalsModule()).build();
// Multiple Realms can be opened at the same time
showStatus("Opening multiple Realms");
Realm defaultRealm = Realm.getInstance(defaultConfig);
final Realm farmRealm = Realm.getInstance(farmAnimalsConfig);
Realm exoticRealm = Realm.getInstance(exoticAnimalsConfig);
// Objects can be added to each Realm independantly
showStatus("Create objects in the default Realm");
defaultRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.createObject(Cow.class);
realm.createObject(Pig.class);
realm.createObject(Snake.class);
realm.createObject(Spider.class);
}
});
showStatus("Create objects in the farm Realm");
farmRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.createObject(Cow.class);
realm.createObject(Pig.class);
realm.createObject(Cat.class);
realm.createObject(Dog.class);
}
});
showStatus("Create objects in the exotic Realm");
exoticRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.createObject(Elephant.class);
realm.createObject(Lion.class);
realm.createObject(Zebra.class);
realm.createObject(Snake.class);
realm.createObject(Spider.class);
}
});
// You can copy objects between Realms
showStatus("Copy objects between Realms");
showStatus("Number of pigs on the farm : " + farmRealm.where(Pig.class).count());
showStatus("Copy pig from defaultRealm to farmRealm");
final Pig defaultPig = defaultRealm.where(Pig.class).findFirst();
farmRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealm(defaultPig);
}
});
showStatus("Number of unnamed pigs on the farm : " + farmRealm.where(Pig.class).isNull("name").count());
// Each Realm is restricted to only accept the classes in their schema.
showStatus("Trying to add an unsupported class");
defaultRealm.beginTransaction();
try {
defaultRealm.createObject(Elephant.class);
} catch (RealmException expected) {
showStatus("This throws a :" + expected.toString());
} finally {
defaultRealm.cancelTransaction();
}
// And Realms in library projects are independent from Realms in the app code
showStatus("Interacting with library code that uses Realm internally");
int animals = 5;
Zoo libraryZoo = new Zoo();
libraryZoo.open();
showStatus("Adding animals: " + animals);
libraryZoo.addAnimals(5);
showStatus("Number of animals in the library Realm:" + libraryZoo.getNoOfAnimals());
libraryZoo.close();
// Remember to close all open Realms
defaultRealm.close();
farmRealm.close();
exoticRealm.close();
}
use of io.realm.RealmConfiguration in project realm-java by realm.
the class EncryptionExampleActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Generate a key
// IMPORTANT! This is a silly way to generate a key. It is also never stored.
// For proper key handling please consult:
// * https://developer.android.com/training/articles/keystore.html
// * http://nelenkov.blogspot.dk/2012/05/storing-application-secrets-in-androids.html
byte[] key = new byte[64];
new SecureRandom().nextBytes(key);
// An encrypted Realm file can be opened in Realm Studio by using a Hex encoded version
// of the key. Copy the key from Logcat, then download the Realm file from the device using
// the method described here: https://stackoverflow.com/a/28486297/1389357
// The path is normally `/data/data/io.realm.examples.encryption/files/default.realm`
Log.i("RealmEncryptionKey", Util.bytesToHex(key));
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder().encryptionKey(key).build();
// Start with a clean slate every time
Realm.deleteRealm(realmConfiguration);
// Open the Realm with encryption enabled
realm = Realm.getInstance(realmConfiguration);
// Everything continues to work as normal except for that the file is encrypted on disk
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Person person = realm.createObject(Person.class);
person.setName("Happy Person");
person.setAge(14);
}
});
Person person = realm.where(Person.class).findFirst();
Log.i(TAG, String.format("Person name: %s", person.getName()));
}
Aggregations