use of io.realm.exceptions.RealmException in project realm-java by realm.
the class LinkingObjectsManagedTests method json_jsonUpdateCausesNotification.
// A JSON update should generate a notifcation
@Test
@RunTestInLooperThread
public void json_jsonUpdateCausesNotification() {
final Realm looperThreadRealm = looperThread.realm;
looperThreadRealm.beginTransaction();
AllJavaTypes child = looperThreadRealm.createObject(AllJavaTypes.class, 1);
AllJavaTypes parent = looperThreadRealm.createObject(AllJavaTypes.class, 2);
parent.setFieldObject(child);
looperThreadRealm.commitTransaction();
RealmResults<AllJavaTypes> results = looperThreadRealm.where(AllJavaTypes.class).equalTo("fieldId", 1).findAll();
assertNotNull(results);
assertEquals(results.size(), 1);
child = results.first();
RealmResults<AllJavaTypes> parents = child.getObjectParents();
assertNotNull(parents);
assertEquals(1, parents.size());
final AtomicInteger counter = new AtomicInteger(0);
RealmChangeListener<AllJavaTypes> listener = new RealmChangeListener<AllJavaTypes>() {
@Override
public void onChange(AllJavaTypes object) {
counter.incrementAndGet();
}
};
child.addChangeListener(listener);
looperThreadRealm.beginTransaction();
try {
looperThreadRealm.createOrUpdateAllFromJson(AllJavaTypes.class, "[{ \"fieldId\" : 2, \"fieldObject\" : null }]");
} catch (RealmException e) {
fail("Failed loading JSON" + e);
}
looperThreadRealm.commitTransaction();
verifyPostConditions(looperThreadRealm, new PostConditions() {
public void run(Realm realm) {
RealmResults<AllJavaTypes> results = looperThreadRealm.where(AllJavaTypes.class).equalTo("fieldId", 1).findAll();
assertNotNull(results);
assertEquals(results.size(), 1);
AllJavaTypes child = results.first();
RealmResults<AllJavaTypes> parents = child.getObjectParents();
assertNotNull(parents);
assertEquals(0, parents.size());
assertEquals(1, counter.get());
}
}, child, parent);
}
use of io.realm.exceptions.RealmException in project realm-java by realm.
the class LinkingObjectsManagedTests method json_updateList.
// Fields annotated with @LinkingObjects should not be affected by JSON updates
@Test
public void json_updateList() {
realm.beginTransaction();
AllJavaTypes child = realm.createObject(AllJavaTypes.class, 1);
AllJavaTypes parent = realm.createObject(AllJavaTypes.class, 2);
parent.getFieldList().add(child);
realm.commitTransaction();
RealmResults<AllJavaTypes> parents = child.getListParents();
assertNotNull(parents);
assertEquals(1, parents.size());
assertTrue(parents.contains(parent));
realm.beginTransaction();
try {
realm.createOrUpdateAllFromJson(AllJavaTypes.class, "[{ \"fieldId\" : 1, \"listParents\" : null }]");
} catch (RealmException e) {
fail("Failed loading JSON" + e);
}
realm.commitTransaction();
parents = child.getListParents();
assertNotNull(parents);
assertEquals(1, parents.size());
assertTrue(parents.contains(parent));
}
use of io.realm.exceptions.RealmException in project realm-java by realm.
the class JsonUtilsTest method testParseInvalidDateShouldThrowRealmException.
public void testParseInvalidDateShouldThrowRealmException() {
String invalidLongDate = "123abc";
try {
Date d = JsonUtils.stringToDate(invalidLongDate);
fail("Should fail with a RealmException.");
} catch (RealmException e) {
assertNotNull(e);
assertTrue(e.getCause() instanceof ParseException);
}
}
use of io.realm.exceptions.RealmException in project realm-java by realm.
the class JsonUtilsTest method testParseInvalidNumericDateShouldThrowRealmException.
public void testParseInvalidNumericDateShouldThrowRealmException() {
// not a date.
String invalidLongDate = "2342347289374398342759873495743";
try {
Date d = JsonUtils.stringToDate(invalidLongDate);
fail("Should fail with a RealmException.");
} catch (RealmException e) {
assertNotNull(e);
assertTrue(e.getCause() instanceof NumberFormatException);
}
}
use of io.realm.exceptions.RealmException 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 open 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 pigs on the farm : " + farmRealm.where(Pig.class).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();
}
Aggregations