Я использую конечные точки Google Cloud с Objectify, чтобы создать бэкэнд Java для моего мобильного приложения.Все прекрасно работает, за исключением того, что полное дерево JSON возвращается, даже когда я использую группы загрузки Objectify.Например, подмножество дерева включает в себя класс Building, который имеет Address и список этажей:
public class Building {
@Load(Everything.class)
private Ref<Address> address;
@Load(Lite.class})
private List<Ref<Floor>> floors = new ArrayList<Ref<Floor>>();
public Address getAddress() {
return Deref.deref(address);
}
public List<Floor> getFloors() {
return Deref.deref(floors);
}
}
public class BuildingEndpoint {
@ApiMethod(name = "building.getLite", path = "building_get_lite")
public Building getLite(@Named("id") Long id) {
Building building = ofy().load().group(Lite.class).type(Building.class).id(id).now();
return building;
}
}
Согласно документам Objectify, адрес должен загружаться, но НЕ этажи, однако всезагружается (так же как и дочерние классы Пола, вплоть до иерархии объектов).
На всякий случай, если проблема связана с разыменованием, я включаю его здесь:
public class Deref {
public static class Func<T> implements Function<Ref<T>, T> {
public static Func<Object> INSTANCE = new Func<Object>();
@Override
public T apply(Ref<T> ref) {
return deref(ref);
}
}
public static <T> T deref(Ref<T> ref) {
return ref == null ? null : ref.get();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public static <T> List<T> deref(List<Ref<T>> reflist) {
return Lists.transform(reflist, (Func)Func.INSTANCE);
}
}
Любая идея о том, почему группы загрузки не работают, а иерархия объектов ПОЛНАЯ загружается, высоко ценится.