Vitaliy A
Vitaliy A

Reputation: 3838

Complex RealmObject: RealmObject with other RealmObject inside

I have issue to create complex RealmObject: It goes:

class User extends RealmObject{
public String name;
public Position position;
}

class Position extends RealmObject{
public double lat;
public double lon;
}

Creation code:

User user = realm.createObject(User.class);
user.name = "xcv";
Position position = realm.createObject(Position.class);
position.lat = message.sourceCoords.lat;
position.lon = message.sourceCoords.lon;  

user.position = position;

Result of this is crash as follow:

java.lang.StackOverflowError: stack size 1036KB
                                                                             at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:539)
                                                                             at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:111)
                                                                             at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:553)
                                                                             at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:111)
                                                                             at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:546) 

What i am doing wrong?

Upvotes: 0

Views: 327

Answers (1)

EpicPandaForce
EpicPandaForce

Reputation: 81588

You should create your GSON instance like this

Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
    @Override
    public boolean shouldSkipField(FieldAttributes f) {
        return f.getDeclaringClass().equals(RealmObject.class);
    }

    @Override
    public boolean shouldSkipClass(Class<?> clazz) {
        return false;
    }
})
.create();

Upvotes: 1

Related Questions