/** <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code> */ public Builder addResponses( int index, com.google.firestore.v1beta1.ListenResponse.Builder builderForValue) { if (responsesBuilder_ == null) { ensureResponsesIsMutable(); responses_.add(index, builderForValue.build()); onChanged(); } else { responsesBuilder_.addMessage(index, builderForValue.build()); } return this; } /** <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code> */
/** * * * <pre> * A [Document][google.firestore.v1beta1.Document] has changed. * </pre> * * <code>.google.firestore.v1beta1.DocumentChange document_change = 3;</code> */ public com.google.firestore.v1beta1.DocumentChange.Builder getDocumentChangeBuilder() { return getDocumentChangeFieldBuilder().getBuilder(); } /**
/** * * * <pre> * A [Document][google.firestore.v1beta1.Document] has been deleted. * </pre> * * <code>.google.firestore.v1beta1.DocumentDelete document_delete = 4;</code> */ public com.google.firestore.v1beta1.DocumentDelete.Builder getDocumentDeleteBuilder() { return getDocumentDeleteFieldBuilder().getBuilder(); } /**
com.google.firestore.v1beta1.DocumentRemoveOrBuilder>( (com.google.firestore.v1beta1.DocumentRemove) responseType_, getParentForChildren(), isClean()); responseType_ = null; onChanged();
com.google.firestore.v1beta1.DocumentDeleteOrBuilder>( (com.google.firestore.v1beta1.DocumentDelete) responseType_, getParentForChildren(), isClean()); responseType_ = null; onChanged();
com.google.firestore.v1beta1.ExistenceFilterOrBuilder>( (com.google.firestore.v1beta1.ExistenceFilter) responseType_, getParentForChildren(), isClean()); responseType_ = null; onChanged();
com.google.firestore.v1beta1.TargetChangeOrBuilder>( (com.google.firestore.v1beta1.TargetChange) responseType_, getParentForChildren(), isClean()); responseType_ = null; onChanged();
com.google.firestore.v1beta1.DocumentChangeOrBuilder>( (com.google.firestore.v1beta1.DocumentChange) responseType_, getParentForChildren(), isClean()); responseType_ = null; onChanged();
@Test @SuppressWarnings("all") public void listenTest() throws Exception { ListenResponse expectedResponse = ListenResponse.newBuilder().build(); mockFirestore.addResponse(expectedResponse); String formattedDatabase = FirestoreClient.formatDatabaseRootName("[PROJECT]", "[DATABASE]"); ListenRequest request = ListenRequest.newBuilder().setDatabase(formattedDatabase).build(); MockStreamObserver<ListenResponse> responseObserver = new MockStreamObserver<>(); BidiStreamingCallable<ListenRequest, ListenResponse> callable = client.listenCallable(); ApiStreamObserver<ListenRequest> requestObserver = callable.bidiStreamingCall(responseObserver); requestObserver.onNext(request); requestObserver.onCompleted(); List<ListenResponse> actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); }
/** * * * <pre> * A filter to apply to the set of documents previously returned for the * given target. * Returned when documents may have been removed from the given target, but * the exact documents are unknown. * </pre> * * <code>.google.firestore.v1beta1.ExistenceFilter filter = 5;</code> */ public com.google.firestore.v1beta1.ExistenceFilter.Builder getFilterBuilder() { return getFilterFieldBuilder().getBuilder(); } /**
@Test public void queryWatchHandlesTargetRemoval() throws InterruptedException { addQueryListener(); awaitAddTarget(); send(addTarget()); send(current()); send(doc("coll/doc1", SINGLE_FIELD_PROTO)); send(snapshot()); awaitQuerySnapshot(new SnapshotDocument(ChangeType.ADDED, "coll/doc1", SINGLE_FIELD_MAP)); ListenResponse.Builder request = doc("coll/doc1", SINGLE_FIELD_PROTO).toBuilder(); request.getDocumentChangeBuilder().clearTargetIds(); request.getDocumentChangeBuilder().addRemovedTargetIds(TARGET_ID); send(request.build()); send(snapshot()); awaitQuerySnapshot(new SnapshotDocument(ChangeType.REMOVED, "coll/doc1", null)); }
/** * * * <pre> * A [Document][google.firestore.v1beta1.Document] has been removed from a target (because it is no longer * relevant to that target). * </pre> * * <code>.google.firestore.v1beta1.DocumentRemove document_remove = 6;</code> */ public com.google.firestore.v1beta1.DocumentRemove.Builder getDocumentRemoveBuilder() { return getDocumentRemoveFieldBuilder().getBuilder(); } /**
/** * * * <pre> * Targets have changed. * </pre> * * <code>.google.firestore.v1beta1.TargetChange target_change = 2;</code> */ public com.google.firestore.v1beta1.TargetChange.Builder getTargetChangeBuilder() { return getTargetChangeFieldBuilder().getBuilder(); } /**
/** <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code> */ public Builder addResponses( com.google.firestore.v1beta1.ListenResponse.Builder builderForValue) { if (responsesBuilder_ == null) { ensureResponsesIsMutable(); responses_.add(builderForValue.build()); onChanged(); } else { responsesBuilder_.addMessage(builderForValue.build()); } return this; } /** <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code> */
/** <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code> */ public Builder setResponses( int index, com.google.firestore.v1beta1.ListenResponse.Builder builderForValue) { if (responsesBuilder_ == null) { ensureResponsesIsMutable(); responses_.set(index, builderForValue.build()); onChanged(); } else { responsesBuilder_.setMessage(index, builderForValue.build()); } return this; } /** <code>repeated .google.firestore.v1beta1.ListenResponse responses = 1;</code> */
private ListenResponse doc(String docPath, Map<String, Value> singleFieldProto) { DocumentChange.Builder documentChange = DocumentChange.newBuilder(); documentChange.addTargetIds(TARGET_ID); documentChange.setDocument( Document.newBuilder() .setName(String.format("%s/documents/%s", DATABASE_NAME, docPath)) .putAllFields(singleFieldProto) .setUpdateTime(updateTime())); ListenResponse.Builder response = ListenResponse.newBuilder(); response.setDocumentChange(documentChange); return response.build(); }
private ListenResponse snapshot() { ListenResponse.Builder response = ListenResponse.newBuilder(); response.setTargetChange( TargetChange.newBuilder() .setTargetChangeType(TargetChangeType.NO_CHANGE) .setReadTime(Timestamp.getDefaultInstance()) .setResumeToken(RESUME_TOKEN)); return response.build(); }
@Test public void queryWatchHandlesIgnoresDifferentTarget() throws InterruptedException { addQueryListener(); awaitAddTarget(); send(addTarget()); send(current()); ListenResponse.Builder request = doc("coll/doc1", SINGLE_FIELD_PROTO).toBuilder(); request.getDocumentChangeBuilder().clearTargetIds(); request.getDocumentChangeBuilder().addTargetIds(0x2); send(request.build()); send(snapshot()); awaitQuerySnapshot(); }
private ListenResponse docRemove(String docPath) { ListenResponse.Builder response = ListenResponse.newBuilder(); response.setDocumentRemove( DocumentRemove.newBuilder() .addRemovedTargetIds(TARGET_ID) .setDocument(String.format("%s/documents/%s", DATABASE_NAME, docPath))); return response.build(); }