Образец @допускающий значение null @названа в Гае / Андроид
Я пытаюсь работать над образцом приложения GAE / Android. Есть место сущности.
В сгенерированном классе PlaceEndpoint есть метод:
@ApiMethod(name = "listGame")
public CollectionResponse<Place> listPlace(
@Nullable @Named("cursor") String cursorString,
@Nullable @Named("limit") Integer limit) {
EntityManager mgr = null;
Cursor cursor = null;
List<Game> execute = null;
try {
mgr = getEntityManager();
Query query = mgr.createQuery("select from Place as Place");
if (cursorString != null && cursorString != "") {
cursor = Cursor.fromWebSafeString(cursorString);
query.setHint(JPACursorHelper.CURSOR_HINT, cursor);
}
if (limit != null) {
query.setFirstResult(0);
query.setMaxResults(limit);
}
execute = (List<Game>) query.getResultList();
cursor = JPACursorHelper.getCursor(execute);
if (cursor != null)
cursorString = cursor.toWebSafeString();
// Tight loop for fetching all entities from datastore and accomodate
// for lazy fetch.
for (Game obj : execute)
;
} finally {
mgr.close();
}
return CollectionResponse.<Game> builder().setItems(execute)
.setNextPageToken(cursorString).build();
}
Как я понимаю cursor
и limit
все необязательные параметры.
Однако я не могу понять, как передать их с помощью класса Placeednpoint
на стороне клиента:
Placeendpoint.Builder builder = new Placeendpoint.Builder(AndroidHttp.newCompatibleTransport(), new JacksonFactory(), null);
builder = CloudEndpointUtils.updateBuilder(builder);
Placeendpoint endpoint = builder.build();
try {
CollectionResponsePlace placesResponse = endpoint.listPlace().execute();
} catch (Exception e) {
e.printStackTrace();
Обычно, когда параметры не обнуляются, я бы передал их в endpoint.метод listPlace (). Но когда параметры обнуляются, клиентское приложение не видит альтернативы конструктор, который будет принимать парамы.
Как же мне тогда их сдавать?
3 ответа:
Для передачи параметров со стороны клиента при отправке запроса через конечные точки облака необходимо добавить условие для установки параметров. Чтобы отправить требуемый параметр из android, класс, в котором вы бы определили путь REST и тип метода, должен включать опцию для установки курсора и ограничения. Например, для строки cursorstring :
@com.google.api.client.util.Key private String cursorstring; public String getCursorstring() { return cursorstring; } public ListPlace setCursorstring(String cursorstring) { this.cursorstring = cursorstring; return this; }
Наконец, вызывая метод endpoint из вашего кода android, вы должны передать значение, используя setCursorstring, который будет выглядеть примерно так:
CollectionResponsePlace placesResponse = endpoint.listPlace().setCursorstring("yourcursorstring").execute();