Skip to content

Instantly share code, notes, and snippets.

@cattaka
Created October 5, 2016 09:20
Show Gist options
  • Save cattaka/fed5931088325db068b09c1da37455fc to your computer and use it in GitHub Desktop.
Save cattaka/fed5931088325db068b09c1da37455fc to your computer and use it in GitHub Desktop.
import net.vvakame.util.jsonpullparser.JsonFormatException;
import net.vvakame.util.jsonpullparser.JsonPullParser;
import net.vvakame.util.jsonpullparser.util.JsonUtil;
import net.vvakame.util.jsonpullparser.util.OnJsonObjectAddListener;
import net.vvakame.util.jsonpullparser.util.TokenConverter;
import java.io.IOException;
import java.io.Writer;
import io.realm.RealmList;
import io.realm.RealmObject;
/**
* Created by cattaka on 2016/10/05.
*/
public abstract class RealmListConverter<T extends RealmObject> extends TokenConverter<RealmList<T>> {
TokenConverter<T> singleConverter;
public RealmListConverter(TokenConverter<T> singleConverter) {
this.singleConverter = singleConverter;
}
@Override
public RealmList<T> parse(JsonPullParser parser, OnJsonObjectAddListener listener) throws IOException, JsonFormatException {
JsonPullParser.State state = parser.getEventType();
switch (state) {
case START_ARRAY: {
RealmList<T> results = new RealmList<>();
while ((state = parser.lookAhead()) != JsonPullParser.State.END_ARRAY) {
results.add(singleConverter.parse(parser, listener));
}
return results;
}
default: {
return null;
}
}
}
@Override
public void encodeNullToNull(Writer writer, RealmList<T> objs) throws IOException {
if (objs != null) {
JsonUtil.startArray(writer);
boolean first = true;
for (T obj : objs) {
if (first) {
first = false;
} else {
JsonUtil.addSeparator(writer);
}
singleConverter.encodeNullToNull(writer, obj);
}
JsonUtil.endArray(writer);
} else {
writer.write("null");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment