@Override public Cursor getCursorAfter() { return new Cursor(cursor); }
public static Cursor copyFrom(byte[] bytes) { return new Cursor(ByteString.copyFrom(checkNotNull(bytes))); }
static Binding fromPb(com.google.datastore.v1.GqlQueryParameter argPb) { switch (argPb.getParameterTypeCase()) { case CURSOR: return new Binding(new Cursor(argPb.getCursor())); case VALUE: return new Binding(Value.fromPb(argPb.getValue())); default: throw new AssertionError("Unexpected enum value " + argPb.getParameterTypeCase()); } } }
@Test public void testToUrlSafe() { byte[][] invalidUtf8 = new byte[][] {{(byte) 0xfe}, {(byte) 0xc1, (byte) 0xbf}, {(byte) 0xc0}, {(byte) 0x80}}; for (byte[] bytes : invalidUtf8) { assertFalse(ByteString.copyFrom(bytes).isValidUtf8()); Cursor cursor = new Cursor(ByteString.copyFrom(bytes)); assertEquals(cursor, Cursor.fromUrlSafe(cursor.toUrlSafe())); } }
@Override StructuredQuery<V> nextQuery(com.google.datastore.v1.RunQueryResponse responsePb) { Builder<V> builder = toBuilder(); builder.setStartCursor(new Cursor(responsePb.getBatch().getEndCursor())); if (offset > 0 && responsePb.getBatch().getSkippedResults() < offset) { builder.setOffset(offset - responsePb.getBatch().getSkippedResults()); } else { builder.setOffset(0); if (limit != null) { builder.setLimit(limit - responsePb.getBatch().getEntityResultsCount()); } } return builder.build(); }
@Override public Cursor getCursorAfter() { return new Cursor(cursor); }
public static Cursor copyFrom(byte[] bytes) { return new Cursor(ByteString.copyFrom(checkNotNull(bytes))); }
static Binding fromPb(com.google.datastore.v1.GqlQueryParameter argPb) { switch (argPb.getParameterTypeCase()) { case CURSOR: return new Binding(new Cursor(argPb.getCursor())); case VALUE: return new Binding(Value.fromPb(argPb.getValue())); default: throw new AssertionError("Unexpected enum value " + argPb.getParameterTypeCase()); } } }
@Override StructuredQuery<V> nextQuery(com.google.datastore.v1.RunQueryResponse responsePb) { Builder<V> builder = toBuilder(); builder.setStartCursor(new Cursor(responsePb.getBatch().getEndCursor())); if (offset > 0 && responsePb.getBatch().getSkippedResults() < offset) { builder.setOffset(offset - responsePb.getBatch().getSkippedResults()); } else { builder.setOffset(0); if (limit != null) { builder.setLimit(limit - responsePb.getBatch().getEntityResultsCount()); } } return builder.build(); }