0

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?

Vitaliy A
  • 3,651
  • 1
  • 32
  • 34
  • 1
    Possible duplicate of [Making GSON & Realm play nice](http://stackoverflow.com/questions/26260214/making-gson-realm-play-nice) – EpicPandaForce Nov 27 '16 at 18:04

1 Answers1

1

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();
EpicPandaForce
  • 79,669
  • 27
  • 256
  • 428