From ca11577fde1a6fbbbae0f4c318296658139151ec Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Thu, 6 Jun 2019 16:54:31 -0400 Subject: [PATCH] Create new google-cloud-conformance-tests module A new module where common code related to conformance tests can be shared. * Includes a rudimentary classpath scanner that can be used to locate test definitions. (The firestore test suite currently have 224 test definitions.) * The classpath scanner includes a suite of tests to ensure it can accurately find resources in jar files and directories. * Tests have been ran against the following JVMs on Linux x64 and verified to pass. ``` openjdk version "1.7.0_75" OpenJDK Runtime Environment (build 1.7.0_75-b13) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode) java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) java version "11.0.2" 2019-01-15 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode) openjdk version "12" 2019-03-19 OpenJDK Runtime Environment (build 12+33) OpenJDK 64-Bit Server VM (build 12+33, mixed mode, sharing) ``` * Add new script generate-conformance-tests.sh that can reliably update the various files that make up the conformance tests. * Currently the script only updates firestore tests, but will be updated for the other projects in a later commit. * Updating of the git-submodule linking to conformance tests is not done by the script, it is expected that the developer will do the bumping. Bump firestore conformance tests to googleapis/conformance-tests@5a984706af594b8ec2ef549040139c9704554bf4 * import proto definition * generate updated TestDefinition from definition * Add individual test files * Add dependency from `com.google.cloud:google-cloud-firestore` -> `com.google.cloud:google-cloud-conformance-tests` * Move proto inclusion from `com.google.cloud:google-cloud-firestore`/tests to `com.google.cloud:google-cloud-conformance-tests`/main * Add maven profile `gen-conformance-protos` that can be used to generate protos in `com.google.cloud:google-cloud-conformance-tests` --- .gitmodules | 3 + .../google-cloud-firestore/pom.xml | 29 +- .../firestore/ConformanceConversions.java | 2 +- .../cloud/firestore/ConformanceTest.java | 64 +- .../firestore/conformance/test-suite.binproto | Bin 55916 -> 0 bytes google-cloud-clients/pom.xml | 6 + .../conformance-tests | 1 + .../copyright-header.txt | 15 + .../generate-conformance-tests.sh | 73 + .../google-cloud-conformance-tests/pom.xml | 130 + .../conformance/ConformanceTestLocator.java | 196 + .../firestore/v1}/TestDefinition.java | 7597 +++++++++-------- .../conformance/firestore/v1/tests.proto | 213 + .../firestore/v1/create-all-transforms.json | 73 + .../v1/create-arrayremove-multi.json | 69 + .../v1/create-arrayremove-nested.json | 53 + .../v1/create-arrayremove-noarray-nested.json | 13 + .../v1/create-arrayremove-noarray.json | 13 + .../v1/create-arrayremove-with-st.json | 13 + .../firestore/v1/create-arrayremove.json | 53 + .../firestore/v1/create-arrayunion-multi.json | 69 + .../v1/create-arrayunion-nested.json | 53 + .../v1/create-arrayunion-noarray-nested.json | 13 + .../v1/create-arrayunion-noarray.json | 13 + .../v1/create-arrayunion-with-st.json | 13 + .../firestore/v1/create-arrayunion.json | 53 + .../firestore/v1/create-basic.json | 30 + .../firestore/v1/create-complex.json | 63 + .../v1/create-del-noarray-nested.json | 13 + .../firestore/v1/create-del-noarray.json | 13 + .../firestore/v1/create-empty.json | 25 + .../firestore/v1/create-nodel.json | 13 + .../firestore/v1/create-nosplit.json | 39 + .../firestore/v1/create-special-chars.json | 39 + .../firestore/v1/create-st-alone.json | 31 + .../firestore/v1/create-st-multi.json | 45 + .../firestore/v1/create-st-nested.json | 41 + .../v1/create-st-noarray-nested.json | 13 + .../firestore/v1/create-st-noarray.json | 13 + .../v1/create-st-with-empty-map.json | 49 + .../conformance/firestore/v1/create-st.json | 41 + .../firestore/v1/delete-exists-precond.json | 25 + .../firestore/v1/delete-no-precond.json | 19 + .../firestore/v1/delete-time-precond.json | 25 + .../conformance/firestore/v1/get-basic.json | 14 + .../firestore/v1/listen-add-mod-del-add.json | 206 + .../firestore/v1/listen-add-one.json | 72 + .../firestore/v1/listen-add-three.json | 156 + .../firestore/v1/listen-doc-remove.json | 101 + .../firestore/v1/listen-empty.json | 27 + .../firestore/v1/listen-filter-nop.json | 203 + .../firestore/v1/listen-multi-docs.json | 414 + .../firestore/v1/listen-nocurrent.json | 119 + .../firestore/v1/listen-nomod.json | 123 + .../v1/listen-removed-target-ids.json | 113 + .../firestore/v1/listen-reset.json | 309 + .../firestore/v1/listen-target-add-nop.json | 81 + .../v1/listen-target-add-wrong-id.json | 49 + .../firestore/v1/listen-target-remove.json | 45 + .../v1/query-arrayremove-cursor.json | 31 + .../firestore/v1/query-arrayremove-where.json | 25 + .../firestore/v1/query-arrayunion-cursor.json | 31 + .../firestore/v1/query-arrayunion-where.json | 25 + .../firestore/v1/query-bad-NaN.json | 25 + .../firestore/v1/query-bad-null.json | 25 + .../v1/query-cursor-docsnap-order.json | 81 + .../v1/query-cursor-docsnap-orderby-name.json | 91 + .../v1/query-cursor-docsnap-where-eq.json | 65 + ...uery-cursor-docsnap-where-neq-orderby.json | 85 + .../v1/query-cursor-docsnap-where-neq.json | 75 + .../firestore/v1/query-cursor-docsnap.json | 44 + .../v1/query-cursor-endbefore-empty-map.json | 55 + .../v1/query-cursor-endbefore-empty.json | 27 + .../firestore/v1/query-cursor-no-order.json | 21 + .../v1/query-cursor-startat-empty-map.json | 55 + .../v1/query-cursor-startat-empty.json | 27 + .../firestore/v1/query-cursor-vals-1a.json | 68 + .../firestore/v1/query-cursor-vals-1b.json | 66 + .../firestore/v1/query-cursor-vals-2.json | 91 + .../firestore/v1/query-cursor-vals-docid.json | 67 + .../v1/query-cursor-vals-last-wins.json | 82 + .../firestore/v1/query-del-cursor.json | 31 + .../firestore/v1/query-del-where.json | 25 + .../firestore/v1/query-invalid-operator.json | 25 + .../v1/query-invalid-path-order.json | 25 + .../v1/query-invalid-path-select.json | 26 + .../v1/query-invalid-path-where.json | 26 + .../v1/query-offset-limit-last-wins.json | 34 + .../firestore/v1/query-offset-limit.json | 28 + .../conformance/firestore/v1/query-order.json | 54 + .../firestore/v1/query-select-empty.json | 32 + .../firestore/v1/query-select-last-wins.json | 54 + .../firestore/v1/query-select.json | 46 + .../firestore/v1/query-st-cursor.json | 31 + .../firestore/v1/query-st-where.json | 25 + .../firestore/v1/query-where-2.json | 71 + .../firestore/v1/query-where-NaN.json | 39 + .../firestore/v1/query-where-null.json | 39 + .../conformance/firestore/v1/query-where.json | 42 + .../firestore/v1/query-wrong-collection.json | 22 + .../firestore/v1/set-all-transforms.json | 70 + .../firestore/v1/set-arrayremove-multi.json | 66 + .../firestore/v1/set-arrayremove-nested.json | 50 + .../v1/set-arrayremove-noarray-nested.json | 13 + .../firestore/v1/set-arrayremove-noarray.json | 13 + .../firestore/v1/set-arrayremove-with-st.json | 13 + .../firestore/v1/set-arrayremove.json | 50 + .../firestore/v1/set-arrayunion-multi.json | 66 + .../firestore/v1/set-arrayunion-nested.json | 50 + .../v1/set-arrayunion-noarray-nested.json | 13 + .../firestore/v1/set-arrayunion-noarray.json | 13 + .../firestore/v1/set-arrayunion-with-st.json | 13 + .../firestore/v1/set-arrayunion.json | 50 + .../conformance/firestore/v1/set-basic.json | 27 + .../conformance/firestore/v1/set-complex.json | 60 + .../firestore/v1/set-del-merge-alone.json | 37 + .../firestore/v1/set-del-merge.json | 48 + .../firestore/v1/set-del-mergeall.json | 36 + .../firestore/v1/set-del-noarray-nested.json | 13 + .../firestore/v1/set-del-noarray.json | 13 + .../firestore/v1/set-del-nomerge.json | 22 + .../firestore/v1/set-del-nonleaf.json | 22 + .../firestore/v1/set-del-wo-merge.json | 13 + .../conformance/firestore/v1/set-empty.json | 22 + .../firestore/v1/set-merge-fp.json | 48 + .../firestore/v1/set-merge-nested.json | 48 + .../firestore/v1/set-merge-nonleaf.json | 50 + .../firestore/v1/set-merge-prefix.json | 28 + .../firestore/v1/set-merge-present.json | 27 + .../conformance/firestore/v1/set-merge.json | 41 + .../firestore/v1/set-mergeall-empty.json | 29 + .../firestore/v1/set-mergeall-nested.json | 45 + .../firestore/v1/set-mergeall.json | 39 + .../conformance/firestore/v1/set-nodel.json | 13 + .../conformance/firestore/v1/set-nosplit.json | 36 + .../firestore/v1/set-special-chars.json | 36 + .../firestore/v1/set-st-alone-mergeall.json | 31 + .../firestore/v1/set-st-alone.json | 34 + .../firestore/v1/set-st-merge-both.json | 57 + .../v1/set-st-merge-nonleaf-alone.json | 47 + .../firestore/v1/set-st-merge-nonleaf.json | 58 + .../firestore/v1/set-st-merge-nowrite.json | 37 + .../firestore/v1/set-st-mergeall.json | 46 + .../firestore/v1/set-st-multi.json | 42 + .../firestore/v1/set-st-nested.json | 38 + .../firestore/v1/set-st-noarray-nested.json | 13 + .../firestore/v1/set-st-noarray.json | 13 + .../firestore/v1/set-st-nomerge.json | 41 + .../firestore/v1/set-st-with-empty-map.json | 46 + .../conformance/firestore/v1/set-st.json | 38 + .../firestore/v1/update-all-transforms.json | 78 + .../v1/update-arrayremove-alone.json | 43 + .../v1/update-arrayremove-multi.json | 75 + .../v1/update-arrayremove-nested.json | 59 + .../v1/update-arrayremove-noarray-nested.json | 13 + .../v1/update-arrayremove-noarray.json | 13 + .../v1/update-arrayremove-with-st.json | 13 + .../firestore/v1/update-arrayremove.json | 58 + .../firestore/v1/update-arrayunion-alone.json | 43 + .../firestore/v1/update-arrayunion-multi.json | 75 + .../v1/update-arrayunion-nested.json | 59 + .../v1/update-arrayunion-noarray-nested.json | 13 + .../v1/update-arrayunion-noarray.json | 13 + .../v1/update-arrayunion-with-st.json | 13 + .../firestore/v1/update-arrayunion.json | 58 + .../firestore/v1/update-badchar.json | 13 + .../firestore/v1/update-basic.json | 35 + .../firestore/v1/update-complex.json | 69 + .../firestore/v1/update-del-alone.json | 30 + .../firestore/v1/update-del-dot.json | 46 + .../firestore/v1/update-del-nested.json | 13 + .../v1/update-del-noarray-nested.json | 13 + .../firestore/v1/update-del-noarray.json | 13 + .../conformance/firestore/v1/update-del.json | 36 + .../firestore/v1/update-exists-precond.json | 16 + .../v1/update-fp-empty-component.json | 13 + ...ate-nested-transform-and-nested-value.json | 52 + .../firestore/v1/update-no-paths.json | 13 + .../v1/update-paths-all-transforms.json | 105 + .../v1/update-paths-arrayremove-alone.json | 52 + .../v1/update-paths-arrayremove-multi.json | 96 + .../v1/update-paths-arrayremove-nested.json | 74 + ...date-paths-arrayremove-noarray-nested.json | 22 + .../v1/update-paths-arrayremove-noarray.json | 22 + .../v1/update-paths-arrayremove-with-st.json | 22 + .../v1/update-paths-arrayremove.json | 73 + .../v1/update-paths-arrayunion-alone.json | 52 + .../v1/update-paths-arrayunion-multi.json | 96 + .../v1/update-paths-arrayunion-nested.json | 74 + ...pdate-paths-arrayunion-noarray-nested.json | 22 + .../v1/update-paths-arrayunion-noarray.json | 22 + .../v1/update-paths-arrayunion-with-st.json | 22 + .../firestore/v1/update-paths-arrayunion.json | 73 + .../firestore/v1/update-paths-basic.json | 44 + .../firestore/v1/update-paths-complex.json | 84 + .../firestore/v1/update-paths-del-alone.json | 39 + .../firestore/v1/update-paths-del-nested.json | 22 + .../v1/update-paths-del-noarray-nested.json | 22 + .../v1/update-paths-del-noarray.json | 22 + .../firestore/v1/update-paths-del.json | 51 + .../v1/update-paths-exists-precond.json | 25 + .../firestore/v1/update-paths-fp-del.json | 59 + .../v1/update-paths-fp-dup-transforms.json | 34 + .../firestore/v1/update-paths-fp-dup.json | 34 + .../v1/update-paths-fp-empty-component.json | 23 + .../firestore/v1/update-paths-fp-empty.json | 20 + .../firestore/v1/update-paths-fp-multi.json | 51 + .../firestore/v1/update-paths-fp-nosplit.json | 57 + ...ths-nested-transform-and-nested-value.json | 69 + .../firestore/v1/update-paths-no-paths.json | 12 + .../firestore/v1/update-paths-prefix-1.json | 29 + .../firestore/v1/update-paths-prefix-2.json | 29 + .../firestore/v1/update-paths-prefix-3.json | 29 + .../v1/update-paths-special-chars.json | 62 + .../firestore/v1/update-paths-st-alone.json | 40 + .../firestore/v1/update-paths-st-multi.json | 72 + .../firestore/v1/update-paths-st-nested.json | 62 + .../v1/update-paths-st-noarray-nested.json | 22 + .../firestore/v1/update-paths-st-noarray.json | 22 + .../v1/update-paths-st-with-empty-map.json | 63 + .../firestore/v1/update-paths-st.json | 61 + .../firestore/v1/update-paths-uptime.json | 47 + .../firestore/v1/update-prefix-1.json | 13 + .../firestore/v1/update-prefix-2.json | 13 + .../firestore/v1/update-prefix-3.json | 13 + .../firestore/v1/update-quoting.json | 47 + .../firestore/v1/update-split-top-level.json | 47 + .../firestore/v1/update-split.json | 47 + .../firestore/v1/update-st-alone.json | 31 + .../firestore/v1/update-st-dot.json | 31 + .../firestore/v1/update-st-multi.json | 51 + .../firestore/v1/update-st-nested.json | 47 + .../v1/update-st-noarray-nested.json | 13 + .../firestore/v1/update-st-noarray.json | 13 + .../v1/update-st-with-empty-map.json | 54 + .../conformance/firestore/v1/update-st.json | 46 + .../firestore/v1/update-uptime.json | 38 + .../ConformanceTestLocatorTest.java | 115 + .../junit/runner/next-2019-hashtag.gif | Bin 0 -> 318560 bytes .../junit/runner/next-2019-hashtag_readme.md | 7 + google-cloud-testing/pom.xml | 1 + 241 files changed, 15233 insertions(+), 3425 deletions(-) create mode 100644 .gitmodules delete mode 100644 google-cloud-clients/google-cloud-firestore/src/test/resources/com/google/cloud/firestore/conformance/test-suite.binproto create mode 160000 google-cloud-testing/google-cloud-conformance-tests/conformance-tests create mode 100644 google-cloud-testing/google-cloud-conformance-tests/copyright-header.txt create mode 100755 google-cloud-testing/google-cloud-conformance-tests/generate-conformance-tests.sh create mode 100644 google-cloud-testing/google-cloud-conformance-tests/pom.xml create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/java/com/google/cloud/conformance/ConformanceTestLocator.java rename {google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/conformance => google-cloud-testing/google-cloud-conformance-tests/src/main/java/com/google/cloud/conformance/firestore/v1}/TestDefinition.java (67%) create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/proto/google/cloud/conformance/firestore/v1/tests.proto create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-all-transforms.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-with-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-with-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-basic.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-complex.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-del-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-del-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-empty.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-nodel.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-nosplit.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-special-chars.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-with-empty-map.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-exists-precond.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-no-precond.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-time-precond.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/get-basic.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-mod-del-add.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-one.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-three.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-doc-remove.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-empty.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-filter-nop.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-multi-docs.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-nocurrent.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-nomod.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-removed-target-ids.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-reset.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-add-nop.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-add-wrong-id.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-remove.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayremove-cursor.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayremove-where.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayunion-cursor.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayunion-where.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-bad-NaN.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-bad-null.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-order.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-orderby-name.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-eq.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-neq-orderby.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-neq.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-endbefore-empty-map.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-endbefore-empty.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-no-order.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-startat-empty-map.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-startat-empty.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-1a.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-1b.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-2.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-docid.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-last-wins.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-del-cursor.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-del-where.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-operator.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-order.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-select.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-where.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-offset-limit-last-wins.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-offset-limit.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-order.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select-empty.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select-last-wins.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-st-cursor.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-st-where.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-2.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-NaN.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-null.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-wrong-collection.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-all-transforms.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-with-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-with-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-basic.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-complex.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-merge-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-merge.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-mergeall.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-nomerge.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-nonleaf.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-wo-merge.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-empty.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-fp.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-nonleaf.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-prefix.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-present.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall-empty.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-nodel.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-nosplit.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-special-chars.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-alone-mergeall.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-both.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nonleaf-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nonleaf.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nowrite.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-mergeall.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-nomerge.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-with-empty-map.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-all-transforms.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-with-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-with-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-badchar.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-basic.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-complex.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-dot.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-exists-precond.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-fp-empty-component.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-nested-transform-and-nested-value.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-no-paths.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-all-transforms.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-with-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-with-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-basic.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-complex.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-exists-precond.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-del.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-dup-transforms.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-dup.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-empty-component.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-empty.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-nosplit.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-nested-transform-and-nested-value.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-no-paths.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-1.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-2.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-3.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-special-chars.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-with-empty-map.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-uptime.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-1.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-2.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-3.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-quoting.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-split-top-level.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-split.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-alone.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-dot.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-multi.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-noarray-nested.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-noarray.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-with-empty-map.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-uptime.json create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/test/java/com/google/cloud/conformance/ConformanceTestLocatorTest.java create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/test/resources/junit/runner/next-2019-hashtag.gif create mode 100644 google-cloud-testing/google-cloud-conformance-tests/src/test/resources/junit/runner/next-2019-hashtag_readme.md diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000000..82e2f3350028 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "google-cloud-testing/google-cloud-conformance-tests/conformance-tests"] + path = google-cloud-testing/google-cloud-conformance-tests/conformance-tests + url = git@github.com:googleapis/conformance-tests.git diff --git a/google-cloud-clients/google-cloud-firestore/pom.xml b/google-cloud-clients/google-cloud-firestore/pom.xml index acda85591464..b7dca6c955f4 100644 --- a/google-cloud-clients/google-cloud-firestore/pom.xml +++ b/google-cloud-clients/google-cloud-firestore/pom.xml @@ -108,32 +108,11 @@ testlib test + + com.google.cloud + google-cloud-conformance-tests + - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.0.0 - - - add-test-resource - generate-test-resources - - add-test-resource - - - - - src/test/proto - - - - - - - - diff --git a/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/ConformanceConversions.java b/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/ConformanceConversions.java index 775d5602bc89..522a0addd04d 100644 --- a/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/ConformanceConversions.java +++ b/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/ConformanceConversions.java @@ -17,7 +17,7 @@ package com.google.cloud.firestore; import com.google.cloud.Timestamp; -import com.google.cloud.firestore.conformance.TestDefinition; +import com.google.cloud.conformance.firestore.v1.TestDefinition; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; diff --git a/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/ConformanceTest.java b/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/ConformanceTest.java index 3e7e6b768c2c..335939c529a2 100644 --- a/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/ConformanceTest.java +++ b/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/ConformanceTest.java @@ -16,6 +16,7 @@ package com.google.cloud.firestore; +import static com.google.cloud.conformance.ConformanceTestLocator.newMatchPattern; import static com.google.cloud.firestore.ConformanceConversions.convertInput; import static com.google.cloud.firestore.ConformanceConversions.convertPath; import static com.google.cloud.firestore.ConformanceConversions.convertPaths; @@ -35,23 +36,25 @@ import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; import com.google.cloud.Timestamp; +import com.google.cloud.conformance.ConformanceTestLocator; +import com.google.cloud.conformance.ConformanceTestLocator.MatchPattern; +import com.google.cloud.conformance.firestore.v1.TestDefinition; +import com.google.cloud.conformance.firestore.v1.TestDefinition.Clause; +import com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest; +import com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor; +import com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest; +import com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange; +import com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind; +import com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot; +import com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest; +import com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest; +import com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy; +import com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest; +import com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot; +import com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest; +import com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest; +import com.google.cloud.conformance.firestore.v1.TestDefinition.Where; import com.google.cloud.firestore.Query.Direction; -import com.google.cloud.firestore.conformance.TestDefinition; -import com.google.cloud.firestore.conformance.TestDefinition.Clause; -import com.google.cloud.firestore.conformance.TestDefinition.CreateTest; -import com.google.cloud.firestore.conformance.TestDefinition.Cursor; -import com.google.cloud.firestore.conformance.TestDefinition.DeleteTest; -import com.google.cloud.firestore.conformance.TestDefinition.DocChange; -import com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind; -import com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot; -import com.google.cloud.firestore.conformance.TestDefinition.GetTest; -import com.google.cloud.firestore.conformance.TestDefinition.ListenTest; -import com.google.cloud.firestore.conformance.TestDefinition.OrderBy; -import com.google.cloud.firestore.conformance.TestDefinition.SetTest; -import com.google.cloud.firestore.conformance.TestDefinition.Snapshot; -import com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest; -import com.google.cloud.firestore.conformance.TestDefinition.UpdateTest; -import com.google.cloud.firestore.conformance.TestDefinition.Where; import com.google.cloud.firestore.spi.v1.FirestoreRpc; import com.google.common.base.Preconditions; import com.google.firestore.v1.BatchGetDocumentsRequest; @@ -63,8 +66,11 @@ import com.google.firestore.v1.Value; import com.google.protobuf.AbstractMessage; import com.google.protobuf.Message; +import com.google.protobuf.util.JsonFormat; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -94,9 +100,6 @@ @RunWith(AllTests.class) public class ConformanceTest { - private static final String TEST_FILE = - "/com/google/cloud/firestore/conformance/test-suite.binproto"; - /** Excluded tests by test description. */ private static final Set excludedTests = Collections.emptySet(); @@ -109,7 +112,7 @@ public class ConformanceTest { public ConformanceTest() {} /** Generate the test suite based on the tests defined in test_data.binprotos. */ - public static TestSuite suite() throws IOException { + public static TestSuite suite() throws Exception { TestSuite suite = new TestSuite(); final TestDefinition.TestSuite testSuite = parseTests(); for (Test test : initTests(testSuite)) { @@ -134,9 +137,24 @@ private static List initTests(TestDefinition.TestSuite testSuite) { } /** Reads the test definition from the Proto file. */ - private static TestDefinition.TestSuite parseTests() throws IOException { - final InputStream is = ConformanceTest.class.getResourceAsStream(TEST_FILE); - return TestDefinition.TestSuite.parseFrom(is); + private static TestDefinition.TestSuite parseTests() throws IOException, URISyntaxException { + final ClassLoader cl = Thread.currentThread().getContextClassLoader(); + final MatchPattern matchPattern = + newMatchPattern("com/google/cloud/conformance/firestore/v1", ".json"); + final List jsonResources = + ConformanceTestLocator.findAllResourcePaths(matchPattern, cl); + + final TestDefinition.TestSuite.Builder suite = TestDefinition.TestSuite.newBuilder(); + + for (String jsonResource : jsonResources) { + final InputStream is = cl.getResourceAsStream(jsonResource); + Assert.assertNotNull(String.format("Unable to load test definition: '%s'", jsonResource), is); + final InputStreamReader reader = new InputStreamReader(is); + final TestDefinition.TestSuite.Builder testBuilder = TestDefinition.TestSuite.newBuilder(); + JsonFormat.parser().merge(reader, testBuilder); + suite.addAllTests(testBuilder.build().getTestsList()); + } + return suite.build(); } /** Returns the test case for the provided test definition. */ diff --git a/google-cloud-clients/google-cloud-firestore/src/test/resources/com/google/cloud/firestore/conformance/test-suite.binproto b/google-cloud-clients/google-cloud-firestore/src/test/resources/com/google/cloud/firestore/conformance/test-suite.binproto deleted file mode 100644 index 6e3ce397375224cab4ee93e9ae05495a182bc983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55916 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 XkdCyl;JMA|W2cKk$_T;UZ_xe^@qaSD diff --git a/google-cloud-clients/pom.xml b/google-cloud-clients/pom.xml index 76592f3a8b9a..be3f80153ba7 100644 --- a/google-cloud-clients/pom.xml +++ b/google-cloud-clients/pom.xml @@ -420,6 +420,12 @@ checker-compat-qual 2.5.5 + + com.google.cloud + google-cloud-conformance-tests + 0.1.0-SNAPSHOT + test + diff --git a/google-cloud-testing/google-cloud-conformance-tests/conformance-tests b/google-cloud-testing/google-cloud-conformance-tests/conformance-tests new file mode 160000 index 000000000000..5a984706af59 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/conformance-tests @@ -0,0 +1 @@ +Subproject commit 5a984706af594b8ec2ef549040139c9704554bf4 diff --git a/google-cloud-testing/google-cloud-conformance-tests/copyright-header.txt b/google-cloud-testing/google-cloud-conformance-tests/copyright-header.txt new file mode 100644 index 000000000000..1761adb96e2d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/copyright-header.txt @@ -0,0 +1,15 @@ +/* + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/google-cloud-testing/google-cloud-conformance-tests/generate-conformance-tests.sh b/google-cloud-testing/google-cloud-conformance-tests/generate-conformance-tests.sh new file mode 100755 index 000000000000..cbb4e3408e23 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/generate-conformance-tests.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# Copyright 2019 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -o errexit -o nounset -o pipefail + +function generateFirestore() { + + rm generate.log 2> /dev/null || true + + local javaPackage="com/google/cloud/conformance/firestore/v1" + + msg "Cleaning existing generated protos" + rm -rf src/main/java/${javaPackage}/* + msg "Cleaning existing test definitions" + rm -rf src/main/resources/${javaPackage}/* + msg "Cleaning existing proto files" + rm -rf src/main/proto/google/cloud/conformance/firestore/v1/* + + msg "Copying new proto files" + cp -R -t src/main/proto/ conformance-tests/firestore/v1/proto/* + msg "Copying new test definitions" + cp -R -t "src/main/resources/${javaPackage}/" conformance-tests/firestore/v1/testcase/* + + msg "Generating protos" + mvn -Pgen-conformance-protos clean verify > generate.log 2>&1 + + msg "Adding copyright header to generated sources" + ## java classes generated from protoc do not include the copyright header + ## prepend it to the generated files + local moduleDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + pushd target/generated-sources/protobuf/java/${javaPackage} + for f in $(find ./ -type f -name '*.java'); do + echo "Processing $f" + mv ${f} ${f}.tmp + cat ${moduleDir}/copyright-header.txt > ${f} + cat ${f}.tmp >> ${f} + rm ${f}.tmp + done + popd + + ## move generated proto class(es) into the main src root + cp -R -t src/main/java/${javaPackage} target/generated-sources/protobuf/java/${javaPackage}/* + + ## cleanup any generated files that may have not been moved over + mvn clean > /dev/null 2>&1 + + msg "Building module" + ## ensure building of the module still works + mvn clean package + +} + +function main() { + generateFirestore +} + +function now { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n' ;} +function msg { println "$*" >&2 ;} +function println { printf '%s\n' "$(now) $*" ;} + +main diff --git a/google-cloud-testing/google-cloud-conformance-tests/pom.xml b/google-cloud-testing/google-cloud-conformance-tests/pom.xml new file mode 100644 index 000000000000..87975cd5701e --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/pom.xml @@ -0,0 +1,130 @@ + + + 4.0.0 + google-cloud-conformance-tests + + 0.1.0-SNAPSHOT + jar + + + com.google.cloud + google-cloud-testing + 0.94.1-alpha-SNAPSHOT + + + + 3.7.1 + + + + + junit + junit + test + + + com.google.truth + truth + + + com.google.api.grpc + proto-google-cloud-firestore-v1 + + + + + + + kr.motd.maven + os-maven-plugin + 1.6.2 + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.0.0 + + + add-main-resource + generate-resources + + add-resource + + + + + src/main/proto + + + + + + + + + + + + gen-conformance-protos + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + 0.6.1 + + + generate-main + + compile + + generate-sources + + + generate-test + + test-compile + + generate-test-sources + + + + com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier} + + + + com.coveo + fmt-maven-plugin + 2.9 + + + format-main + + format + + process-sources + + + format-test + + format + + process-test-sources + + + + + target/generated-sources/protobuf/java + + + + + + + + + diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/java/com/google/cloud/conformance/ConformanceTestLocator.java b/google-cloud-testing/google-cloud-conformance-tests/src/main/java/com/google/cloud/conformance/ConformanceTestLocator.java new file mode 100644 index 000000000000..4722751b49a3 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/java/com/google/cloud/conformance/ConformanceTestLocator.java @@ -0,0 +1,196 @@ +/* + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.conformance; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; + +public final class ConformanceTestLocator { + + private ConformanceTestLocator() {} + + /** + * Given the provided {@link MatchPattern matchPattern} list resources on the classpath starting + * from {@link MatchPattern#getBaseResourcePath() MatchPattern.getBaseResourcePath} and for each + * resources resource test that it is a file and that matches according to {@link + * MatchPattern#matches(String) MatchPattern.matches(String)}. + * + *

Resolution of resources paths will be against the current threads context class loader + * ({@link Thread#currentThread()}.{@link Thread#getContextClassLoader() getContextClassLoader()} + * + * @param matchPattern The {@link MatchPattern} to match against + * @return The list of all resources on the classpath that match the specified {@code + * matchPattern} + * @throws IOException If there is an error attempting to read a classpath resource (listing the + * contents of a directory or jar). + * @throws URISyntaxException If there is an error translating a classpath URL into a filesystem + * URI. + */ + public static List findAllResourcePaths(final MatchPattern matchPattern) + throws IOException, URISyntaxException { + return findAllResourcePaths(matchPattern, Thread.currentThread().getContextClassLoader()); + } + + /** + * Given the provided {@link MatchPattern matchPattern} list resources on the classpath starting + * from {@link MatchPattern#getBaseResourcePath() MatchPattern.getBaseResourcePath} and for each + * resources resource test that it is a file and that matches according to {@link + * MatchPattern#matches(String) MatchPattern.matches(String)}. + * + *

Resolution of resources paths will be against the parameter {@code classLoader} + * + * @param matchPattern The {@link MatchPattern} to match against + * @param classLoader The classLoader to scan for resources + * @return The list of all resources on the classpath that match the specified {@code + * matchPattern} + * @throws IOException If there is an error attempting to read a classpath resource (listing the + * contents of a directory or jar). + * @throws URISyntaxException If there is an error translating a classpath URL into a filesystem + * URI. + */ + public static List findAllResourcePaths( + final MatchPattern matchPattern, ClassLoader classLoader) + throws IOException, URISyntaxException { + final List resourcePaths = new ArrayList<>(); + final Enumeration pkgDir = classLoader.getResources(matchPattern.getBaseResourcePath()); + while (pkgDir.hasMoreElements()) { + URL url = pkgDir.nextElement(); + if (url != null) { + final String scheme = url.getProtocol(); + switch (scheme) { + case "file": + final List cf = handleFileScheme(url, matchPattern); + resourcePaths.addAll(cf); + break; + case "jar": + final List cj = handleJarScheme(url, matchPattern); + resourcePaths.addAll(cj); + break; + default: + throw new IllegalStateException("Unable to scan scheme '" + scheme + "'"); + } + } + } + + return resourcePaths; + } + + private static List handleFileScheme(final URL url, MatchPattern mp) + throws IOException, URISyntaxException { + final Path path = Paths.get(url.toURI()); + return handleFileScheme(mp, path); + } + + private static List handleFileScheme(final MatchPattern mp, final Path path) + throws IOException { + final List resourcePaths = new ArrayList<>(); + try (final DirectoryStream paths = Files.newDirectoryStream(path)) { + for (Path p : paths) { + if (Files.isDirectory(p)) { + resourcePaths.addAll(handleFileScheme(mp, p)); + } else { + final String filePath = p.normalize().toString(); + final String resourcePath = + filePath.substring(filePath.indexOf(mp.getBaseResourcePath())); + if (mp.matches(resourcePath)) { + resourcePaths.add(resourcePath); + } + } + } + } + return resourcePaths; + } + + private static List handleJarScheme(final URL url, MatchPattern mp) throws IOException { + final String urlPath = url.getPath(); + final String jarPath = urlPath.substring(5, urlPath.indexOf("!")); + + final List resourcePaths = new ArrayList<>(); + final JarFile jarFile = new JarFile(jarPath); + final Enumeration jarEntries = jarFile.entries(); + while (jarEntries.hasMoreElements()) { + JarEntry je = jarEntries.nextElement(); + if (!je.isDirectory() && mp.matches(je.getName())) { + resourcePaths.add(je.getName()); + } + } + return resourcePaths; + } + + /** + * Factory method to create a relatively simple {@link MatchPattern}. + * + * @param baseResourcePath The non-null base path to start scanning for resources on the classpath + * @param suffix The non-null suffix to match found elements against for inclusion + * @return A new {@link MatchPattern} where classpath scanning will start from {@code + * baseResourcePath} walking the classpath and matching to elements that end in {@code + * suffix}. Suffix matching is a simple match (non-regex). + */ + public static MatchPattern newMatchPattern(final String baseResourcePath, final String suffix) { + if (baseResourcePath == null) { + throw new IllegalArgumentException("baseResourcePath must be non-null"); + } + if (suffix == null || suffix.isEmpty()) { + throw new IllegalArgumentException("suffix must be non-null and non-empty"); + } + // when listing the resources from the classpath, a leading slash will result in resources + // not being found. If the baseResourcePath passed in here has a leading slash, detect and + // remove it. + int begin = 0; + if (baseResourcePath.startsWith("/")) { + begin = 1; + } + return new SimpleMatchPattern(baseResourcePath.substring(begin), suffix); + } + + public interface MatchPattern { + String getBaseResourcePath(); + + boolean matches(String resourcePath); + } + + private static final class SimpleMatchPattern implements MatchPattern { + private final String baseResourcePath; + private final String suffix; + + SimpleMatchPattern(final String baseResourcePath, final String suffix) { + // parameter construction validation is performed in the factory method #newMatchPattern + this.baseResourcePath = baseResourcePath; + this.suffix = suffix; + } + + @Override + public String getBaseResourcePath() { + return baseResourcePath; + } + + @Override + public boolean matches(final String resourcePath) { + return resourcePath.startsWith(baseResourcePath) && resourcePath.endsWith(suffix); + } + } +} diff --git a/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/conformance/TestDefinition.java b/google-cloud-testing/google-cloud-conformance-tests/src/main/java/com/google/cloud/conformance/firestore/v1/TestDefinition.java similarity index 67% rename from google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/conformance/TestDefinition.java rename to google-cloud-testing/google-cloud-conformance-tests/src/main/java/com/google/cloud/conformance/firestore/v1/TestDefinition.java index c477050f468f..7bce0be4eb24 100644 --- a/google-cloud-clients/google-cloud-firestore/src/test/java/com/google/cloud/firestore/conformance/TestDefinition.java +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/java/com/google/cloud/conformance/firestore/v1/TestDefinition.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,11 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: test_definition.proto +// source: google/cloud/conformance/firestore/v1/tests.proto -package com.google.cloud.firestore.conformance; +package com.google.cloud.conformance.firestore.v1; public final class TestDefinition { private TestDefinition() {} @@ -30,20 +29,20 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r public interface TestSuiteOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.TestSuite) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.TestSuite) com.google.protobuf.MessageOrBuilder { - /** repeated .tests.Test tests = 1; */ - java.util.List getTestsList(); - /** repeated .tests.Test tests = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.Test getTests(int index); - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + java.util.List getTestsList(); + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.Test getTests(int index); + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ int getTestsCount(); - /** repeated .tests.Test tests = 1; */ - java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + java.util.List getTestsOrBuilderList(); - /** repeated .tests.Test tests = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder getTestsOrBuilder( + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.TestOrBuilder getTestsOrBuilder( int index); } /** @@ -53,11 +52,11 @@ com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder getTestsOrBu * A collection of tests. * * - * Protobuf type {@code tests.TestSuite} + * Protobuf type {@code google.cloud.conformance.firestore.v1.TestSuite} */ public static final class TestSuite extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.TestSuite) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.TestSuite) TestSuiteOrBuilder { private static final long serialVersionUID = 0L; // Use TestSuite.newBuilder() to construct. @@ -93,27 +92,27 @@ private TestSuite( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { - if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { tests_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.Test>(); + com.google.cloud.conformance.firestore.v1.TestDefinition.Test>(); mutable_bitField0_ |= 0x00000001; } tests_.add( input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.Test.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.parser(), extensionRegistry)); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -121,7 +120,7 @@ private TestSuite( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (((mutable_bitField0_ & 0x00000001) != 0)) { tests_ = java.util.Collections.unmodifiableList(tests_); } this.unknownFields = unknownFields.build(); @@ -130,48 +129,50 @@ private TestSuite( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_TestSuite_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_TestSuite_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_TestSuite_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_TestSuite_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.TestSuite.class, - com.google.cloud.firestore.conformance.TestDefinition.TestSuite.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite.Builder.class); } public static final int TESTS_FIELD_NUMBER = 1; - private java.util.List tests_; - /** repeated .tests.Test tests = 1; */ - public java.util.List + private java.util.List tests_; + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public java.util.List getTestsList() { return tests_; } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.TestOrBuilder> getTestsOrBuilderList() { return tests_; } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public int getTestsCount() { return tests_.size(); } - /** repeated .tests.Test tests = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.Test getTests(int index) { + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test getTests(int index) { return tests_.get(index); } - /** repeated .tests.Test tests = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder getTestsOrBuilder( + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.TestOrBuilder getTestsOrBuilder( int index) { return tests_.get(index); } private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -181,6 +182,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { for (int i = 0; i < tests_.size(); i++) { output.writeMessage(1, tests_.get(i)); @@ -188,6 +190,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -206,16 +209,15 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.TestSuite)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.TestSuite other = - (com.google.cloud.firestore.conformance.TestDefinition.TestSuite) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite) obj; - boolean result = true; - result = result && getTestsList().equals(other.getTestsList()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!getTestsList().equals(other.getTestsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -234,59 +236,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -294,12 +296,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite pa PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -307,6 +309,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite pa PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -316,10 +319,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.TestSuite prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -337,29 +341,30 @@ protected Builder newBuilderForType( * A collection of tests. * * - * Protobuf type {@code tests.TestSuite} + * Protobuf type {@code google.cloud.conformance.firestore.v1.TestSuite} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.TestSuite) - com.google.cloud.firestore.conformance.TestDefinition.TestSuiteOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.TestSuite) + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuiteOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_TestSuite_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_TestSuite_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_TestSuite_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_TestSuite_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.TestSuite.class, - com.google.cloud.firestore.conformance.TestDefinition.TestSuite.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.TestSuite.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -375,6 +380,7 @@ private void maybeForceBuilderInitialization() { } } + @java.lang.Override public Builder clear() { super.clear(); if (testsBuilder_ == null) { @@ -386,30 +392,35 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_TestSuite_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_TestSuite_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.TestSuite + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.TestSuite.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite + .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.TestSuite build() { - com.google.cloud.firestore.conformance.TestDefinition.TestSuite result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.TestSuite buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.TestSuite result = - new com.google.cloud.firestore.conformance.TestDefinition.TestSuite(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite(this); int from_bitField0_ = bitField0_; if (testsBuilder_ == null) { - if (((bitField0_ & 0x00000001) == 0x00000001)) { + if (((bitField0_ & 0x00000001) != 0)) { tests_ = java.util.Collections.unmodifiableList(tests_); bitField0_ = (bitField0_ & ~0x00000001); } @@ -421,38 +432,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.TestSuite buildPart return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.TestSuite) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.TestSuite) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite) { + return mergeFrom( + (com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite) other); } else { super.mergeFrom(other); return this; @@ -460,10 +479,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.TestSuite other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.TestSuite.getDefaultInstance()) - return this; + == com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite + .getDefaultInstance()) return this; if (testsBuilder_ == null) { if (!other.tests_.isEmpty()) { if (tests_.isEmpty()) { @@ -496,20 +515,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.TestSuite parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.TestSuite) + (com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -522,26 +543,26 @@ public Builder mergeFrom( private int bitField0_; - private java.util.List tests_ = + private java.util.List tests_ = java.util.Collections.emptyList(); private void ensureTestsIsMutable() { - if (!((bitField0_ & 0x00000001) == 0x00000001)) { + if (!((bitField0_ & 0x00000001) != 0)) { tests_ = - new java.util.ArrayList( - tests_); + new java.util.ArrayList< + com.google.cloud.conformance.firestore.v1.TestDefinition.Test>(tests_); bitField0_ |= 0x00000001; } } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Test, - com.google.cloud.firestore.conformance.TestDefinition.Test.Builder, - com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Test, + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.TestOrBuilder> testsBuilder_; - /** repeated .tests.Test tests = 1; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public java.util.List getTestsList() { if (testsBuilder_ == null) { return java.util.Collections.unmodifiableList(tests_); @@ -549,7 +570,7 @@ private void ensureTestsIsMutable() { return testsBuilder_.getMessageList(); } } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public int getTestsCount() { if (testsBuilder_ == null) { return tests_.size(); @@ -557,17 +578,17 @@ public int getTestsCount() { return testsBuilder_.getCount(); } } - /** repeated .tests.Test tests = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.Test getTests(int index) { + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test getTests(int index) { if (testsBuilder_ == null) { return tests_.get(index); } else { return testsBuilder_.getMessage(index); } } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public Builder setTests( - int index, com.google.cloud.firestore.conformance.TestDefinition.Test value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.Test value) { if (testsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -580,10 +601,10 @@ public Builder setTests( } return this; } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public Builder setTests( int index, - com.google.cloud.firestore.conformance.TestDefinition.Test.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder builderForValue) { if (testsBuilder_ == null) { ensureTestsIsMutable(); tests_.set(index, builderForValue.build()); @@ -593,8 +614,8 @@ public Builder setTests( } return this; } - /** repeated .tests.Test tests = 1; */ - public Builder addTests(com.google.cloud.firestore.conformance.TestDefinition.Test value) { + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public Builder addTests(com.google.cloud.conformance.firestore.v1.TestDefinition.Test value) { if (testsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -607,9 +628,9 @@ public Builder addTests(com.google.cloud.firestore.conformance.TestDefinition.Te } return this; } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public Builder addTests( - int index, com.google.cloud.firestore.conformance.TestDefinition.Test value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.Test value) { if (testsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -622,9 +643,9 @@ public Builder addTests( } return this; } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public Builder addTests( - com.google.cloud.firestore.conformance.TestDefinition.Test.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder builderForValue) { if (testsBuilder_ == null) { ensureTestsIsMutable(); tests_.add(builderForValue.build()); @@ -634,10 +655,10 @@ public Builder addTests( } return this; } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public Builder addTests( int index, - com.google.cloud.firestore.conformance.TestDefinition.Test.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder builderForValue) { if (testsBuilder_ == null) { ensureTestsIsMutable(); tests_.add(index, builderForValue.build()); @@ -647,9 +668,10 @@ public Builder addTests( } return this; } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public Builder addAllTests( - java.lang.Iterable + java.lang.Iterable< + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.Test> values) { if (testsBuilder_ == null) { ensureTestsIsMutable(); @@ -660,7 +682,7 @@ public Builder addAllTests( } return this; } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public Builder clearTests() { if (testsBuilder_ == null) { tests_ = java.util.Collections.emptyList(); @@ -671,7 +693,7 @@ public Builder clearTests() { } return this; } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public Builder removeTests(int index) { if (testsBuilder_ == null) { ensureTestsIsMutable(); @@ -682,23 +704,23 @@ public Builder removeTests(int index) { } return this; } - /** repeated .tests.Test tests = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.Test.Builder getTestsBuilder( + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder getTestsBuilder( int index) { return getTestsFieldBuilder().getBuilder(index); } - /** repeated .tests.Test tests = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder getTestsOrBuilder( - int index) { + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.TestOrBuilder + getTestsOrBuilder(int index) { if (testsBuilder_ == null) { return tests_.get(index); } else { return testsBuilder_.getMessageOrBuilder(index); } } - /** repeated .tests.Test tests = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.TestOrBuilder> getTestsOrBuilderList() { if (testsBuilder_ != null) { return testsBuilder_.getMessageOrBuilderList(); @@ -706,74 +728,75 @@ public com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder getTe return java.util.Collections.unmodifiableList(tests_); } } - /** repeated .tests.Test tests = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.Test.Builder addTestsBuilder() { + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder + addTestsBuilder() { return getTestsFieldBuilder() .addBuilder( - com.google.cloud.firestore.conformance.TestDefinition.Test.getDefaultInstance()); + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.getDefaultInstance()); } - /** repeated .tests.Test tests = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.Test.Builder addTestsBuilder( + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder addTestsBuilder( int index) { return getTestsFieldBuilder() .addBuilder( index, - com.google.cloud.firestore.conformance.TestDefinition.Test.getDefaultInstance()); + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.getDefaultInstance()); } - /** repeated .tests.Test tests = 1; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Test tests = 1; */ + public java.util.List getTestsBuilderList() { return getTestsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Test, - com.google.cloud.firestore.conformance.TestDefinition.Test.Builder, - com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Test, + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.TestOrBuilder> getTestsFieldBuilder() { if (testsBuilder_ == null) { testsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Test, - com.google.cloud.firestore.conformance.TestDefinition.Test.Builder, - com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder>( - tests_, - ((bitField0_ & 0x00000001) == 0x00000001), - getParentForChildren(), - isClean()); + com.google.cloud.conformance.firestore.v1.TestDefinition.Test, + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.TestOrBuilder>( + tests_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); tests_ = null; } return testsBuilder_; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.TestSuite) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.TestSuite) } - // @@protoc_insertion_point(class_scope:tests.TestSuite) - private static final com.google.cloud.firestore.conformance.TestDefinition.TestSuite + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.TestSuite) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.TestSuite(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite(); } - public static com.google.cloud.firestore.conformance.TestDefinition.TestSuite + public static com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public TestSuite parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -791,7 +814,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.TestSuite + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.TestSuite getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -799,7 +823,7 @@ public com.google.protobuf.Parser getParserForType() { public interface TestOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.Test) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.Test) com.google.protobuf.MessageOrBuilder { /** @@ -823,64 +847,89 @@ public interface TestOrBuilder */ com.google.protobuf.ByteString getDescriptionBytes(); - /** .tests.GetTest get = 2; */ + /** + * + * + *

+     * a comment describing the behavior being tested
+     * 
+ * + * string comment = 10; + */ + java.lang.String getComment(); + /** + * + * + *
+     * a comment describing the behavior being tested
+     * 
+ * + * string comment = 10; + */ + com.google.protobuf.ByteString getCommentBytes(); + + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ boolean hasGet(); - /** .tests.GetTest get = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.GetTest getGet(); - /** .tests.GetTest get = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder getGetOrBuilder(); + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest getGet(); + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTestOrBuilder getGetOrBuilder(); - /** .tests.CreateTest create = 3; */ + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ boolean hasCreate(); - /** .tests.CreateTest create = 3; */ - com.google.cloud.firestore.conformance.TestDefinition.CreateTest getCreate(); - /** .tests.CreateTest create = 3; */ - com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder getCreateOrBuilder(); + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest getCreate(); + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTestOrBuilder + getCreateOrBuilder(); - /** .tests.SetTest set = 4; */ + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ boolean hasSet(); - /** .tests.SetTest set = 4; */ - com.google.cloud.firestore.conformance.TestDefinition.SetTest getSet(); - /** .tests.SetTest set = 4; */ - com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder getSetOrBuilder(); + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest getSet(); + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTestOrBuilder getSetOrBuilder(); - /** .tests.UpdateTest update = 5; */ + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ boolean hasUpdate(); - /** .tests.UpdateTest update = 5; */ - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest getUpdate(); - /** .tests.UpdateTest update = 5; */ - com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder getUpdateOrBuilder(); + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest getUpdate(); + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTestOrBuilder + getUpdateOrBuilder(); - /** .tests.UpdatePathsTest update_paths = 6; */ + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ boolean hasUpdatePaths(); - /** .tests.UpdatePathsTest update_paths = 6; */ - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest getUpdatePaths(); - /** .tests.UpdatePathsTest update_paths = 6; */ - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest getUpdatePaths(); + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTestOrBuilder getUpdatePathsOrBuilder(); - /** .tests.DeleteTest delete = 7; */ + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ boolean hasDelete(); - /** .tests.DeleteTest delete = 7; */ - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest getDelete(); - /** .tests.DeleteTest delete = 7; */ - com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder getDeleteOrBuilder(); + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest getDelete(); + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTestOrBuilder + getDeleteOrBuilder(); - /** .tests.QueryTest query = 8; */ + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ boolean hasQuery(); - /** .tests.QueryTest query = 8; */ - com.google.cloud.firestore.conformance.TestDefinition.QueryTest getQuery(); - /** .tests.QueryTest query = 8; */ - com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder getQueryOrBuilder(); + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest getQuery(); + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTestOrBuilder getQueryOrBuilder(); - /** .tests.ListenTest listen = 9; */ + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ boolean hasListen(); - /** .tests.ListenTest listen = 9; */ - com.google.cloud.firestore.conformance.TestDefinition.ListenTest getListen(); - /** .tests.ListenTest listen = 9; */ - com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder getListenOrBuilder(); + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest getListen(); + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTestOrBuilder + getListenOrBuilder(); - public com.google.cloud.firestore.conformance.TestDefinition.Test.TestCase getTestCase(); + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test.TestCase getTestCase(); } /** * @@ -889,11 +938,11 @@ public interface TestOrBuilder * A Test describes a single client method call and its expected result. * * - * Protobuf type {@code tests.Test} + * Protobuf type {@code google.cloud.conformance.firestore.v1.Test} */ public static final class Test extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.Test) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.Test) TestOrBuilder { private static final long serialVersionUID = 0L; // Use Test.newBuilder() to construct. @@ -903,6 +952,7 @@ private Test(com.google.protobuf.GeneratedMessageV3.Builder builder) { private Test() { description_ = ""; + comment_ = ""; } @java.lang.Override @@ -929,13 +979,6 @@ private Test( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); @@ -945,20 +988,20 @@ private Test( } case 18: { - com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder subBuilder = - null; + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.Builder + subBuilder = null; if (testCase_ == 2) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_) .toBuilder(); } test_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.GetTest.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_); test_ = subBuilder.buildPartial(); } testCase_ = 2; @@ -966,20 +1009,21 @@ private Test( } case 26: { - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.Builder subBuilder = null; if (testCase_ == 3) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_) .toBuilder(); } test_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest + .parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_); test_ = subBuilder.buildPartial(); } testCase_ = 3; @@ -987,20 +1031,20 @@ private Test( } case 34: { - com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder subBuilder = - null; + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.Builder + subBuilder = null; if (testCase_ == 4) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_) .toBuilder(); } test_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.SetTest.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_); test_ = subBuilder.buildPartial(); } testCase_ = 4; @@ -1008,20 +1052,21 @@ private Test( } case 42: { - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.Builder subBuilder = null; if (testCase_ == 5) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_) .toBuilder(); } test_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest + .parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_); test_ = subBuilder.buildPartial(); } testCase_ = 5; @@ -1029,22 +1074,22 @@ private Test( } case 50: { - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.Builder subBuilder = null; if (testCase_ == 6) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_) .toBuilder(); } test_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_); test_ = subBuilder.buildPartial(); } @@ -1053,20 +1098,21 @@ private Test( } case 58: { - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.Builder subBuilder = null; if (testCase_ == 7) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_) .toBuilder(); } test_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest + .parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_); test_ = subBuilder.buildPartial(); } testCase_ = 7; @@ -1074,20 +1120,20 @@ private Test( } case 66: { - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder subBuilder = - null; + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.Builder + subBuilder = null; if (testCase_ == 8) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_) .toBuilder(); } test_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_); test_ = subBuilder.buildPartial(); } testCase_ = 8; @@ -1095,25 +1141,40 @@ private Test( } case 74: { - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.Builder subBuilder = null; if (testCase_ == 9) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_) .toBuilder(); } test_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest + .parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_); test_ = subBuilder.buildPartial(); } testCase_ = 9; break; } + case 82: + { + java.lang.String s = input.readStringRequireUtf8(); + + comment_ = s; + break; + } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -1127,17 +1188,18 @@ private Test( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Test_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Test_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Test_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Test_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Test.class, - com.google.cloud.firestore.conformance.TestDefinition.Test.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder.class); } private int testCase_ = 0; @@ -1241,178 +1303,233 @@ public com.google.protobuf.ByteString getDescriptionBytes() { } } + public static final int COMMENT_FIELD_NUMBER = 10; + private volatile java.lang.Object comment_; + /** + * + * + *
+     * a comment describing the behavior being tested
+     * 
+ * + * string comment = 10; + */ + public java.lang.String getComment() { + java.lang.Object ref = comment_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + comment_ = s; + return s; + } + } + /** + * + * + *
+     * a comment describing the behavior being tested
+     * 
+ * + * string comment = 10; + */ + public com.google.protobuf.ByteString getCommentBytes() { + java.lang.Object ref = comment_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + comment_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + public static final int GET_FIELD_NUMBER = 2; - /** .tests.GetTest get = 2; */ + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ public boolean hasGet() { return testCase_ == 2; } - /** .tests.GetTest get = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.GetTest getGet() { + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest getGet() { if (testCase_ == 2) { - return (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.getDefaultInstance(); } - /** .tests.GetTest get = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.GetTestOrBuilder getGetOrBuilder() { if (testCase_ == 2) { - return (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.getDefaultInstance(); } public static final int CREATE_FIELD_NUMBER = 3; - /** .tests.CreateTest create = 3; */ + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ public boolean hasCreate() { return testCase_ == 3; } - /** .tests.CreateTest create = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.CreateTest getCreate() { + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest getCreate() { if (testCase_ == 3) { - return (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest + .getDefaultInstance(); } - /** .tests.CreateTest create = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTestOrBuilder getCreateOrBuilder() { if (testCase_ == 3) { - return (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.CreateTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest + .getDefaultInstance(); } public static final int SET_FIELD_NUMBER = 4; - /** .tests.SetTest set = 4; */ + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ public boolean hasSet() { return testCase_ == 4; } - /** .tests.SetTest set = 4; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetTest getSet() { + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest getSet() { if (testCase_ == 4) { - return (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.getDefaultInstance(); } - /** .tests.SetTest set = 4; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetTestOrBuilder getSetOrBuilder() { if (testCase_ == 4) { - return (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.getDefaultInstance(); } public static final int UPDATE_FIELD_NUMBER = 5; - /** .tests.UpdateTest update = 5; */ + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ public boolean hasUpdate() { return testCase_ == 5; } - /** .tests.UpdateTest update = 5; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest getUpdate() { + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest getUpdate() { if (testCase_ == 5) { - return (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest + .getDefaultInstance(); } - /** .tests.UpdateTest update = 5; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTestOrBuilder getUpdateOrBuilder() { if (testCase_ == 5) { - return (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest + .getDefaultInstance(); } public static final int UPDATE_PATHS_FIELD_NUMBER = 6; - /** .tests.UpdatePathsTest update_paths = 6; */ + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ public boolean hasUpdatePaths() { return testCase_ == 6; } - /** .tests.UpdatePathsTest update_paths = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest getUpdatePaths() { + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + getUpdatePaths() { if (testCase_ == 6) { - return (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .getDefaultInstance(); } - /** .tests.UpdatePathsTest update_paths = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTestOrBuilder getUpdatePathsOrBuilder() { if (testCase_ == 6) { - return (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .getDefaultInstance(); } public static final int DELETE_FIELD_NUMBER = 7; - /** .tests.DeleteTest delete = 7; */ + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ public boolean hasDelete() { return testCase_ == 7; } - /** .tests.DeleteTest delete = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest getDelete() { + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest getDelete() { if (testCase_ == 7) { - return (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest + .getDefaultInstance(); } - /** .tests.DeleteTest delete = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTestOrBuilder getDeleteOrBuilder() { if (testCase_ == 7) { - return (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest + .getDefaultInstance(); } public static final int QUERY_FIELD_NUMBER = 8; - /** .tests.QueryTest query = 8; */ + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ public boolean hasQuery() { return testCase_ == 8; } - /** .tests.QueryTest query = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.QueryTest getQuery() { + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest getQuery() { if (testCase_ == 8) { - return (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest + .getDefaultInstance(); } - /** .tests.QueryTest query = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTestOrBuilder getQueryOrBuilder() { if (testCase_ == 8) { - return (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest + .getDefaultInstance(); } public static final int LISTEN_FIELD_NUMBER = 9; - /** .tests.ListenTest listen = 9; */ + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ public boolean hasListen() { return testCase_ == 9; } - /** .tests.ListenTest listen = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.ListenTest getListen() { + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest getListen() { if (testCase_ == 9) { - return (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest + .getDefaultInstance(); } - /** .tests.ListenTest listen = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTestOrBuilder getListenOrBuilder() { if (testCase_ == 9) { - return (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.ListenTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest + .getDefaultInstance(); } private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -1422,45 +1539,50 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getDescriptionBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, description_); } if (testCase_ == 2) { output.writeMessage( - 2, (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_); + 2, (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_); } if (testCase_ == 3) { output.writeMessage( - 3, (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_); + 3, (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_); } if (testCase_ == 4) { output.writeMessage( - 4, (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_); + 4, (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_); } if (testCase_ == 5) { output.writeMessage( - 5, (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_); + 5, (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_); } if (testCase_ == 6) { output.writeMessage( - 6, (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_); + 6, (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_); } if (testCase_ == 7) { output.writeMessage( - 7, (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_); + 7, (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_); } if (testCase_ == 8) { output.writeMessage( - 8, (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_); + 8, (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_); } if (testCase_ == 9) { output.writeMessage( - 9, (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_); + 9, (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_); + } + if (!getCommentBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 10, comment_); } unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -1472,42 +1594,46 @@ public int getSerializedSize() { if (testCase_ == 2) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 2, (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_); + 2, (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_); } if (testCase_ == 3) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 3, (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_); + 3, (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_); } if (testCase_ == 4) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 4, (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_); + 4, (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_); } if (testCase_ == 5) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 5, (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_); + 5, (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_); } if (testCase_ == 6) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 6, (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_); + 6, + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_); } if (testCase_ == 7) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 7, (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_); + 7, (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_); } if (testCase_ == 8) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 8, (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_); + 8, (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_); } if (testCase_ == 9) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 9, (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_); + 9, (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_); + } + if (!getCommentBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, comment_); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -1519,46 +1645,45 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Test)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Test)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.Test other = - (com.google.cloud.firestore.conformance.TestDefinition.Test) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.Test other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.Test) obj; - boolean result = true; - result = result && getDescription().equals(other.getDescription()); - result = result && getTestCase().equals(other.getTestCase()); - if (!result) return false; + if (!getDescription().equals(other.getDescription())) return false; + if (!getComment().equals(other.getComment())) return false; + if (!getTestCase().equals(other.getTestCase())) return false; switch (testCase_) { case 2: - result = result && getGet().equals(other.getGet()); + if (!getGet().equals(other.getGet())) return false; break; case 3: - result = result && getCreate().equals(other.getCreate()); + if (!getCreate().equals(other.getCreate())) return false; break; case 4: - result = result && getSet().equals(other.getSet()); + if (!getSet().equals(other.getSet())) return false; break; case 5: - result = result && getUpdate().equals(other.getUpdate()); + if (!getUpdate().equals(other.getUpdate())) return false; break; case 6: - result = result && getUpdatePaths().equals(other.getUpdatePaths()); + if (!getUpdatePaths().equals(other.getUpdatePaths())) return false; break; case 7: - result = result && getDelete().equals(other.getDelete()); + if (!getDelete().equals(other.getDelete())) return false; break; case 8: - result = result && getQuery().equals(other.getQuery()); + if (!getQuery().equals(other.getQuery())) return false; break; case 9: - result = result && getListen().equals(other.getListen()); + if (!getListen().equals(other.getListen())) return false; break; case 0: default: } - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -1570,6 +1695,8 @@ public int hashCode() { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER; hash = (53 * hash) + getDescription().hashCode(); + hash = (37 * hash) + COMMENT_FIELD_NUMBER; + hash = (53 * hash) + getComment().hashCode(); switch (testCase_) { case 2: hash = (37 * hash) + GET_FIELD_NUMBER; @@ -1611,71 +1738,71 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseDelimitedFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseDelimitedFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseDelimitedFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1683,6 +1810,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.Test parseFr PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -1692,10 +1820,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.Test prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Test prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -1713,28 +1842,29 @@ protected Builder newBuilderForType( * A Test describes a single client method call and its expected result. * * - * Protobuf type {@code tests.Test} + * Protobuf type {@code google.cloud.conformance.firestore.v1.Test} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.Test) - com.google.cloud.firestore.conformance.TestDefinition.TestOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.Test) + com.google.cloud.conformance.firestore.v1.TestDefinition.TestOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Test_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Test_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Test_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Test_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Test.class, - com.google.cloud.firestore.conformance.TestDefinition.Test.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Test.Builder.class); } - // Construct using com.google.cloud.firestore.conformance.TestDefinition.Test.newBuilder() + // Construct using com.google.cloud.conformance.firestore.v1.TestDefinition.Test.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -1748,37 +1878,45 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); description_ = ""; + comment_ = ""; + testCase_ = 0; test_ = null; return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Test_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Test_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.Test + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.Test.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Test.getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.Test build() { - com.google.cloud.firestore.conformance.TestDefinition.Test result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Test result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.Test buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.Test result = - new com.google.cloud.firestore.conformance.TestDefinition.Test(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Test result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.Test(this); result.description_ = description_; + result.comment_ = comment_; if (testCase_ == 2) { if (getBuilder_ == null) { result.test_ = test_; @@ -1840,52 +1978,64 @@ public com.google.cloud.firestore.conformance.TestDefinition.Test buildPartial() return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Test) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Test) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Test) { + return mergeFrom((com.google.cloud.conformance.firestore.v1.TestDefinition.Test) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Test other) { + public Builder mergeFrom( + com.google.cloud.conformance.firestore.v1.TestDefinition.Test other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.Test.getDefaultInstance()) + == com.google.cloud.conformance.firestore.v1.TestDefinition.Test.getDefaultInstance()) return this; if (!other.getDescription().isEmpty()) { description_ = other.description_; onChanged(); } + if (!other.getComment().isEmpty()) { + comment_ = other.comment_; + onChanged(); + } switch (other.getTestCase()) { case GET: { @@ -1937,20 +2087,23 @@ public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.T return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.Test parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.Test parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.Test) e.getUnfinishedMessage(); + (com.google.cloud.conformance.firestore.v1.TestDefinition.Test) + e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { @@ -2068,31 +2221,128 @@ public Builder setDescriptionBytes(com.google.protobuf.ByteString value) { return this; } + private java.lang.Object comment_ = ""; + /** + * + * + *
+       * a comment describing the behavior being tested
+       * 
+ * + * string comment = 10; + */ + public java.lang.String getComment() { + java.lang.Object ref = comment_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + comment_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+       * a comment describing the behavior being tested
+       * 
+ * + * string comment = 10; + */ + public com.google.protobuf.ByteString getCommentBytes() { + java.lang.Object ref = comment_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + comment_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+       * a comment describing the behavior being tested
+       * 
+ * + * string comment = 10; + */ + public Builder setComment(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + comment_ = value; + onChanged(); + return this; + } + /** + * + * + *
+       * a comment describing the behavior being tested
+       * 
+ * + * string comment = 10; + */ + public Builder clearComment() { + + comment_ = getDefaultInstance().getComment(); + onChanged(); + return this; + } + /** + * + * + *
+       * a comment describing the behavior being tested
+       * 
+ * + * string comment = 10; + */ + public Builder setCommentBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + comment_ = value; + onChanged(); + return this; + } + private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.GetTest, - com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTestOrBuilder> getBuilder_; - /** .tests.GetTest get = 2; */ + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ public boolean hasGet() { return testCase_ == 2; } - /** .tests.GetTest get = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.GetTest getGet() { + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest getGet() { if (getBuilder_ == null) { if (testCase_ == 2) { - return (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest + .getDefaultInstance(); } else { if (testCase_ == 2) { return getBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest + .getDefaultInstance(); } } - /** .tests.GetTest get = 2; */ - public Builder setGet(com.google.cloud.firestore.conformance.TestDefinition.GetTest value) { + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ + public Builder setGet( + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest value) { if (getBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2105,9 +2355,10 @@ public Builder setGet(com.google.cloud.firestore.conformance.TestDefinition.GetT testCase_ = 2; return this; } - /** .tests.GetTest get = 2; */ + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ public Builder setGet( - com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.Builder + builderForValue) { if (getBuilder_ == null) { test_ = builderForValue.build(); onChanged(); @@ -2117,16 +2368,17 @@ public Builder setGet( testCase_ = 2; return this; } - /** .tests.GetTest get = 2; */ - public Builder mergeGet(com.google.cloud.firestore.conformance.TestDefinition.GetTest value) { + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ + public Builder mergeGet( + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest value) { if (getBuilder_ == null) { if (testCase_ == 2 && test_ - != com.google.cloud.firestore.conformance.TestDefinition.GetTest + != com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest .getDefaultInstance()) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.GetTest.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_) + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_) .mergeFrom(value) .buildPartial(); } else { @@ -2142,7 +2394,7 @@ public Builder mergeGet(com.google.cloud.firestore.conformance.TestDefinition.Ge testCase_ = 2; return this; } - /** .tests.GetTest get = 2; */ + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ public Builder clearGet() { if (getBuilder_ == null) { if (testCase_ == 2) { @@ -2159,39 +2411,42 @@ public Builder clearGet() { } return this; } - /** .tests.GetTest get = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder getGetBuilder() { + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.Builder + getGetBuilder() { return getGetFieldBuilder().getBuilder(); } - /** .tests.GetTest get = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.GetTestOrBuilder getGetOrBuilder() { if ((testCase_ == 2) && (getBuilder_ != null)) { return getBuilder_.getMessageOrBuilder(); } else { if (testCase_ == 2) { - return (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest + .getDefaultInstance(); } } - /** .tests.GetTest get = 2; */ + /** .google.cloud.conformance.firestore.v1.GetTest get = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.GetTest, - com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTestOrBuilder> getGetFieldBuilder() { if (getBuilder_ == null) { if (!(testCase_ == 2)) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance(); + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest + .getDefaultInstance(); } getBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.GetTest, - com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.GetTest) test_, + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTestOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) test_, getParentForChildren(), isClean()); test_ = null; @@ -2203,33 +2458,33 @@ public com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder get } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.CreateTest, - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTestOrBuilder> createBuilder_; - /** .tests.CreateTest create = 3; */ + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ public boolean hasCreate() { return testCase_ == 3; } - /** .tests.CreateTest create = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.CreateTest getCreate() { + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest getCreate() { if (createBuilder_ == null) { if (testCase_ == 3) { - return (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.CreateTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest .getDefaultInstance(); } else { if (testCase_ == 3) { return createBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.CreateTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest .getDefaultInstance(); } } - /** .tests.CreateTest create = 3; */ + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ public Builder setCreate( - com.google.cloud.firestore.conformance.TestDefinition.CreateTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest value) { if (createBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2242,9 +2497,9 @@ public Builder setCreate( testCase_ = 3; return this; } - /** .tests.CreateTest create = 3; */ + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ public Builder setCreate( - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.Builder builderForValue) { if (createBuilder_ == null) { test_ = builderForValue.build(); @@ -2255,17 +2510,17 @@ public Builder setCreate( testCase_ = 3; return this; } - /** .tests.CreateTest create = 3; */ + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ public Builder mergeCreate( - com.google.cloud.firestore.conformance.TestDefinition.CreateTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest value) { if (createBuilder_ == null) { if (testCase_ == 3 && test_ - != com.google.cloud.firestore.conformance.TestDefinition.CreateTest + != com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest .getDefaultInstance()) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_) + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_) .mergeFrom(value) .buildPartial(); } else { @@ -2281,7 +2536,7 @@ public Builder mergeCreate( testCase_ = 3; return this; } - /** .tests.CreateTest create = 3; */ + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ public Builder clearCreate() { if (createBuilder_ == null) { if (testCase_ == 3) { @@ -2298,42 +2553,42 @@ public Builder clearCreate() { } return this; } - /** .tests.CreateTest create = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.Builder getCreateBuilder() { return getCreateFieldBuilder().getBuilder(); } - /** .tests.CreateTest create = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTestOrBuilder getCreateOrBuilder() { if ((testCase_ == 3) && (createBuilder_ != null)) { return createBuilder_.getMessageOrBuilder(); } else { if (testCase_ == 3) { - return (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.CreateTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest .getDefaultInstance(); } } - /** .tests.CreateTest create = 3; */ + /** .google.cloud.conformance.firestore.v1.CreateTest create = 3; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.CreateTest, - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTestOrBuilder> getCreateFieldBuilder() { if (createBuilder_ == null) { if (!(testCase_ == 3)) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.CreateTest + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest .getDefaultInstance(); } createBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.CreateTest, - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) test_, + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTestOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) test_, getParentForChildren(), isClean()); test_ = null; @@ -2345,30 +2600,33 @@ public Builder clearCreate() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.SetTest, - com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTestOrBuilder> setBuilder_; - /** .tests.SetTest set = 4; */ + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ public boolean hasSet() { return testCase_ == 4; } - /** .tests.SetTest set = 4; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetTest getSet() { + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest getSet() { if (setBuilder_ == null) { if (testCase_ == 4) { - return (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest + .getDefaultInstance(); } else { if (testCase_ == 4) { return setBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest + .getDefaultInstance(); } } - /** .tests.SetTest set = 4; */ - public Builder setSet(com.google.cloud.firestore.conformance.TestDefinition.SetTest value) { + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ + public Builder setSet( + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest value) { if (setBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2381,9 +2639,10 @@ public Builder setSet(com.google.cloud.firestore.conformance.TestDefinition.SetT testCase_ = 4; return this; } - /** .tests.SetTest set = 4; */ + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ public Builder setSet( - com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.Builder + builderForValue) { if (setBuilder_ == null) { test_ = builderForValue.build(); onChanged(); @@ -2393,16 +2652,17 @@ public Builder setSet( testCase_ = 4; return this; } - /** .tests.SetTest set = 4; */ - public Builder mergeSet(com.google.cloud.firestore.conformance.TestDefinition.SetTest value) { + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ + public Builder mergeSet( + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest value) { if (setBuilder_ == null) { if (testCase_ == 4 && test_ - != com.google.cloud.firestore.conformance.TestDefinition.SetTest + != com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest .getDefaultInstance()) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.SetTest.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_) + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_) .mergeFrom(value) .buildPartial(); } else { @@ -2418,7 +2678,7 @@ public Builder mergeSet(com.google.cloud.firestore.conformance.TestDefinition.Se testCase_ = 4; return this; } - /** .tests.SetTest set = 4; */ + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ public Builder clearSet() { if (setBuilder_ == null) { if (testCase_ == 4) { @@ -2435,39 +2695,42 @@ public Builder clearSet() { } return this; } - /** .tests.SetTest set = 4; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder getSetBuilder() { + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.Builder + getSetBuilder() { return getSetFieldBuilder().getBuilder(); } - /** .tests.SetTest set = 4; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetTestOrBuilder getSetOrBuilder() { if ((testCase_ == 4) && (setBuilder_ != null)) { return setBuilder_.getMessageOrBuilder(); } else { if (testCase_ == 4) { - return (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest + .getDefaultInstance(); } } - /** .tests.SetTest set = 4; */ + /** .google.cloud.conformance.firestore.v1.SetTest set = 4; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.SetTest, - com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTestOrBuilder> getSetFieldBuilder() { if (setBuilder_ == null) { if (!(testCase_ == 4)) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance(); + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest + .getDefaultInstance(); } setBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.SetTest, - com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.SetTest) test_, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTestOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) test_, getParentForChildren(), isClean()); test_ = null; @@ -2479,33 +2742,33 @@ public com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder get } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest, - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTestOrBuilder> updateBuilder_; - /** .tests.UpdateTest update = 5; */ + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ public boolean hasUpdate() { return testCase_ == 5; } - /** .tests.UpdateTest update = 5; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest getUpdate() { + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest getUpdate() { if (updateBuilder_ == null) { if (testCase_ == 5) { - return (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest .getDefaultInstance(); } else { if (testCase_ == 5) { return updateBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest .getDefaultInstance(); } } - /** .tests.UpdateTest update = 5; */ + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ public Builder setUpdate( - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest value) { if (updateBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2518,9 +2781,9 @@ public Builder setUpdate( testCase_ = 5; return this; } - /** .tests.UpdateTest update = 5; */ + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ public Builder setUpdate( - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.Builder builderForValue) { if (updateBuilder_ == null) { test_ = builderForValue.build(); @@ -2531,17 +2794,17 @@ public Builder setUpdate( testCase_ = 5; return this; } - /** .tests.UpdateTest update = 5; */ + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ public Builder mergeUpdate( - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest value) { if (updateBuilder_ == null) { if (testCase_ == 5 && test_ - != com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + != com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest .getDefaultInstance()) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_) + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_) .mergeFrom(value) .buildPartial(); } else { @@ -2557,7 +2820,7 @@ public Builder mergeUpdate( testCase_ = 5; return this; } - /** .tests.UpdateTest update = 5; */ + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ public Builder clearUpdate() { if (updateBuilder_ == null) { if (testCase_ == 5) { @@ -2574,42 +2837,42 @@ public Builder clearUpdate() { } return this; } - /** .tests.UpdateTest update = 5; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.Builder getUpdateBuilder() { return getUpdateFieldBuilder().getBuilder(); } - /** .tests.UpdateTest update = 5; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTestOrBuilder getUpdateOrBuilder() { if ((testCase_ == 5) && (updateBuilder_ != null)) { return updateBuilder_.getMessageOrBuilder(); } else { if (testCase_ == 5) { - return (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest .getDefaultInstance(); } } - /** .tests.UpdateTest update = 5; */ + /** .google.cloud.conformance.firestore.v1.UpdateTest update = 5; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest, - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTestOrBuilder> getUpdateFieldBuilder() { if (updateBuilder_ == null) { if (!(testCase_ == 5)) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest .getDefaultInstance(); } updateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest, - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) test_, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTestOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) test_, getParentForChildren(), isClean()); test_ = null; @@ -2621,34 +2884,34 @@ public Builder clearUpdate() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest, - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTestOrBuilder> updatePathsBuilder_; - /** .tests.UpdatePathsTest update_paths = 6; */ + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ public boolean hasUpdatePaths() { return testCase_ == 6; } - /** .tests.UpdatePathsTest update_paths = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest getUpdatePaths() { if (updatePathsBuilder_ == null) { if (testCase_ == 6) { - return (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .getDefaultInstance(); } else { if (testCase_ == 6) { return updatePathsBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .getDefaultInstance(); } } - /** .tests.UpdatePathsTest update_paths = 6; */ + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ public Builder setUpdatePaths( - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest value) { if (updatePathsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2661,9 +2924,9 @@ public Builder setUpdatePaths( testCase_ = 6; return this; } - /** .tests.UpdatePathsTest update_paths = 6; */ + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ public Builder setUpdatePaths( - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.Builder builderForValue) { if (updatePathsBuilder_ == null) { test_ = builderForValue.build(); @@ -2674,17 +2937,17 @@ public Builder setUpdatePaths( testCase_ = 6; return this; } - /** .tests.UpdatePathsTest update_paths = 6; */ + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ public Builder mergeUpdatePaths( - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest value) { if (updatePathsBuilder_ == null) { if (testCase_ == 6 && test_ - != com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + != com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .getDefaultInstance()) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_) .mergeFrom(value) .buildPartial(); @@ -2701,7 +2964,7 @@ public Builder mergeUpdatePaths( testCase_ = 6; return this; } - /** .tests.UpdatePathsTest update_paths = 6; */ + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ public Builder clearUpdatePaths() { if (updatePathsBuilder_ == null) { if (testCase_ == 6) { @@ -2718,42 +2981,43 @@ public Builder clearUpdatePaths() { } return this; } - /** .tests.UpdatePathsTest update_paths = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.Builder getUpdatePathsBuilder() { return getUpdatePathsFieldBuilder().getBuilder(); } - /** .tests.UpdatePathsTest update_paths = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTestOrBuilder getUpdatePathsOrBuilder() { if ((testCase_ == 6) && (updatePathsBuilder_ != null)) { return updatePathsBuilder_.getMessageOrBuilder(); } else { if (testCase_ == 6) { - return (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .getDefaultInstance(); } } - /** .tests.UpdatePathsTest update_paths = 6; */ + /** .google.cloud.conformance.firestore.v1.UpdatePathsTest update_paths = 6; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest, - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTestOrBuilder> getUpdatePathsFieldBuilder() { if (updatePathsBuilder_ == null) { if (!(testCase_ == 6)) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .getDefaultInstance(); } updatePathsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest, - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) test_, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition + .UpdatePathsTestOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) test_, getParentForChildren(), isClean()); test_ = null; @@ -2765,33 +3029,33 @@ public Builder clearUpdatePaths() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest, - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTestOrBuilder> deleteBuilder_; - /** .tests.DeleteTest delete = 7; */ + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ public boolean hasDelete() { return testCase_ == 7; } - /** .tests.DeleteTest delete = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest getDelete() { + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest getDelete() { if (deleteBuilder_ == null) { if (testCase_ == 7) { - return (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest .getDefaultInstance(); } else { if (testCase_ == 7) { return deleteBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest .getDefaultInstance(); } } - /** .tests.DeleteTest delete = 7; */ + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ public Builder setDelete( - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest value) { if (deleteBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2804,9 +3068,9 @@ public Builder setDelete( testCase_ = 7; return this; } - /** .tests.DeleteTest delete = 7; */ + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ public Builder setDelete( - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.Builder builderForValue) { if (deleteBuilder_ == null) { test_ = builderForValue.build(); @@ -2817,17 +3081,17 @@ public Builder setDelete( testCase_ = 7; return this; } - /** .tests.DeleteTest delete = 7; */ + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ public Builder mergeDelete( - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest value) { if (deleteBuilder_ == null) { if (testCase_ == 7 && test_ - != com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + != com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest .getDefaultInstance()) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_) + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_) .mergeFrom(value) .buildPartial(); } else { @@ -2843,7 +3107,7 @@ public Builder mergeDelete( testCase_ = 7; return this; } - /** .tests.DeleteTest delete = 7; */ + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ public Builder clearDelete() { if (deleteBuilder_ == null) { if (testCase_ == 7) { @@ -2860,42 +3124,42 @@ public Builder clearDelete() { } return this; } - /** .tests.DeleteTest delete = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.Builder getDeleteBuilder() { return getDeleteFieldBuilder().getBuilder(); } - /** .tests.DeleteTest delete = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTestOrBuilder getDeleteOrBuilder() { if ((testCase_ == 7) && (deleteBuilder_ != null)) { return deleteBuilder_.getMessageOrBuilder(); } else { if (testCase_ == 7) { - return (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest .getDefaultInstance(); } } - /** .tests.DeleteTest delete = 7; */ + /** .google.cloud.conformance.firestore.v1.DeleteTest delete = 7; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest, - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTestOrBuilder> getDeleteFieldBuilder() { if (deleteBuilder_ == null) { if (!(testCase_ == 7)) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest .getDefaultInstance(); } deleteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest, - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) test_, + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTestOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) test_, getParentForChildren(), isClean()); test_ = null; @@ -2907,33 +3171,33 @@ public Builder clearDelete() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.QueryTest, - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTestOrBuilder> queryBuilder_; - /** .tests.QueryTest query = 8; */ + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ public boolean hasQuery() { return testCase_ == 8; } - /** .tests.QueryTest query = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.QueryTest getQuery() { + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest getQuery() { if (queryBuilder_ == null) { if (testCase_ == 8) { - return (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.QueryTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest .getDefaultInstance(); } else { if (testCase_ == 8) { return queryBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.QueryTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest .getDefaultInstance(); } } - /** .tests.QueryTest query = 8; */ + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ public Builder setQuery( - com.google.cloud.firestore.conformance.TestDefinition.QueryTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest value) { if (queryBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2946,9 +3210,10 @@ public Builder setQuery( testCase_ = 8; return this; } - /** .tests.QueryTest query = 8; */ + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ public Builder setQuery( - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.Builder + builderForValue) { if (queryBuilder_ == null) { test_ = builderForValue.build(); onChanged(); @@ -2958,17 +3223,17 @@ public Builder setQuery( testCase_ = 8; return this; } - /** .tests.QueryTest query = 8; */ + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ public Builder mergeQuery( - com.google.cloud.firestore.conformance.TestDefinition.QueryTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest value) { if (queryBuilder_ == null) { if (testCase_ == 8 && test_ - != com.google.cloud.firestore.conformance.TestDefinition.QueryTest + != com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest .getDefaultInstance()) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_) + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_) .mergeFrom(value) .buildPartial(); } else { @@ -2984,7 +3249,7 @@ public Builder mergeQuery( testCase_ = 8; return this; } - /** .tests.QueryTest query = 8; */ + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ public Builder clearQuery() { if (queryBuilder_ == null) { if (testCase_ == 8) { @@ -3001,42 +3266,42 @@ public Builder clearQuery() { } return this; } - /** .tests.QueryTest query = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.Builder getQueryBuilder() { return getQueryFieldBuilder().getBuilder(); } - /** .tests.QueryTest query = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTestOrBuilder getQueryOrBuilder() { if ((testCase_ == 8) && (queryBuilder_ != null)) { return queryBuilder_.getMessageOrBuilder(); } else { if (testCase_ == 8) { - return (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.QueryTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest .getDefaultInstance(); } } - /** .tests.QueryTest query = 8; */ + /** .google.cloud.conformance.firestore.v1.QueryTest query = 8; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.QueryTest, - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTestOrBuilder> getQueryFieldBuilder() { if (queryBuilder_ == null) { if (!(testCase_ == 8)) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.QueryTest + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest .getDefaultInstance(); } queryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.QueryTest, - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) test_, + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTestOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) test_, getParentForChildren(), isClean()); test_ = null; @@ -3048,33 +3313,33 @@ public Builder clearQuery() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.ListenTest, - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTestOrBuilder> listenBuilder_; - /** .tests.ListenTest listen = 9; */ + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ public boolean hasListen() { return testCase_ == 9; } - /** .tests.ListenTest listen = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.ListenTest getListen() { + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest getListen() { if (listenBuilder_ == null) { if (testCase_ == 9) { - return (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.ListenTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest .getDefaultInstance(); } else { if (testCase_ == 9) { return listenBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.ListenTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest .getDefaultInstance(); } } - /** .tests.ListenTest listen = 9; */ + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ public Builder setListen( - com.google.cloud.firestore.conformance.TestDefinition.ListenTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest value) { if (listenBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3087,9 +3352,9 @@ public Builder setListen( testCase_ = 9; return this; } - /** .tests.ListenTest listen = 9; */ + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ public Builder setListen( - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.Builder builderForValue) { if (listenBuilder_ == null) { test_ = builderForValue.build(); @@ -3100,17 +3365,17 @@ public Builder setListen( testCase_ = 9; return this; } - /** .tests.ListenTest listen = 9; */ + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ public Builder mergeListen( - com.google.cloud.firestore.conformance.TestDefinition.ListenTest value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest value) { if (listenBuilder_ == null) { if (testCase_ == 9 && test_ - != com.google.cloud.firestore.conformance.TestDefinition.ListenTest + != com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest .getDefaultInstance()) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_) + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_) .mergeFrom(value) .buildPartial(); } else { @@ -3126,7 +3391,7 @@ public Builder mergeListen( testCase_ = 9; return this; } - /** .tests.ListenTest listen = 9; */ + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ public Builder clearListen() { if (listenBuilder_ == null) { if (testCase_ == 9) { @@ -3143,42 +3408,42 @@ public Builder clearListen() { } return this; } - /** .tests.ListenTest listen = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.Builder getListenBuilder() { return getListenFieldBuilder().getBuilder(); } - /** .tests.ListenTest listen = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTestOrBuilder getListenOrBuilder() { if ((testCase_ == 9) && (listenBuilder_ != null)) { return listenBuilder_.getMessageOrBuilder(); } else { if (testCase_ == 9) { - return (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_; } - return com.google.cloud.firestore.conformance.TestDefinition.ListenTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest .getDefaultInstance(); } } - /** .tests.ListenTest listen = 9; */ + /** .google.cloud.conformance.firestore.v1.ListenTest listen = 9; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.ListenTest, - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTestOrBuilder> getListenFieldBuilder() { if (listenBuilder_ == null) { if (!(testCase_ == 9)) { test_ = - com.google.cloud.firestore.conformance.TestDefinition.ListenTest + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest .getDefaultInstance(); } listenBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.ListenTest, - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder, - com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) test_, + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest, + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTestOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) test_, getParentForChildren(), isClean()); test_ = null; @@ -3189,33 +3454,37 @@ public Builder clearListen() { return listenBuilder_; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.Test) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.Test) } - // @@protoc_insertion_point(class_scope:tests.Test) - private static final com.google.cloud.firestore.conformance.TestDefinition.Test + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.Test) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.Test DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Test(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.Test(); } - public static com.google.cloud.firestore.conformance.TestDefinition.Test getDefaultInstance() { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Test + getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public Test parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -3233,14 +3502,16 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.Test getDefaultInstanceForType() { + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Test + getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } public interface GetTestOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.GetTest) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.GetTest) com.google.protobuf.MessageOrBuilder { /** @@ -3302,11 +3573,11 @@ public interface GetTestOrBuilder * Call to the DocumentRef.Get method. * * - * Protobuf type {@code tests.GetTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.GetTest} */ public static final class GetTest extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.GetTest) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.GetTest) GetTestOrBuilder { private static final long serialVersionUID = 0L; // Use GetTest.newBuilder() to construct. @@ -3342,13 +3613,6 @@ private GetTest( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); @@ -3370,6 +3634,13 @@ private GetTest( request_ = subBuilder.buildPartial(); } + break; + } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } break; } } @@ -3385,17 +3656,18 @@ private GetTest( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_GetTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_GetTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_GetTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_GetTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.GetTest.class, - com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.Builder.class); } public static final int DOC_REF_PATH_FIELD_NUMBER = 1; @@ -3484,6 +3756,7 @@ public com.google.firestore.v1.GetDocumentRequestOrBuilder getRequestOrBuilder() private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -3493,6 +3766,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getDocRefPathBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_); @@ -3503,6 +3777,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -3524,20 +3799,19 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.GetTest)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.GetTest other = - (com.google.cloud.firestore.conformance.TestDefinition.GetTest) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) obj; - boolean result = true; - result = result && getDocRefPath().equals(other.getDocRefPath()); - result = result && (hasRequest() == other.hasRequest()); + if (!getDocRefPath().equals(other.getDocRefPath())) return false; + if (hasRequest() != other.hasRequest()) return false; if (hasRequest()) { - result = result && getRequest().equals(other.getRequest()); + if (!getRequest().equals(other.getRequest())) return false; } - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -3558,71 +3832,72 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseDelimitedFrom( - java.io.InputStream input) throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseDelimitedFrom( - java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest + parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3630,6 +3905,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.GetTest pars PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -3639,10 +3915,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.GetTest prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -3660,28 +3937,30 @@ protected Builder newBuilderForType( * Call to the DocumentRef.Get method. * * - * Protobuf type {@code tests.GetTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.GetTest} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.GetTest) - com.google.cloud.firestore.conformance.TestDefinition.GetTestOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.GetTest) + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTestOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_GetTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_GetTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_GetTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_GetTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.GetTest.class, - com.google.cloud.firestore.conformance.TestDefinition.GetTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.Builder.class); } - // Construct using com.google.cloud.firestore.conformance.TestDefinition.GetTest.newBuilder() + // Construct using + // com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -3695,6 +3974,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); docRefPath_ = ""; @@ -3708,27 +3988,32 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_GetTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_GetTest_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.GetTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest + .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.GetTest build() { - com.google.cloud.firestore.conformance.TestDefinition.GetTest result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.GetTest buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.GetTest result = - new com.google.cloud.firestore.conformance.TestDefinition.GetTest(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest(this); result.docRefPath_ = docRefPath_; if (requestBuilder_ == null) { result.request_ = request_; @@ -3739,38 +4024,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.GetTest buildPartia return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.GetTest) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.GetTest) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) { + return mergeFrom( + (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) other); } else { super.mergeFrom(other); return this; @@ -3778,10 +4071,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.GetTest other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.GetTest.getDefaultInstance()) - return this; + == com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest + .getDefaultInstance()) return this; if (!other.getDocRefPath().isEmpty()) { docRefPath_ = other.docRefPath_; onChanged(); @@ -3794,20 +4087,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.GetTest parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.GetTest) + (com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -3912,7 +4207,7 @@ public Builder setDocRefPathBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.firestore.v1.GetDocumentRequest request_ = null; + private com.google.firestore.v1.GetDocumentRequest request_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.GetDocumentRequest, com.google.firestore.v1.GetDocumentRequest.Builder, @@ -4094,34 +4389,37 @@ public com.google.firestore.v1.GetDocumentRequestOrBuilder getRequestOrBuilder() return requestBuilder_; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.GetTest) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.GetTest) } - // @@protoc_insertion_point(class_scope:tests.GetTest) - private static final com.google.cloud.firestore.conformance.TestDefinition.GetTest + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.GetTest) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.GetTest(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest(); } - public static com.google.cloud.firestore.conformance.TestDefinition.GetTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public GetTest parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -4139,7 +4437,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.GetTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.GetTest getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -4147,7 +4446,7 @@ public com.google.protobuf.Parser getParserForType() { public interface CreateTestOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.CreateTest) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.CreateTest) com.google.protobuf.MessageOrBuilder { /** @@ -4246,11 +4545,11 @@ public interface CreateTestOrBuilder * Call to DocumentRef.Create. * * - * Protobuf type {@code tests.CreateTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.CreateTest} */ public static final class CreateTest extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.CreateTest) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.CreateTest) CreateTestOrBuilder { private static final long serialVersionUID = 0L; // Use CreateTest.newBuilder() to construct. @@ -4261,7 +4560,6 @@ private CreateTest(com.google.protobuf.GeneratedMessageV3.Builder builder) { private CreateTest() { docRefPath_ = ""; jsonData_ = ""; - isError_ = false; } @java.lang.Override @@ -4288,13 +4586,6 @@ private CreateTest( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); @@ -4330,6 +4621,13 @@ private CreateTest( isError_ = input.readBool(); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -4343,17 +4641,18 @@ private CreateTest( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_CreateTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_CreateTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_CreateTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_CreateTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.class, - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.Builder.class); } public static final int DOC_REF_PATH_FIELD_NUMBER = 1; @@ -4505,6 +4804,7 @@ public boolean getIsError() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -4514,6 +4814,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getDocRefPathBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_); @@ -4530,6 +4831,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -4557,22 +4859,21 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.CreateTest)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.CreateTest other = - (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) obj; - boolean result = true; - result = result && getDocRefPath().equals(other.getDocRefPath()); - result = result && getJsonData().equals(other.getJsonData()); - result = result && (hasRequest() == other.hasRequest()); + if (!getDocRefPath().equals(other.getDocRefPath())) return false; + if (!getJsonData().equals(other.getJsonData())) return false; + if (hasRequest() != other.hasRequest()) return false; if (hasRequest()) { - result = result && getRequest().equals(other.getRequest()); + if (!getRequest().equals(other.getRequest())) return false; } - result = result && (getIsError() == other.getIsError()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (getIsError() != other.getIsError()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -4597,59 +4898,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4657,12 +4958,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest p PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4670,6 +4971,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest p PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -4679,10 +4981,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.CreateTest prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -4700,29 +5003,30 @@ protected Builder newBuilderForType( * Call to DocumentRef.Create. * * - * Protobuf type {@code tests.CreateTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.CreateTest} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.CreateTest) - com.google.cloud.firestore.conformance.TestDefinition.CreateTestOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.CreateTest) + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTestOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_CreateTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_CreateTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_CreateTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_CreateTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.class, - com.google.cloud.firestore.conformance.TestDefinition.CreateTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.CreateTest.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -4736,6 +5040,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); docRefPath_ = ""; @@ -4753,28 +5058,32 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_CreateTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_CreateTest_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.CreateTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.CreateTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.CreateTest build() { - com.google.cloud.firestore.conformance.TestDefinition.CreateTest result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.CreateTest buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.CreateTest result = - new com.google.cloud.firestore.conformance.TestDefinition.CreateTest(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest(this); result.docRefPath_ = docRefPath_; result.jsonData_ = jsonData_; if (requestBuilder_ == null) { @@ -4787,39 +5096,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.CreateTest buildPar return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.CreateTest) { + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) { return mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) other); + (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) other); } else { super.mergeFrom(other); return this; @@ -4827,9 +5143,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.CreateTest other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.CreateTest + == com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest .getDefaultInstance()) return this; if (!other.getDocRefPath().isEmpty()) { docRefPath_ = other.docRefPath_; @@ -4850,20 +5166,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.CreateTest parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.CreateTest) + (com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -5072,7 +5390,7 @@ public Builder setJsonDataBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.firestore.v1.CommitRequest request_ = null; + private com.google.firestore.v1.CommitRequest request_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.CommitRequest, com.google.firestore.v1.CommitRequest.Builder, @@ -5300,34 +5618,37 @@ public Builder clearIsError() { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.CreateTest) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.CreateTest) } - // @@protoc_insertion_point(class_scope:tests.CreateTest) - private static final com.google.cloud.firestore.conformance.TestDefinition.CreateTest + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.CreateTest) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.CreateTest(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest(); } - public static com.google.cloud.firestore.conformance.TestDefinition.CreateTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public CreateTest parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -5345,7 +5666,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.CreateTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.CreateTest getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -5353,7 +5675,7 @@ public com.google.protobuf.Parser getParserForType() { public interface SetTestOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.SetTest) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.SetTest) com.google.protobuf.MessageOrBuilder { /** @@ -5384,7 +5706,7 @@ public interface SetTestOrBuilder * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ boolean hasOption(); /** @@ -5394,9 +5716,9 @@ public interface SetTestOrBuilder * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.SetOption getOption(); + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption getOption(); /** * * @@ -5404,9 +5726,10 @@ public interface SetTestOrBuilder * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder getOptionOrBuilder(); + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOptionOrBuilder + getOptionOrBuilder(); /** * @@ -5478,11 +5801,11 @@ public interface SetTestOrBuilder * A call to DocumentRef.Set. * * - * Protobuf type {@code tests.SetTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.SetTest} */ public static final class SetTest extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.SetTest) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.SetTest) SetTestOrBuilder { private static final long serialVersionUID = 0L; // Use SetTest.newBuilder() to construct. @@ -5493,7 +5816,6 @@ private SetTest(com.google.protobuf.GeneratedMessageV3.Builder builder) { private SetTest() { docRefPath_ = ""; jsonData_ = ""; - isError_ = false; } @java.lang.Override @@ -5520,13 +5842,6 @@ private SetTest( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); @@ -5536,14 +5851,14 @@ private SetTest( } case 18: { - com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder subBuilder = - null; + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.Builder + subBuilder = null; if (option_ != null) { subBuilder = option_.toBuilder(); } option_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.SetOption.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom(option_); @@ -5580,6 +5895,13 @@ private SetTest( isError_ = input.readBool(); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -5593,17 +5915,18 @@ private SetTest( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.SetTest.class, - com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.Builder.class); } public static final int DOC_REF_PATH_FIELD_NUMBER = 1; @@ -5650,7 +5973,7 @@ public com.google.protobuf.ByteString getDocRefPathBytes() { } public static final int OPTION_FIELD_NUMBER = 2; - private com.google.cloud.firestore.conformance.TestDefinition.SetOption option_; + private com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption option_; /** * * @@ -5658,7 +5981,7 @@ public com.google.protobuf.ByteString getDocRefPathBytes() { * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ public boolean hasOption() { return option_ != null; @@ -5670,11 +5993,11 @@ public boolean hasOption() { * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetOption getOption() { + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption getOption() { return option_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.getDefaultInstance() : option_; } /** @@ -5684,9 +6007,9 @@ public com.google.cloud.firestore.conformance.TestDefinition.SetOption getOption * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetOptionOrBuilder getOptionOrBuilder() { return getOption(); } @@ -5792,6 +6115,7 @@ public boolean getIsError() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -5801,6 +6125,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getDocRefPathBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_); @@ -5820,6 +6145,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -5850,26 +6176,25 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.SetTest)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.SetTest other = - (com.google.cloud.firestore.conformance.TestDefinition.SetTest) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) obj; - boolean result = true; - result = result && getDocRefPath().equals(other.getDocRefPath()); - result = result && (hasOption() == other.hasOption()); + if (!getDocRefPath().equals(other.getDocRefPath())) return false; + if (hasOption() != other.hasOption()) return false; if (hasOption()) { - result = result && getOption().equals(other.getOption()); + if (!getOption().equals(other.getOption())) return false; } - result = result && getJsonData().equals(other.getJsonData()); - result = result && (hasRequest() == other.hasRequest()); + if (!getJsonData().equals(other.getJsonData())) return false; + if (hasRequest() != other.hasRequest()) return false; if (hasRequest()) { - result = result && getRequest().equals(other.getRequest()); + if (!getRequest().equals(other.getRequest())) return false; } - result = result && (getIsError() == other.getIsError()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (getIsError() != other.getIsError()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -5898,71 +6223,72 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseDelimitedFrom( - java.io.InputStream input) throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseDelimitedFrom( - java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest + parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -5970,6 +6296,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.SetTest pars PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -5979,10 +6306,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.SetTest prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -6000,28 +6328,30 @@ protected Builder newBuilderForType( * A call to DocumentRef.Set. * * - * Protobuf type {@code tests.SetTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.SetTest} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.SetTest) - com.google.cloud.firestore.conformance.TestDefinition.SetTestOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.SetTest) + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTestOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.SetTest.class, - com.google.cloud.firestore.conformance.TestDefinition.SetTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.Builder.class); } - // Construct using com.google.cloud.firestore.conformance.TestDefinition.SetTest.newBuilder() + // Construct using + // com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -6035,6 +6365,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); docRefPath_ = ""; @@ -6058,27 +6389,32 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetTest_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.SetTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest + .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.SetTest build() { - com.google.cloud.firestore.conformance.TestDefinition.SetTest result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.SetTest buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.SetTest result = - new com.google.cloud.firestore.conformance.TestDefinition.SetTest(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest(this); result.docRefPath_ = docRefPath_; if (optionBuilder_ == null) { result.option_ = option_; @@ -6096,38 +6432,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.SetTest buildPartia return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.SetTest) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.SetTest) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) { + return mergeFrom( + (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) other); } else { super.mergeFrom(other); return this; @@ -6135,10 +6479,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.SetTest other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.SetTest.getDefaultInstance()) - return this; + == com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest + .getDefaultInstance()) return this; if (!other.getDocRefPath().isEmpty()) { docRefPath_ = other.docRefPath_; onChanged(); @@ -6161,20 +6505,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.SetTest parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.SetTest) + (com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -6279,11 +6625,11 @@ public Builder setDocRefPathBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.cloud.firestore.conformance.TestDefinition.SetOption option_ = null; + private com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption option_; private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.SetOption, - com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOptionOrBuilder> optionBuilder_; /** * @@ -6292,7 +6638,7 @@ public Builder setDocRefPathBytes(com.google.protobuf.ByteString value) { * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ public boolean hasOption() { return optionBuilder_ != null || option_ != null; @@ -6304,12 +6650,13 @@ public boolean hasOption() { * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetOption getOption() { + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption getOption() { if (optionBuilder_ == null) { return option_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption + .getDefaultInstance() : option_; } else { return optionBuilder_.getMessage(); @@ -6322,10 +6669,10 @@ public com.google.cloud.firestore.conformance.TestDefinition.SetOption getOption * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ public Builder setOption( - com.google.cloud.firestore.conformance.TestDefinition.SetOption value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption value) { if (optionBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -6345,10 +6692,11 @@ public Builder setOption( * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ public Builder setOption( - com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.Builder + builderForValue) { if (optionBuilder_ == null) { option_ = builderForValue.build(); onChanged(); @@ -6365,14 +6713,15 @@ public Builder setOption( * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ public Builder mergeOption( - com.google.cloud.firestore.conformance.TestDefinition.SetOption value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption value) { if (optionBuilder_ == null) { if (option_ != null) { option_ = - com.google.cloud.firestore.conformance.TestDefinition.SetOption.newBuilder(option_) + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.newBuilder( + option_) .mergeFrom(value) .buildPartial(); } else { @@ -6392,7 +6741,7 @@ public Builder mergeOption( * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ public Builder clearOption() { if (optionBuilder_ == null) { @@ -6412,9 +6761,9 @@ public Builder clearOption() { * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.Builder getOptionBuilder() { onChanged(); @@ -6427,15 +6776,16 @@ public Builder clearOption() { * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetOptionOrBuilder getOptionOrBuilder() { if (optionBuilder_ != null) { return optionBuilder_.getMessageOrBuilder(); } else { return option_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption + .getDefaultInstance() : option_; } } @@ -6446,19 +6796,19 @@ public Builder clearOption() { * option to the Set call, if any * * - * .tests.SetOption option = 2; + * .google.cloud.conformance.firestore.v1.SetOption option = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.SetOption, - com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOptionOrBuilder> getOptionFieldBuilder() { if (optionBuilder_ == null) { optionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.SetOption, - com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder>( + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOptionOrBuilder>( getOption(), getParentForChildren(), isClean()); option_ = null; } @@ -6559,7 +6909,7 @@ public Builder setJsonDataBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.firestore.v1.CommitRequest request_ = null; + private com.google.firestore.v1.CommitRequest request_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.CommitRequest, com.google.firestore.v1.CommitRequest.Builder, @@ -6784,34 +7134,37 @@ public Builder clearIsError() { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.SetTest) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.SetTest) } - // @@protoc_insertion_point(class_scope:tests.SetTest) - private static final com.google.cloud.firestore.conformance.TestDefinition.SetTest + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.SetTest) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.SetTest(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest(); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public SetTest parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -6829,7 +7182,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.SetTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetTest getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -6837,7 +7191,7 @@ public com.google.protobuf.Parser getParserForType() { public interface UpdateTestOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.UpdateTest) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.UpdateTest) com.google.protobuf.MessageOrBuilder { /** @@ -6963,11 +7317,11 @@ public interface UpdateTestOrBuilder * or dictionary. * * - * Protobuf type {@code tests.UpdateTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.UpdateTest} */ public static final class UpdateTest extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.UpdateTest) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.UpdateTest) UpdateTestOrBuilder { private static final long serialVersionUID = 0L; // Use UpdateTest.newBuilder() to construct. @@ -6978,7 +7332,6 @@ private UpdateTest(com.google.protobuf.GeneratedMessageV3.Builder builder) { private UpdateTest() { docRefPath_ = ""; jsonData_ = ""; - isError_ = false; } @java.lang.Override @@ -7005,13 +7358,6 @@ private UpdateTest( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); @@ -7063,6 +7409,13 @@ private UpdateTest( isError_ = input.readBool(); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -7076,17 +7429,18 @@ private UpdateTest( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdateTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdateTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdateTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdateTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.class, - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.Builder.class); } public static final int DOC_REF_PATH_FIELD_NUMBER = 1; @@ -7274,6 +7628,7 @@ public boolean getIsError() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -7283,6 +7638,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getDocRefPathBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_); @@ -7302,6 +7658,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -7332,26 +7689,25 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.UpdateTest)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest other = - (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) obj; - boolean result = true; - result = result && getDocRefPath().equals(other.getDocRefPath()); - result = result && (hasPrecondition() == other.hasPrecondition()); + if (!getDocRefPath().equals(other.getDocRefPath())) return false; + if (hasPrecondition() != other.hasPrecondition()) return false; if (hasPrecondition()) { - result = result && getPrecondition().equals(other.getPrecondition()); + if (!getPrecondition().equals(other.getPrecondition())) return false; } - result = result && getJsonData().equals(other.getJsonData()); - result = result && (hasRequest() == other.hasRequest()); + if (!getJsonData().equals(other.getJsonData())) return false; + if (hasRequest() != other.hasRequest()) return false; if (hasRequest()) { - result = result && getRequest().equals(other.getRequest()); + if (!getRequest().equals(other.getRequest())) return false; } - result = result && (getIsError() == other.getIsError()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (getIsError() != other.getIsError()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -7380,59 +7736,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -7440,12 +7796,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest p PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -7453,6 +7809,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest p PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -7462,10 +7819,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -7484,29 +7842,30 @@ protected Builder newBuilderForType( * or dictionary. * * - * Protobuf type {@code tests.UpdateTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.UpdateTest} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.UpdateTest) - com.google.cloud.firestore.conformance.TestDefinition.UpdateTestOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.UpdateTest) + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTestOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdateTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdateTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdateTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdateTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.class, - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.UpdateTest.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -7520,6 +7879,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); docRefPath_ = ""; @@ -7543,28 +7903,32 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdateTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdateTest_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest build() { - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest result = - new com.google.cloud.firestore.conformance.TestDefinition.UpdateTest(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest(this); result.docRefPath_ = docRefPath_; if (preconditionBuilder_ == null) { result.precondition_ = precondition_; @@ -7582,39 +7946,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest buildPar return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) { + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) { return mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) other); + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) other); } else { super.mergeFrom(other); return this; @@ -7622,9 +7993,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + == com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest .getDefaultInstance()) return this; if (!other.getDocRefPath().isEmpty()) { docRefPath_ = other.docRefPath_; @@ -7648,20 +8019,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.UpdateTest parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.UpdateTest) + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -7766,7 +8139,7 @@ public Builder setDocRefPathBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.firestore.v1.Precondition precondition_ = null; + private com.google.firestore.v1.Precondition precondition_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.Precondition, com.google.firestore.v1.Precondition.Builder, @@ -8041,7 +8414,7 @@ public Builder setJsonDataBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.firestore.v1.CommitRequest request_ = null; + private com.google.firestore.v1.CommitRequest request_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.CommitRequest, com.google.firestore.v1.CommitRequest.Builder, @@ -8266,34 +8639,37 @@ public Builder clearIsError() { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.UpdateTest) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.UpdateTest) } - // @@protoc_insertion_point(class_scope:tests.UpdateTest) - private static final com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.UpdateTest) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.UpdateTest(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest(); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public UpdateTest parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -8311,7 +8687,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.UpdateTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdateTest getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -8319,7 +8696,7 @@ public com.google.protobuf.Parser getParserForType() { public interface UpdatePathsTestOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.UpdatePathsTest) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.UpdatePathsTest) com.google.protobuf.MessageOrBuilder { /** @@ -8381,9 +8758,9 @@ public interface UpdatePathsTestOrBuilder * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - java.util.List + java.util.List getFieldPathsList(); /** * @@ -8392,9 +8769,9 @@ public interface UpdatePathsTestOrBuilder * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFieldPaths(int index); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getFieldPaths(int index); /** * * @@ -8402,7 +8779,7 @@ public interface UpdatePathsTestOrBuilder * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ int getFieldPathsCount(); /** @@ -8412,10 +8789,10 @@ public interface UpdatePathsTestOrBuilder * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldPathsOrBuilderList(); /** * @@ -8424,10 +8801,10 @@ public interface UpdatePathsTestOrBuilder * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldPathsOrBuilder( - int index); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder + getFieldPathsOrBuilder(int index); /** * @@ -8520,11 +8897,11 @@ com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFiel * of field paths and their values. * * - * Protobuf type {@code tests.UpdatePathsTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.UpdatePathsTest} */ public static final class UpdatePathsTest extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.UpdatePathsTest) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.UpdatePathsTest) UpdatePathsTestOrBuilder { private static final long serialVersionUID = 0L; // Use UpdatePathsTest.newBuilder() to construct. @@ -8536,7 +8913,6 @@ private UpdatePathsTest() { docRefPath_ = ""; fieldPaths_ = java.util.Collections.emptyList(); jsonValues_ = com.google.protobuf.LazyStringArrayList.EMPTY; - isError_ = false; } @java.lang.Override @@ -8563,13 +8939,6 @@ private UpdatePathsTest( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); @@ -8595,22 +8964,22 @@ private UpdatePathsTest( } case 26: { - if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + if (!((mutable_bitField0_ & 0x00000004) != 0)) { fieldPaths_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath>(); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath>(); mutable_bitField0_ |= 0x00000004; } fieldPaths_.add( input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.parser(), extensionRegistry)); break; } case 34: { java.lang.String s = input.readStringRequireUtf8(); - if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + if (!((mutable_bitField0_ & 0x00000008) != 0)) { jsonValues_ = new com.google.protobuf.LazyStringArrayList(); mutable_bitField0_ |= 0x00000008; } @@ -8638,6 +9007,13 @@ private UpdatePathsTest( isError_ = input.readBool(); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -8645,10 +9021,10 @@ private UpdatePathsTest( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + if (((mutable_bitField0_ & 0x00000004) != 0)) { fieldPaths_ = java.util.Collections.unmodifiableList(fieldPaths_); } - if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + if (((mutable_bitField0_ & 0x00000008) != 0)) { jsonValues_ = jsonValues_.getUnmodifiableView(); } this.unknownFields = unknownFields.build(); @@ -8657,17 +9033,19 @@ private UpdatePathsTest( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdatePathsTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdatePathsTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.class, - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.Builder + .class); } private int bitField0_; @@ -8756,7 +9134,7 @@ public com.google.firestore.v1.PreconditionOrBuilder getPreconditionOrBuilder() } public static final int FIELD_PATHS_FIELD_NUMBER = 3; - private java.util.List + private java.util.List fieldPaths_; /** * @@ -8765,9 +9143,9 @@ public com.google.firestore.v1.PreconditionOrBuilder getPreconditionOrBuilder() * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public java.util.List + public java.util.List getFieldPathsList() { return fieldPaths_; } @@ -8778,10 +9156,10 @@ public com.google.firestore.v1.PreconditionOrBuilder getPreconditionOrBuilder() * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldPathsOrBuilderList() { return fieldPaths_; } @@ -8792,7 +9170,7 @@ public com.google.firestore.v1.PreconditionOrBuilder getPreconditionOrBuilder() * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public int getFieldPathsCount() { return fieldPaths_.size(); @@ -8804,9 +9182,9 @@ public int getFieldPathsCount() { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFieldPaths( + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getFieldPaths( int index) { return fieldPaths_.get(index); } @@ -8817,9 +9195,9 @@ public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFieldP * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getFieldPathsOrBuilder(int index) { return fieldPaths_.get(index); } @@ -8933,6 +9311,7 @@ public boolean getIsError() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -8942,6 +9321,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getDocRefPathBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_); @@ -8964,6 +9344,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -9002,27 +9383,27 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest)) { + if (!(obj + instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest other = - (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) obj; - boolean result = true; - result = result && getDocRefPath().equals(other.getDocRefPath()); - result = result && (hasPrecondition() == other.hasPrecondition()); + if (!getDocRefPath().equals(other.getDocRefPath())) return false; + if (hasPrecondition() != other.hasPrecondition()) return false; if (hasPrecondition()) { - result = result && getPrecondition().equals(other.getPrecondition()); + if (!getPrecondition().equals(other.getPrecondition())) return false; } - result = result && getFieldPathsList().equals(other.getFieldPathsList()); - result = result && getJsonValuesList().equals(other.getJsonValuesList()); - result = result && (hasRequest() == other.hasRequest()); + if (!getFieldPathsList().equals(other.getFieldPathsList())) return false; + if (!getJsonValuesList().equals(other.getJsonValuesList())) return false; + if (hasRequest() != other.hasRequest()) return false; if (hasRequest()) { - result = result && getRequest().equals(other.getRequest()); + if (!getRequest().equals(other.getRequest())) return false; } - result = result && (getIsError() == other.getIsError()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (getIsError() != other.getIsError()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -9057,59 +9438,63 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - java.io.InputStream input) throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -9117,19 +9502,21 @@ public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsT PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -9139,10 +9526,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -9161,30 +9549,31 @@ protected Builder newBuilderForType( * of field paths and their values. * * - * Protobuf type {@code tests.UpdatePathsTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.UpdatePathsTest} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.UpdatePathsTest) - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTestOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.UpdatePathsTest) + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTestOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdatePathsTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdatePathsTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.class, - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.Builder .class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -9200,6 +9589,7 @@ private void maybeForceBuilderInitialization() { } } + @java.lang.Override public Builder clear() { super.clear(); docRefPath_ = ""; @@ -9229,19 +9619,22 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_UpdatePathsTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest build() { - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest result = + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); @@ -9249,9 +9642,11 @@ public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest bui return result; } - public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest result = - new com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest + buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; result.docRefPath_ = docRefPath_; @@ -9261,7 +9656,7 @@ public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest bui result.precondition_ = preconditionBuilder_.build(); } if (fieldPathsBuilder_ == null) { - if (((bitField0_ & 0x00000004) == 0x00000004)) { + if (((bitField0_ & 0x00000004) != 0)) { fieldPaths_ = java.util.Collections.unmodifiableList(fieldPaths_); bitField0_ = (bitField0_ & ~0x00000004); } @@ -9269,7 +9664,7 @@ public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest bui } else { result.fieldPaths_ = fieldPathsBuilder_.build(); } - if (((bitField0_ & 0x00000008) == 0x00000008)) { + if (((bitField0_ & 0x00000008) != 0)) { jsonValues_ = jsonValues_.getUnmodifiableView(); bitField0_ = (bitField0_ & ~0x00000008); } @@ -9285,40 +9680,47 @@ public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest bui return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { if (other - instanceof com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) { + instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) { return mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) other); + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) other); } else { super.mergeFrom(other); return this; @@ -9326,9 +9728,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + == com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest .getDefaultInstance()) return this; if (!other.getDocRefPath().isEmpty()) { docRefPath_ = other.docRefPath_; @@ -9385,20 +9787,23 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest parsedMessage = + null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest) + (com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -9505,7 +9910,7 @@ public Builder setDocRefPathBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.firestore.v1.Precondition precondition_ = null; + private com.google.firestore.v1.Precondition precondition_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.Precondition, com.google.firestore.v1.Precondition.Builder, @@ -9686,22 +10091,22 @@ public com.google.firestore.v1.PreconditionOrBuilder getPreconditionOrBuilder() return preconditionBuilder_; } - private java.util.List + private java.util.List fieldPaths_ = java.util.Collections.emptyList(); private void ensureFieldPathsIsMutable() { - if (!((bitField0_ & 0x00000004) == 0x00000004)) { + if (!((bitField0_ & 0x00000004) != 0)) { fieldPaths_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath>(fieldPaths_); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath>(fieldPaths_); bitField0_ |= 0x00000004; } } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> fieldPathsBuilder_; /** @@ -9711,9 +10116,9 @@ private void ensureFieldPathsIsMutable() { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public java.util.List + public java.util.List getFieldPathsList() { if (fieldPathsBuilder_ == null) { return java.util.Collections.unmodifiableList(fieldPaths_); @@ -9728,7 +10133,7 @@ private void ensureFieldPathsIsMutable() { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public int getFieldPathsCount() { if (fieldPathsBuilder_ == null) { @@ -9744,9 +10149,9 @@ public int getFieldPathsCount() { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFieldPaths( + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getFieldPaths( int index) { if (fieldPathsBuilder_ == null) { return fieldPaths_.get(index); @@ -9761,10 +10166,10 @@ public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFieldP * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public Builder setFieldPaths( - int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (fieldPathsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -9784,11 +10189,12 @@ public Builder setFieldPaths( * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public Builder setFieldPaths( int index, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (fieldPathsBuilder_ == null) { ensureFieldPathsIsMutable(); fieldPaths_.set(index, builderForValue.build()); @@ -9805,10 +10211,10 @@ public Builder setFieldPaths( * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public Builder addFieldPaths( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (fieldPathsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -9828,10 +10234,10 @@ public Builder addFieldPaths( * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public Builder addFieldPaths( - int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (fieldPathsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -9851,10 +10257,11 @@ public Builder addFieldPaths( * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public Builder addFieldPaths( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (fieldPathsBuilder_ == null) { ensureFieldPathsIsMutable(); fieldPaths_.add(builderForValue.build()); @@ -9871,11 +10278,12 @@ public Builder addFieldPaths( * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public Builder addFieldPaths( int index, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (fieldPathsBuilder_ == null) { ensureFieldPathsIsMutable(); fieldPaths_.add(index, builderForValue.build()); @@ -9892,11 +10300,11 @@ public Builder addFieldPaths( * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public Builder addAllFieldPaths( java.lang.Iterable< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPath> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath> values) { if (fieldPathsBuilder_ == null) { ensureFieldPathsIsMutable(); @@ -9914,7 +10322,7 @@ public Builder addAllFieldPaths( * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public Builder clearFieldPaths() { if (fieldPathsBuilder_ == null) { @@ -9933,7 +10341,7 @@ public Builder clearFieldPaths() { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public Builder removeFieldPaths(int index) { if (fieldPathsBuilder_ == null) { @@ -9952,9 +10360,9 @@ public Builder removeFieldPaths(int index) { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder getFieldPathsBuilder(int index) { return getFieldPathsFieldBuilder().getBuilder(index); } @@ -9965,9 +10373,9 @@ public Builder removeFieldPaths(int index) { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getFieldPathsOrBuilder(int index) { if (fieldPathsBuilder_ == null) { return fieldPaths_.get(index); @@ -9982,10 +10390,10 @@ public Builder removeFieldPaths(int index) { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldPathsOrBuilderList() { if (fieldPathsBuilder_ != null) { return fieldPathsBuilder_.getMessageOrBuilderList(); @@ -10000,13 +10408,13 @@ public Builder removeFieldPaths(int index) { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder addFieldPathsBuilder() { return getFieldPathsFieldBuilder() .addBuilder( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath .getDefaultInstance()); } /** @@ -10016,14 +10424,14 @@ public Builder removeFieldPaths(int index) { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder addFieldPathsBuilder(int index) { return getFieldPathsFieldBuilder() .addBuilder( index, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath .getDefaultInstance()); } /** @@ -10033,28 +10441,26 @@ public Builder removeFieldPaths(int index) { * parallel sequences: field_paths[i] corresponds to json_values[i] * * - * repeated .tests.FieldPath field_paths = 3; + * repeated .google.cloud.conformance.firestore.v1.FieldPath field_paths = 3; */ - public java.util.List + public java.util.List< + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder> getFieldPathsBuilderList() { return getFieldPathsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldPathsFieldBuilder() { if (fieldPathsBuilder_ == null) { fieldPathsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>( - fieldPaths_, - ((bitField0_ & 0x00000004) == 0x00000004), - getParentForChildren(), - isClean()); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder>( + fieldPaths_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); fieldPaths_ = null; } return fieldPathsBuilder_; @@ -10064,7 +10470,7 @@ public Builder removeFieldPaths(int index) { com.google.protobuf.LazyStringArrayList.EMPTY; private void ensureJsonValuesIsMutable() { - if (!((bitField0_ & 0x00000008) == 0x00000008)) { + if (!((bitField0_ & 0x00000008) != 0)) { jsonValues_ = new com.google.protobuf.LazyStringArrayList(jsonValues_); bitField0_ |= 0x00000008; } @@ -10203,7 +10609,7 @@ public Builder addJsonValuesBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.firestore.v1.CommitRequest request_ = null; + private com.google.firestore.v1.CommitRequest request_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.CommitRequest, com.google.firestore.v1.CommitRequest.Builder, @@ -10428,35 +10834,38 @@ public Builder clearIsError() { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.UpdatePathsTest) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.UpdatePathsTest) } - // @@protoc_insertion_point(class_scope:tests.UpdatePathsTest) - private static final com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.UpdatePathsTest) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest DEFAULT_INSTANCE; static { DEFAULT_INSTANCE = - new com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest(); + new com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest(); } - public static com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public UpdatePathsTest parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -10474,7 +10883,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.UpdatePathsTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.UpdatePathsTest getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -10482,7 +10892,7 @@ public com.google.protobuf.Parser getParserForType() { public interface DeleteTestOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.DeleteTest) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.DeleteTest) com.google.protobuf.MessageOrBuilder { /** @@ -10562,11 +10972,11 @@ public interface DeleteTestOrBuilder * A call to DocmentRef.Delete * * - * Protobuf type {@code tests.DeleteTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.DeleteTest} */ public static final class DeleteTest extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.DeleteTest) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.DeleteTest) DeleteTestOrBuilder { private static final long serialVersionUID = 0L; // Use DeleteTest.newBuilder() to construct. @@ -10576,7 +10986,6 @@ private DeleteTest(com.google.protobuf.GeneratedMessageV3.Builder builder) { private DeleteTest() { docRefPath_ = ""; - isError_ = false; } @java.lang.Override @@ -10603,13 +11012,6 @@ private DeleteTest( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); @@ -10654,6 +11056,13 @@ private DeleteTest( isError_ = input.readBool(); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -10667,17 +11076,18 @@ private DeleteTest( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DeleteTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DeleteTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DeleteTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DeleteTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.class, - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.Builder.class); } public static final int DOC_REF_PATH_FIELD_NUMBER = 1; @@ -10798,6 +11208,7 @@ public boolean getIsError() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -10807,6 +11218,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getDocRefPathBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, docRefPath_); @@ -10823,6 +11235,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -10850,25 +11263,24 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.DeleteTest)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest other = - (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) obj; - boolean result = true; - result = result && getDocRefPath().equals(other.getDocRefPath()); - result = result && (hasPrecondition() == other.hasPrecondition()); + if (!getDocRefPath().equals(other.getDocRefPath())) return false; + if (hasPrecondition() != other.hasPrecondition()) return false; if (hasPrecondition()) { - result = result && getPrecondition().equals(other.getPrecondition()); + if (!getPrecondition().equals(other.getPrecondition())) return false; } - result = result && (hasRequest() == other.hasRequest()); + if (hasRequest() != other.hasRequest()) return false; if (hasRequest()) { - result = result && getRequest().equals(other.getRequest()); + if (!getRequest().equals(other.getRequest())) return false; } - result = result && (getIsError() == other.getIsError()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (getIsError() != other.getIsError()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -10895,59 +11307,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -10955,12 +11367,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest p PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -10968,6 +11380,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest p PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -10977,10 +11390,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -10998,29 +11412,30 @@ protected Builder newBuilderForType( * A call to DocmentRef.Delete * * - * Protobuf type {@code tests.DeleteTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.DeleteTest} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.DeleteTest) - com.google.cloud.firestore.conformance.TestDefinition.DeleteTestOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.DeleteTest) + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTestOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DeleteTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DeleteTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DeleteTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DeleteTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.class, - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.DeleteTest.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -11034,6 +11449,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); docRefPath_ = ""; @@ -11055,28 +11471,32 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DeleteTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DeleteTest_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest build() { - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest result = - new com.google.cloud.firestore.conformance.TestDefinition.DeleteTest(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest(this); result.docRefPath_ = docRefPath_; if (preconditionBuilder_ == null) { result.precondition_ = precondition_; @@ -11093,39 +11513,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest buildPar return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) { + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) { return mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) other); + (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) other); } else { super.mergeFrom(other); return this; @@ -11133,9 +11560,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + == com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest .getDefaultInstance()) return this; if (!other.getDocRefPath().isEmpty()) { docRefPath_ = other.docRefPath_; @@ -11155,20 +11582,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.DeleteTest parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.DeleteTest) + (com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -11273,7 +11702,7 @@ public Builder setDocRefPathBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.firestore.v1.Precondition precondition_ = null; + private com.google.firestore.v1.Precondition precondition_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.Precondition, com.google.firestore.v1.Precondition.Builder, @@ -11382,7 +11811,7 @@ public com.google.firestore.v1.PreconditionOrBuilder getPreconditionOrBuilder() return preconditionBuilder_; } - private com.google.firestore.v1.CommitRequest request_ = null; + private com.google.firestore.v1.CommitRequest request_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.CommitRequest, com.google.firestore.v1.CommitRequest.Builder, @@ -11607,34 +12036,37 @@ public Builder clearIsError() { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.DeleteTest) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.DeleteTest) } - // @@protoc_insertion_point(class_scope:tests.DeleteTest) - private static final com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.DeleteTest) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.DeleteTest(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest(); } - public static com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public DeleteTest parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -11652,7 +12084,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.DeleteTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DeleteTest getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -11660,7 +12093,7 @@ public com.google.protobuf.Parser getParserForType() { public interface SetOptionOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.SetOption) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.SetOption) com.google.protobuf.MessageOrBuilder { /** @@ -11681,9 +12114,10 @@ public interface SetOptionOrBuilder * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - java.util.List getFieldsList(); + java.util.List + getFieldsList(); /** * * @@ -11691,9 +12125,9 @@ public interface SetOptionOrBuilder * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getFields(int index); /** * * @@ -11701,7 +12135,7 @@ public interface SetOptionOrBuilder * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ int getFieldsCount(); /** @@ -11711,10 +12145,10 @@ public interface SetOptionOrBuilder * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldsOrBuilderList(); /** * @@ -11723,9 +12157,9 @@ public interface SetOptionOrBuilder * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder( + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder( int index); } /** @@ -11735,11 +12169,11 @@ com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFiel * An option to the DocumentRef.Set call. * * - * Protobuf type {@code tests.SetOption} + * Protobuf type {@code google.cloud.conformance.firestore.v1.SetOption} */ public static final class SetOption extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.SetOption) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.SetOption) SetOptionOrBuilder { private static final long serialVersionUID = 0L; // Use SetOption.newBuilder() to construct. @@ -11748,7 +12182,6 @@ private SetOption(com.google.protobuf.GeneratedMessageV3.Builder builder) { } private SetOption() { - all_ = false; fields_ = java.util.Collections.emptyList(); } @@ -11776,13 +12209,6 @@ private SetOption( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 8: { all_ = input.readBool(); @@ -11790,18 +12216,25 @@ private SetOption( } case 18: { - if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { fields_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath>(); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath>(); mutable_bitField0_ |= 0x00000002; } fields_.add( input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.parser(), extensionRegistry)); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -11809,7 +12242,7 @@ private SetOption( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (((mutable_bitField0_ & 0x00000002) != 0)) { fields_ = java.util.Collections.unmodifiableList(fields_); } this.unknownFields = unknownFields.build(); @@ -11818,17 +12251,18 @@ private SetOption( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetOption_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetOption_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetOption_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetOption_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.SetOption.class, - com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.Builder.class); } private int bitField0_; @@ -11848,7 +12282,8 @@ public boolean getAll() { } public static final int FIELDS_FIELD_NUMBER = 2; - private java.util.List fields_; + private java.util.List + fields_; /** * * @@ -11856,9 +12291,9 @@ public boolean getAll() { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public java.util.List + public java.util.List getFieldsList() { return fields_; } @@ -11869,10 +12304,10 @@ public boolean getAll() { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldsOrBuilderList() { return fields_; } @@ -11883,7 +12318,7 @@ public boolean getAll() { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public int getFieldsCount() { return fields_.size(); @@ -11895,9 +12330,9 @@ public int getFieldsCount() { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index) { + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getFields(int index) { return fields_.get(index); } /** @@ -11907,15 +12342,16 @@ public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(int index) { return fields_.get(index); } private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -11925,6 +12361,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (all_ != false) { output.writeBool(1, all_); @@ -11935,6 +12372,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -11956,17 +12394,16 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.SetOption)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.SetOption other = - (com.google.cloud.firestore.conformance.TestDefinition.SetOption) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption) obj; - boolean result = true; - result = result && (getAll() == other.getAll()); - result = result && getFieldsList().equals(other.getFieldsList()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (getAll() != other.getAll()) return false; + if (!getFieldsList().equals(other.getFieldsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -11987,59 +12424,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -12047,12 +12484,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.SetOption pa PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -12060,6 +12497,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.SetOption pa PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -12069,10 +12507,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.SetOption prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -12090,29 +12529,30 @@ protected Builder newBuilderForType( * An option to the DocumentRef.Set call. * * - * Protobuf type {@code tests.SetOption} + * Protobuf type {@code google.cloud.conformance.firestore.v1.SetOption} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.SetOption) - com.google.cloud.firestore.conformance.TestDefinition.SetOptionOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.SetOption) + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOptionOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetOption_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetOption_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetOption_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetOption_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.SetOption.class, - com.google.cloud.firestore.conformance.TestDefinition.SetOption.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.SetOption.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -12128,6 +12568,7 @@ private void maybeForceBuilderInitialization() { } } + @java.lang.Override public Builder clear() { super.clear(); all_ = false; @@ -12141,32 +12582,37 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_SetOption_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_SetOption_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.SetOption + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption + .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.SetOption build() { - com.google.cloud.firestore.conformance.TestDefinition.SetOption result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.SetOption buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.SetOption result = - new com.google.cloud.firestore.conformance.TestDefinition.SetOption(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; result.all_ = all_; if (fieldsBuilder_ == null) { - if (((bitField0_ & 0x00000002) == 0x00000002)) { + if (((bitField0_ & 0x00000002) != 0)) { fields_ = java.util.Collections.unmodifiableList(fields_); bitField0_ = (bitField0_ & ~0x00000002); } @@ -12179,38 +12625,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.SetOption buildPart return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.SetOption) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.SetOption) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption) { + return mergeFrom( + (com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption) other); } else { super.mergeFrom(other); return this; @@ -12218,10 +12672,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.SetOption other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.SetOption.getDefaultInstance()) - return this; + == com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption + .getDefaultInstance()) return this; if (other.getAll() != false) { setAll(other.getAll()); } @@ -12257,20 +12711,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.SetOption parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.SetOption) + (com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -12327,22 +12783,22 @@ public Builder clearAll() { return this; } - private java.util.List + private java.util.List fields_ = java.util.Collections.emptyList(); private void ensureFieldsIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { + if (!((bitField0_ & 0x00000002) != 0)) { fields_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath>(fields_); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath>(fields_); bitField0_ |= 0x00000002; } } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> fieldsBuilder_; /** @@ -12352,9 +12808,9 @@ private void ensureFieldsIsMutable() { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public java.util.List + public java.util.List getFieldsList() { if (fieldsBuilder_ == null) { return java.util.Collections.unmodifiableList(fields_); @@ -12369,7 +12825,7 @@ private void ensureFieldsIsMutable() { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public int getFieldsCount() { if (fieldsBuilder_ == null) { @@ -12385,9 +12841,10 @@ public int getFieldsCount() { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index) { + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getFields( + int index) { if (fieldsBuilder_ == null) { return fields_.get(index); } else { @@ -12401,10 +12858,10 @@ public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public Builder setFields( - int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (fieldsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -12424,11 +12881,12 @@ public Builder setFields( * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public Builder setFields( int index, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (fieldsBuilder_ == null) { ensureFieldsIsMutable(); fields_.set(index, builderForValue.build()); @@ -12445,10 +12903,10 @@ public Builder setFields( * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public Builder addFields( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (fieldsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -12468,10 +12926,10 @@ public Builder addFields( * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public Builder addFields( - int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (fieldsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -12491,10 +12949,11 @@ public Builder addFields( * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public Builder addFields( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (fieldsBuilder_ == null) { ensureFieldsIsMutable(); fields_.add(builderForValue.build()); @@ -12511,11 +12970,12 @@ public Builder addFields( * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public Builder addFields( int index, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (fieldsBuilder_ == null) { ensureFieldsIsMutable(); fields_.add(index, builderForValue.build()); @@ -12532,11 +12992,11 @@ public Builder addFields( * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public Builder addAllFields( java.lang.Iterable< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPath> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath> values) { if (fieldsBuilder_ == null) { ensureFieldsIsMutable(); @@ -12554,7 +13014,7 @@ public Builder addAllFields( * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public Builder clearFields() { if (fieldsBuilder_ == null) { @@ -12573,7 +13033,7 @@ public Builder clearFields() { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public Builder removeFields(int index) { if (fieldsBuilder_ == null) { @@ -12592,9 +13052,9 @@ public Builder removeFields(int index) { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder getFieldsBuilder(int index) { return getFieldsFieldBuilder().getBuilder(index); } @@ -12605,9 +13065,9 @@ public Builder removeFields(int index) { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(int index) { if (fieldsBuilder_ == null) { return fields_.get(index); @@ -12622,10 +13082,10 @@ public Builder removeFields(int index) { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldsOrBuilderList() { if (fieldsBuilder_ != null) { return fieldsBuilder_.getMessageOrBuilderList(); @@ -12640,13 +13100,13 @@ public Builder removeFields(int index) { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder addFieldsBuilder() { return getFieldsFieldBuilder() .addBuilder( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath .getDefaultInstance()); } /** @@ -12656,14 +13116,14 @@ public Builder removeFields(int index) { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder addFieldsBuilder(int index) { return getFieldsFieldBuilder() .addBuilder( index, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath .getDefaultInstance()); } /** @@ -12673,61 +13133,62 @@ public Builder removeFields(int index) { * field paths for a Merge option * * - * repeated .tests.FieldPath fields = 2; + * repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 2; */ - public java.util.List + public java.util.List< + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder> getFieldsBuilderList() { return getFieldsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldsFieldBuilder() { if (fieldsBuilder_ == null) { fieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>( - fields_, - ((bitField0_ & 0x00000002) == 0x00000002), - getParentForChildren(), - isClean()); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder>( + fields_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); fields_ = null; } return fieldsBuilder_; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.SetOption) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.SetOption) } - // @@protoc_insertion_point(class_scope:tests.SetOption) - private static final com.google.cloud.firestore.conformance.TestDefinition.SetOption + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.SetOption) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.SetOption(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption(); } - public static com.google.cloud.firestore.conformance.TestDefinition.SetOption + public static com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public SetOption parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -12745,7 +13206,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.SetOption + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.SetOption getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -12753,7 +13215,7 @@ public com.google.protobuf.Parser getParserForType() { public interface QueryTestOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.QueryTest) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.QueryTest) com.google.protobuf.MessageOrBuilder { /** @@ -12777,17 +13239,19 @@ public interface QueryTestOrBuilder */ com.google.protobuf.ByteString getCollPathBytes(); - /** repeated .tests.Clause clauses = 2; */ - java.util.List getClausesList(); - /** repeated .tests.Clause clauses = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.Clause getClauses(int index); - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + java.util.List + getClausesList(); + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause getClauses(int index); + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ int getClausesCount(); - /** repeated .tests.Clause clauses = 2; */ - java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + java.util.List< + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder> getClausesOrBuilderList(); - /** repeated .tests.Clause clauses = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder getClausesOrBuilder( + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder getClausesOrBuilder( int index); /** .google.firestore.v1.StructuredQuery query = 3; */ @@ -12800,10 +13264,10 @@ com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder getClauses /** bool is_error = 4; */ boolean getIsError(); } - /** Protobuf type {@code tests.QueryTest} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.QueryTest} */ public static final class QueryTest extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.QueryTest) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.QueryTest) QueryTestOrBuilder { private static final long serialVersionUID = 0L; // Use QueryTest.newBuilder() to construct. @@ -12814,7 +13278,6 @@ private QueryTest(com.google.protobuf.GeneratedMessageV3.Builder builder) { private QueryTest() { collPath_ = ""; clauses_ = java.util.Collections.emptyList(); - isError_ = false; } @java.lang.Override @@ -12841,13 +13304,6 @@ private QueryTest( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); @@ -12857,15 +13313,15 @@ private QueryTest( } case 18: { - if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { clauses_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.Clause>(); + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause>(); mutable_bitField0_ |= 0x00000002; } clauses_.add( input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.Clause.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.parser(), extensionRegistry)); break; } @@ -12890,6 +13346,13 @@ private QueryTest( isError_ = input.readBool(); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -12897,7 +13360,7 @@ private QueryTest( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (((mutable_bitField0_ & 0x00000002) != 0)) { clauses_ = java.util.Collections.unmodifiableList(clauses_); } this.unknownFields = unknownFields.build(); @@ -12906,17 +13369,18 @@ private QueryTest( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_QueryTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_QueryTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_QueryTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_QueryTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.class, - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.Builder.class); } private int bitField0_; @@ -12964,28 +13428,29 @@ public com.google.protobuf.ByteString getCollPathBytes() { } public static final int CLAUSES_FIELD_NUMBER = 2; - private java.util.List clauses_; - /** repeated .tests.Clause clauses = 2; */ - public java.util.List + private java.util.List + clauses_; + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public java.util.List getClausesList() { return clauses_; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder> getClausesOrBuilderList() { return clauses_; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public int getClausesCount() { return clauses_.size(); } - /** repeated .tests.Clause clauses = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Clause getClauses(int index) { + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause getClauses(int index) { return clauses_.get(index); } - /** repeated .tests.Clause clauses = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder getClausesOrBuilder(int index) { return clauses_.get(index); } @@ -13014,6 +13479,7 @@ public boolean getIsError() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -13023,6 +13489,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getCollPathBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, collPath_); @@ -13039,6 +13506,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -13066,22 +13534,21 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.QueryTest)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.QueryTest other = - (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) obj; - boolean result = true; - result = result && getCollPath().equals(other.getCollPath()); - result = result && getClausesList().equals(other.getClausesList()); - result = result && (hasQuery() == other.hasQuery()); + if (!getCollPath().equals(other.getCollPath())) return false; + if (!getClausesList().equals(other.getClausesList())) return false; + if (hasQuery() != other.hasQuery()) return false; if (hasQuery()) { - result = result && getQuery().equals(other.getQuery()); + if (!getQuery().equals(other.getQuery())) return false; } - result = result && (getIsError() == other.getIsError()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (getIsError() != other.getIsError()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -13108,59 +13575,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -13168,12 +13635,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest pa PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -13181,6 +13648,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest pa PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -13190,10 +13658,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.QueryTest prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -13204,28 +13673,29 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.QueryTest} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.QueryTest} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.QueryTest) - com.google.cloud.firestore.conformance.TestDefinition.QueryTestOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.QueryTest) + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTestOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_QueryTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_QueryTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_QueryTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_QueryTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.class, - com.google.cloud.firestore.conformance.TestDefinition.QueryTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.QueryTest.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -13241,6 +13711,7 @@ private void maybeForceBuilderInitialization() { } } + @java.lang.Override public Builder clear() { super.clear(); collPath_ = ""; @@ -13262,32 +13733,37 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_QueryTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_QueryTest_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.QueryTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest + .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.QueryTest build() { - com.google.cloud.firestore.conformance.TestDefinition.QueryTest result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.QueryTest buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.QueryTest result = - new com.google.cloud.firestore.conformance.TestDefinition.QueryTest(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; result.collPath_ = collPath_; if (clausesBuilder_ == null) { - if (((bitField0_ & 0x00000002) == 0x00000002)) { + if (((bitField0_ & 0x00000002) != 0)) { clauses_ = java.util.Collections.unmodifiableList(clauses_); bitField0_ = (bitField0_ & ~0x00000002); } @@ -13306,38 +13782,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.QueryTest buildPart return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.QueryTest) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.QueryTest) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) { + return mergeFrom( + (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) other); } else { super.mergeFrom(other); return this; @@ -13345,10 +13829,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.QueryTest other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.QueryTest.getDefaultInstance()) - return this; + == com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest + .getDefaultInstance()) return this; if (!other.getCollPath().isEmpty()) { collPath_ = other.collPath_; onChanged(); @@ -13391,20 +13875,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.QueryTest parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.QueryTest) + (com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -13511,26 +13997,26 @@ public Builder setCollPathBytes(com.google.protobuf.ByteString value) { return this; } - private java.util.List + private java.util.List clauses_ = java.util.Collections.emptyList(); private void ensureClausesIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { + if (!((bitField0_ & 0x00000002) != 0)) { clauses_ = - new java.util.ArrayList( - clauses_); + new java.util.ArrayList< + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause>(clauses_); bitField0_ |= 0x00000002; } } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Clause, - com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder, - com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause, + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder> clausesBuilder_; - /** repeated .tests.Clause clauses = 2; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public java.util.List getClausesList() { if (clausesBuilder_ == null) { return java.util.Collections.unmodifiableList(clauses_); @@ -13538,7 +14024,7 @@ private void ensureClausesIsMutable() { return clausesBuilder_.getMessageList(); } } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public int getClausesCount() { if (clausesBuilder_ == null) { return clauses_.size(); @@ -13546,17 +14032,17 @@ public int getClausesCount() { return clausesBuilder_.getCount(); } } - /** repeated .tests.Clause clauses = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Clause getClauses(int index) { + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause getClauses(int index) { if (clausesBuilder_ == null) { return clauses_.get(index); } else { return clausesBuilder_.getMessage(index); } } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public Builder setClauses( - int index, com.google.cloud.firestore.conformance.TestDefinition.Clause value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.Clause value) { if (clausesBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -13569,10 +14055,10 @@ public Builder setClauses( } return this; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public Builder setClauses( int index, - com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder builderForValue) { if (clausesBuilder_ == null) { ensureClausesIsMutable(); clauses_.set(index, builderForValue.build()); @@ -13582,9 +14068,9 @@ public Builder setClauses( } return this; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public Builder addClauses( - com.google.cloud.firestore.conformance.TestDefinition.Clause value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause value) { if (clausesBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -13597,9 +14083,9 @@ public Builder addClauses( } return this; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public Builder addClauses( - int index, com.google.cloud.firestore.conformance.TestDefinition.Clause value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.Clause value) { if (clausesBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -13612,9 +14098,9 @@ public Builder addClauses( } return this; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public Builder addClauses( - com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder builderForValue) { if (clausesBuilder_ == null) { ensureClausesIsMutable(); clauses_.add(builderForValue.build()); @@ -13624,10 +14110,10 @@ public Builder addClauses( } return this; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public Builder addClauses( int index, - com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder builderForValue) { if (clausesBuilder_ == null) { ensureClausesIsMutable(); clauses_.add(index, builderForValue.build()); @@ -13637,9 +14123,10 @@ public Builder addClauses( } return this; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public Builder addAllClauses( - java.lang.Iterable + java.lang.Iterable< + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.Clause> values) { if (clausesBuilder_ == null) { ensureClausesIsMutable(); @@ -13650,7 +14137,7 @@ public Builder addAllClauses( } return this; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public Builder clearClauses() { if (clausesBuilder_ == null) { clauses_ = java.util.Collections.emptyList(); @@ -13661,7 +14148,7 @@ public Builder clearClauses() { } return this; } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public Builder removeClauses(int index) { if (clausesBuilder_ == null) { ensureClausesIsMutable(); @@ -13672,13 +14159,13 @@ public Builder removeClauses(int index) { } return this; } - /** repeated .tests.Clause clauses = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder getClausesBuilder( - int index) { + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder + getClausesBuilder(int index) { return getClausesFieldBuilder().getBuilder(index); } - /** repeated .tests.Clause clauses = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder getClausesOrBuilder(int index) { if (clausesBuilder_ == null) { return clauses_.get(index); @@ -13686,9 +14173,9 @@ public com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder getC return clausesBuilder_.getMessageOrBuilder(index); } } - /** repeated .tests.Clause clauses = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder> getClausesOrBuilderList() { if (clausesBuilder_ != null) { return clausesBuilder_.getMessageOrBuilderList(); @@ -13696,48 +14183,47 @@ public com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder getC return java.util.Collections.unmodifiableList(clauses_); } } - /** repeated .tests.Clause clauses = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder addClausesBuilder() { return getClausesFieldBuilder() .addBuilder( - com.google.cloud.firestore.conformance.TestDefinition.Clause.getDefaultInstance()); + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause + .getDefaultInstance()); } - /** repeated .tests.Clause clauses = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder addClausesBuilder( - int index) { + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder + addClausesBuilder(int index) { return getClausesFieldBuilder() .addBuilder( index, - com.google.cloud.firestore.conformance.TestDefinition.Clause.getDefaultInstance()); + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause + .getDefaultInstance()); } - /** repeated .tests.Clause clauses = 2; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Clause clauses = 2; */ + public java.util.List getClausesBuilderList() { return getClausesFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Clause, - com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder, - com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause, + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder> getClausesFieldBuilder() { if (clausesBuilder_ == null) { clausesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Clause, - com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder, - com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder>( - clauses_, - ((bitField0_ & 0x00000002) == 0x00000002), - getParentForChildren(), - isClean()); + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause, + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder>( + clauses_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); clauses_ = null; } return clausesBuilder_; } - private com.google.firestore.v1.StructuredQuery query_ = null; + private com.google.firestore.v1.StructuredQuery query_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.StructuredQuery, com.google.firestore.v1.StructuredQuery.Builder, @@ -13866,34 +14352,37 @@ public Builder clearIsError() { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.QueryTest) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.QueryTest) } - // @@protoc_insertion_point(class_scope:tests.QueryTest) - private static final com.google.cloud.firestore.conformance.TestDefinition.QueryTest + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.QueryTest) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.QueryTest(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest(); } - public static com.google.cloud.firestore.conformance.TestDefinition.QueryTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public QueryTest parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -13911,7 +14400,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.QueryTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.QueryTest getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -13919,29 +14409,29 @@ public com.google.protobuf.Parser getParserForType() { public interface ClauseOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.Clause) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.Clause) com.google.protobuf.MessageOrBuilder { - /** .tests.Select select = 1; */ + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ boolean hasSelect(); - /** .tests.Select select = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.Select getSelect(); - /** .tests.Select select = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder getSelectOrBuilder(); + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.Select getSelect(); + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.SelectOrBuilder getSelectOrBuilder(); - /** .tests.Where where = 2; */ + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ boolean hasWhere(); - /** .tests.Where where = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.Where getWhere(); - /** .tests.Where where = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder getWhereOrBuilder(); + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.Where getWhere(); + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.WhereOrBuilder getWhereOrBuilder(); - /** .tests.OrderBy order_by = 3; */ + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ boolean hasOrderBy(); - /** .tests.OrderBy order_by = 3; */ - com.google.cloud.firestore.conformance.TestDefinition.OrderBy getOrderBy(); - /** .tests.OrderBy order_by = 3; */ - com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder getOrderByOrBuilder(); + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy getOrderBy(); + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderByOrBuilder getOrderByOrBuilder(); /** int32 offset = 4; */ int getOffset(); @@ -13949,40 +14439,43 @@ public interface ClauseOrBuilder /** int32 limit = 5; */ int getLimit(); - /** .tests.Cursor start_at = 6; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ boolean hasStartAt(); - /** .tests.Cursor start_at = 6; */ - com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAt(); - /** .tests.Cursor start_at = 6; */ - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getStartAtOrBuilder(); + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getStartAt(); + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getStartAtOrBuilder(); - /** .tests.Cursor start_after = 7; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ boolean hasStartAfter(); - /** .tests.Cursor start_after = 7; */ - com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAfter(); - /** .tests.Cursor start_after = 7; */ - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getStartAfterOrBuilder(); + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getStartAfter(); + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder + getStartAfterOrBuilder(); - /** .tests.Cursor end_at = 8; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ boolean hasEndAt(); - /** .tests.Cursor end_at = 8; */ - com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndAt(); - /** .tests.Cursor end_at = 8; */ - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getEndAtOrBuilder(); + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getEndAt(); + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getEndAtOrBuilder(); - /** .tests.Cursor end_before = 9; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ boolean hasEndBefore(); - /** .tests.Cursor end_before = 9; */ - com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndBefore(); - /** .tests.Cursor end_before = 9; */ - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder getEndBeforeOrBuilder(); - - public com.google.cloud.firestore.conformance.TestDefinition.Clause.ClauseCase getClauseCase(); + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getEndBefore(); + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder + getEndBeforeOrBuilder(); + + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.ClauseCase + getClauseCase(); } - /** Protobuf type {@code tests.Clause} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Clause} */ public static final class Clause extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.Clause) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.Clause) ClauseOrBuilder { private static final long serialVersionUID = 0L; // Use Clause.newBuilder() to construct. @@ -14016,29 +14509,22 @@ private Clause( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { - com.google.cloud.firestore.conformance.TestDefinition.Select.Builder subBuilder = + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.Builder subBuilder = null; if (clauseCase_ == 1) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.Select) clause_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_) .toBuilder(); } clause_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.Select.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_); clause_ = subBuilder.buildPartial(); } clauseCase_ = 1; @@ -14046,20 +14532,20 @@ private Clause( } case 18: { - com.google.cloud.firestore.conformance.TestDefinition.Where.Builder subBuilder = + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.Builder subBuilder = null; if (clauseCase_ == 2) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.Where) clause_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_) .toBuilder(); } clause_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.Where.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_); clause_ = subBuilder.buildPartial(); } clauseCase_ = 2; @@ -14067,20 +14553,20 @@ private Clause( } case 26: { - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder subBuilder = - null; + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.Builder + subBuilder = null; if (clauseCase_ == 3) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_) .toBuilder(); } clause_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_); clause_ = subBuilder.buildPartial(); } clauseCase_ = 3; @@ -14100,20 +14586,20 @@ private Clause( } case 50: { - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder subBuilder = + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder subBuilder = null; if (clauseCase_ == 6) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_) .toBuilder(); } clause_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); clause_ = subBuilder.buildPartial(); } clauseCase_ = 6; @@ -14121,20 +14607,20 @@ private Clause( } case 58: { - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder subBuilder = + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder subBuilder = null; if (clauseCase_ == 7) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_) .toBuilder(); } clause_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); clause_ = subBuilder.buildPartial(); } clauseCase_ = 7; @@ -14142,20 +14628,20 @@ private Clause( } case 66: { - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder subBuilder = + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder subBuilder = null; if (clauseCase_ == 8) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_) .toBuilder(); } clause_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); clause_ = subBuilder.buildPartial(); } clauseCase_ = 8; @@ -14163,25 +14649,32 @@ private Clause( } case 74: { - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder subBuilder = + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder subBuilder = null; if (clauseCase_ == 9) { subBuilder = - ((com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_) + ((com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_) .toBuilder(); } clause_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); clause_ = subBuilder.buildPartial(); } clauseCase_ = 9; break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -14195,17 +14688,18 @@ private Clause( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Clause_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Clause_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Clause_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Clause_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Clause.class, - com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder.class); } private int clauseCase_ = 0; @@ -14270,66 +14764,66 @@ public ClauseCase getClauseCase() { } public static final int SELECT_FIELD_NUMBER = 1; - /** .tests.Select select = 1; */ + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ public boolean hasSelect() { return clauseCase_ == 1; } - /** .tests.Select select = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.Select getSelect() { + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Select getSelect() { if (clauseCase_ == 1) { - return (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Select.getDefaultInstance(); } - /** .tests.Select select = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.SelectOrBuilder getSelectOrBuilder() { if (clauseCase_ == 1) { - return (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Select.getDefaultInstance(); } public static final int WHERE_FIELD_NUMBER = 2; - /** .tests.Where where = 2; */ + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ public boolean hasWhere() { return clauseCase_ == 2; } - /** .tests.Where where = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Where getWhere() { + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Where getWhere() { if (clauseCase_ == 2) { - return (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Where.getDefaultInstance(); } - /** .tests.Where where = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.WhereOrBuilder getWhereOrBuilder() { if (clauseCase_ == 2) { - return (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Where.getDefaultInstance(); } public static final int ORDER_BY_FIELD_NUMBER = 3; - /** .tests.OrderBy order_by = 3; */ + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ public boolean hasOrderBy() { return clauseCase_ == 3; } - /** .tests.OrderBy order_by = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.OrderBy getOrderBy() { + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy getOrderBy() { if (clauseCase_ == 3) { - return (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.getDefaultInstance(); } - /** .tests.OrderBy order_by = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.OrderByOrBuilder getOrderByOrBuilder() { if (clauseCase_ == 3) { - return (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.getDefaultInstance(); } public static final int OFFSET_FIELD_NUMBER = 4; @@ -14351,91 +14845,92 @@ public int getLimit() { } public static final int START_AT_FIELD_NUMBER = 6; - /** .tests.Cursor start_at = 6; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ public boolean hasStartAt() { return clauseCase_ == 6; } - /** .tests.Cursor start_at = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAt() { + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getStartAt() { if (clauseCase_ == 6) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance(); } - /** .tests.Cursor start_at = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getStartAtOrBuilder() { if (clauseCase_ == 6) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance(); } public static final int START_AFTER_FIELD_NUMBER = 7; - /** .tests.Cursor start_after = 7; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ public boolean hasStartAfter() { return clauseCase_ == 7; } - /** .tests.Cursor start_after = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAfter() { + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getStartAfter() { if (clauseCase_ == 7) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance(); } - /** .tests.Cursor start_after = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getStartAfterOrBuilder() { if (clauseCase_ == 7) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance(); } public static final int END_AT_FIELD_NUMBER = 8; - /** .tests.Cursor end_at = 8; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ public boolean hasEndAt() { return clauseCase_ == 8; } - /** .tests.Cursor end_at = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndAt() { + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getEndAt() { if (clauseCase_ == 8) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance(); } - /** .tests.Cursor end_at = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getEndAtOrBuilder() { if (clauseCase_ == 8) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance(); } public static final int END_BEFORE_FIELD_NUMBER = 9; - /** .tests.Cursor end_before = 9; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ public boolean hasEndBefore() { return clauseCase_ == 9; } - /** .tests.Cursor end_before = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndBefore() { + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getEndBefore() { if (clauseCase_ == 9) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance(); } - /** .tests.Cursor end_before = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getEndBeforeOrBuilder() { if (clauseCase_ == 9) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance(); } private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -14445,18 +14940,19 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (clauseCase_ == 1) { output.writeMessage( - 1, (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_); + 1, (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_); } if (clauseCase_ == 2) { output.writeMessage( - 2, (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_); + 2, (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_); } if (clauseCase_ == 3) { output.writeMessage( - 3, (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_); + 3, (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_); } if (clauseCase_ == 4) { output.writeInt32(4, (int) ((java.lang.Integer) clause_)); @@ -14466,23 +14962,24 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io } if (clauseCase_ == 6) { output.writeMessage( - 6, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + 6, (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); } if (clauseCase_ == 7) { output.writeMessage( - 7, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + 7, (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); } if (clauseCase_ == 8) { output.writeMessage( - 8, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + 8, (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); } if (clauseCase_ == 9) { output.writeMessage( - 9, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + 9, (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); } unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -14491,17 +14988,17 @@ public int getSerializedSize() { if (clauseCase_ == 1) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 1, (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_); + 1, (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_); } if (clauseCase_ == 2) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 2, (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_); + 2, (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_); } if (clauseCase_ == 3) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 3, (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_); + 3, (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_); } if (clauseCase_ == 4) { size += @@ -14516,22 +15013,22 @@ public int getSerializedSize() { if (clauseCase_ == 6) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 6, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + 6, (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); } if (clauseCase_ == 7) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 7, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + 7, (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); } if (clauseCase_ == 8) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 8, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + 8, (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); } if (clauseCase_ == 9) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 9, (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_); + 9, (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -14543,48 +15040,46 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Clause)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Clause)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.Clause other = - (com.google.cloud.firestore.conformance.TestDefinition.Clause) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.Clause) obj; - boolean result = true; - result = result && getClauseCase().equals(other.getClauseCase()); - if (!result) return false; + if (!getClauseCase().equals(other.getClauseCase())) return false; switch (clauseCase_) { case 1: - result = result && getSelect().equals(other.getSelect()); + if (!getSelect().equals(other.getSelect())) return false; break; case 2: - result = result && getWhere().equals(other.getWhere()); + if (!getWhere().equals(other.getWhere())) return false; break; case 3: - result = result && getOrderBy().equals(other.getOrderBy()); + if (!getOrderBy().equals(other.getOrderBy())) return false; break; case 4: - result = result && (getOffset() == other.getOffset()); + if (getOffset() != other.getOffset()) return false; break; case 5: - result = result && (getLimit() == other.getLimit()); + if (getLimit() != other.getLimit()) return false; break; case 6: - result = result && getStartAt().equals(other.getStartAt()); + if (!getStartAt().equals(other.getStartAt())) return false; break; case 7: - result = result && getStartAfter().equals(other.getStartAfter()); + if (!getStartAfter().equals(other.getStartAfter())) return false; break; case 8: - result = result && getEndAt().equals(other.getEndAt()); + if (!getEndAt().equals(other.getEndAt())) return false; break; case 9: - result = result && getEndBefore().equals(other.getEndBefore()); + if (!getEndBefore().equals(other.getEndBefore())) return false; break; case 0: default: } - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -14639,71 +15134,72 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseDelimitedFrom( - java.io.InputStream input) throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseDelimitedFrom( - java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause + parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -14711,6 +15207,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.Clause parse PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -14720,10 +15217,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.Clause prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -14734,27 +15232,29 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.Clause} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Clause} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.Clause) - com.google.cloud.firestore.conformance.TestDefinition.ClauseOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.Clause) + com.google.cloud.conformance.firestore.v1.TestDefinition.ClauseOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Clause_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Clause_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Clause_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Clause_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Clause.class, - com.google.cloud.firestore.conformance.TestDefinition.Clause.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.Builder.class); } - // Construct using com.google.cloud.firestore.conformance.TestDefinition.Clause.newBuilder() + // Construct using + // com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -14768,6 +15268,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); clauseCase_ = 0; @@ -14775,27 +15276,31 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Clause_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Clause_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.Clause + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.Clause.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.Clause build() { - com.google.cloud.firestore.conformance.TestDefinition.Clause result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.Clause buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.Clause result = - new com.google.cloud.firestore.conformance.TestDefinition.Clause(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.Clause(this); if (clauseCase_ == 1) { if (selectBuilder_ == null) { result.clause_ = clause_; @@ -14856,47 +15361,55 @@ public com.google.cloud.firestore.conformance.TestDefinition.Clause buildPartial return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Clause) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Clause) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Clause) { + return mergeFrom((com.google.cloud.conformance.firestore.v1.TestDefinition.Clause) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Clause other) { + public Builder mergeFrom( + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.Clause.getDefaultInstance()) + == com.google.cloud.conformance.firestore.v1.TestDefinition.Clause.getDefaultInstance()) return this; switch (other.getClauseCase()) { case SELECT: @@ -14954,20 +15467,22 @@ public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.C return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.Clause parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.Clause parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.Clause) + (com.google.cloud.conformance.firestore.v1.TestDefinition.Clause) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -14993,30 +15508,33 @@ public Builder clearClause() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Select, - com.google.cloud.firestore.conformance.TestDefinition.Select.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Select, + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SelectOrBuilder> selectBuilder_; - /** .tests.Select select = 1; */ + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ public boolean hasSelect() { return clauseCase_ == 1; } - /** .tests.Select select = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.Select getSelect() { + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Select getSelect() { if (selectBuilder_ == null) { if (clauseCase_ == 1) { - return (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Select + .getDefaultInstance(); } else { if (clauseCase_ == 1) { return selectBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Select + .getDefaultInstance(); } } - /** .tests.Select select = 1; */ - public Builder setSelect(com.google.cloud.firestore.conformance.TestDefinition.Select value) { + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ + public Builder setSelect( + com.google.cloud.conformance.firestore.v1.TestDefinition.Select value) { if (selectBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -15029,9 +15547,9 @@ public Builder setSelect(com.google.cloud.firestore.conformance.TestDefinition.S clauseCase_ = 1; return this; } - /** .tests.Select select = 1; */ + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ public Builder setSelect( - com.google.cloud.firestore.conformance.TestDefinition.Select.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.Builder builderForValue) { if (selectBuilder_ == null) { clause_ = builderForValue.build(); onChanged(); @@ -15041,17 +15559,17 @@ public Builder setSelect( clauseCase_ = 1; return this; } - /** .tests.Select select = 1; */ + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ public Builder mergeSelect( - com.google.cloud.firestore.conformance.TestDefinition.Select value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Select value) { if (selectBuilder_ == null) { if (clauseCase_ == 1 && clause_ - != com.google.cloud.firestore.conformance.TestDefinition.Select + != com.google.cloud.conformance.firestore.v1.TestDefinition.Select .getDefaultInstance()) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Select.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_) + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_) .mergeFrom(value) .buildPartial(); } else { @@ -15067,7 +15585,7 @@ public Builder mergeSelect( clauseCase_ = 1; return this; } - /** .tests.Select select = 1; */ + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ public Builder clearSelect() { if (selectBuilder_ == null) { if (clauseCase_ == 1) { @@ -15084,40 +15602,42 @@ public Builder clearSelect() { } return this; } - /** .tests.Select select = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.Select.Builder + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Select.Builder getSelectBuilder() { return getSelectFieldBuilder().getBuilder(); } - /** .tests.Select select = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.SelectOrBuilder getSelectOrBuilder() { if ((clauseCase_ == 1) && (selectBuilder_ != null)) { return selectBuilder_.getMessageOrBuilder(); } else { if (clauseCase_ == 1) { - return (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Select + .getDefaultInstance(); } } - /** .tests.Select select = 1; */ + /** .google.cloud.conformance.firestore.v1.Select select = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Select, - com.google.cloud.firestore.conformance.TestDefinition.Select.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Select, + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SelectOrBuilder> getSelectFieldBuilder() { if (selectBuilder_ == null) { if (!(clauseCase_ == 1)) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance(); + com.google.cloud.conformance.firestore.v1.TestDefinition.Select + .getDefaultInstance(); } selectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Select, - com.google.cloud.firestore.conformance.TestDefinition.Select.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.Select) clause_, + com.google.cloud.conformance.firestore.v1.TestDefinition.Select, + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SelectOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) clause_, getParentForChildren(), isClean()); clause_ = null; @@ -15129,30 +15649,33 @@ public Builder clearSelect() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Where, - com.google.cloud.firestore.conformance.TestDefinition.Where.Builder, - com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Where, + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.WhereOrBuilder> whereBuilder_; - /** .tests.Where where = 2; */ + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ public boolean hasWhere() { return clauseCase_ == 2; } - /** .tests.Where where = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Where getWhere() { + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Where getWhere() { if (whereBuilder_ == null) { if (clauseCase_ == 2) { - return (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Where + .getDefaultInstance(); } else { if (clauseCase_ == 2) { return whereBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Where + .getDefaultInstance(); } } - /** .tests.Where where = 2; */ - public Builder setWhere(com.google.cloud.firestore.conformance.TestDefinition.Where value) { + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ + public Builder setWhere( + com.google.cloud.conformance.firestore.v1.TestDefinition.Where value) { if (whereBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -15165,9 +15688,9 @@ public Builder setWhere(com.google.cloud.firestore.conformance.TestDefinition.Wh clauseCase_ = 2; return this; } - /** .tests.Where where = 2; */ + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ public Builder setWhere( - com.google.cloud.firestore.conformance.TestDefinition.Where.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.Builder builderForValue) { if (whereBuilder_ == null) { clause_ = builderForValue.build(); onChanged(); @@ -15177,16 +15700,17 @@ public Builder setWhere( clauseCase_ = 2; return this; } - /** .tests.Where where = 2; */ - public Builder mergeWhere(com.google.cloud.firestore.conformance.TestDefinition.Where value) { + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ + public Builder mergeWhere( + com.google.cloud.conformance.firestore.v1.TestDefinition.Where value) { if (whereBuilder_ == null) { if (clauseCase_ == 2 && clause_ - != com.google.cloud.firestore.conformance.TestDefinition.Where + != com.google.cloud.conformance.firestore.v1.TestDefinition.Where .getDefaultInstance()) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Where.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_) + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_) .mergeFrom(value) .buildPartial(); } else { @@ -15202,7 +15726,7 @@ public Builder mergeWhere(com.google.cloud.firestore.conformance.TestDefinition. clauseCase_ = 2; return this; } - /** .tests.Where where = 2; */ + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ public Builder clearWhere() { if (whereBuilder_ == null) { if (clauseCase_ == 2) { @@ -15219,39 +15743,41 @@ public Builder clearWhere() { } return this; } - /** .tests.Where where = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Where.Builder getWhereBuilder() { + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Where.Builder + getWhereBuilder() { return getWhereFieldBuilder().getBuilder(); } - /** .tests.Where where = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.WhereOrBuilder getWhereOrBuilder() { if ((clauseCase_ == 2) && (whereBuilder_ != null)) { return whereBuilder_.getMessageOrBuilder(); } else { if (clauseCase_ == 2) { - return (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Where + .getDefaultInstance(); } } - /** .tests.Where where = 2; */ + /** .google.cloud.conformance.firestore.v1.Where where = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Where, - com.google.cloud.firestore.conformance.TestDefinition.Where.Builder, - com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Where, + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.WhereOrBuilder> getWhereFieldBuilder() { if (whereBuilder_ == null) { if (!(clauseCase_ == 2)) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance(); + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.getDefaultInstance(); } whereBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Where, - com.google.cloud.firestore.conformance.TestDefinition.Where.Builder, - com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.Where) clause_, + com.google.cloud.conformance.firestore.v1.TestDefinition.Where, + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.WhereOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) clause_, getParentForChildren(), isClean()); clause_ = null; @@ -15263,31 +15789,33 @@ public com.google.cloud.firestore.conformance.TestDefinition.Where.Builder getWh } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.OrderBy, - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder, - com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy, + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderByOrBuilder> orderByBuilder_; - /** .tests.OrderBy order_by = 3; */ + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ public boolean hasOrderBy() { return clauseCase_ == 3; } - /** .tests.OrderBy order_by = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.OrderBy getOrderBy() { + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy getOrderBy() { if (orderByBuilder_ == null) { if (clauseCase_ == 3) { - return (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy + .getDefaultInstance(); } else { if (clauseCase_ == 3) { return orderByBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy + .getDefaultInstance(); } } - /** .tests.OrderBy order_by = 3; */ + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ public Builder setOrderBy( - com.google.cloud.firestore.conformance.TestDefinition.OrderBy value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy value) { if (orderByBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -15300,9 +15828,10 @@ public Builder setOrderBy( clauseCase_ = 3; return this; } - /** .tests.OrderBy order_by = 3; */ + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ public Builder setOrderBy( - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.Builder + builderForValue) { if (orderByBuilder_ == null) { clause_ = builderForValue.build(); onChanged(); @@ -15312,17 +15841,17 @@ public Builder setOrderBy( clauseCase_ = 3; return this; } - /** .tests.OrderBy order_by = 3; */ + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ public Builder mergeOrderBy( - com.google.cloud.firestore.conformance.TestDefinition.OrderBy value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy value) { if (orderByBuilder_ == null) { if (clauseCase_ == 3 && clause_ - != com.google.cloud.firestore.conformance.TestDefinition.OrderBy + != com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy .getDefaultInstance()) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_) + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_) .mergeFrom(value) .buildPartial(); } else { @@ -15338,7 +15867,7 @@ public Builder mergeOrderBy( clauseCase_ = 3; return this; } - /** .tests.OrderBy order_by = 3; */ + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ public Builder clearOrderBy() { if (orderByBuilder_ == null) { if (clauseCase_ == 3) { @@ -15355,40 +15884,42 @@ public Builder clearOrderBy() { } return this; } - /** .tests.OrderBy order_by = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.Builder getOrderByBuilder() { return getOrderByFieldBuilder().getBuilder(); } - /** .tests.OrderBy order_by = 3; */ - public com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.OrderByOrBuilder getOrderByOrBuilder() { if ((clauseCase_ == 3) && (orderByBuilder_ != null)) { return orderByBuilder_.getMessageOrBuilder(); } else { if (clauseCase_ == 3) { - return (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy + .getDefaultInstance(); } } - /** .tests.OrderBy order_by = 3; */ + /** .google.cloud.conformance.firestore.v1.OrderBy order_by = 3; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.OrderBy, - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder, - com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy, + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderByOrBuilder> getOrderByFieldBuilder() { if (orderByBuilder_ == null) { if (!(clauseCase_ == 3)) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance(); + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy + .getDefaultInstance(); } orderByBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.OrderBy, - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder, - com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) clause_, + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy, + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderByOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) clause_, getParentForChildren(), isClean()); clause_ = null; @@ -15448,31 +15979,33 @@ public Builder clearLimit() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder> startAtBuilder_; - /** .tests.Cursor start_at = 6; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ public boolean hasStartAt() { return clauseCase_ == 6; } - /** .tests.Cursor start_at = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAt() { + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getStartAt() { if (startAtBuilder_ == null) { if (clauseCase_ == 6) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } else { if (clauseCase_ == 6) { return startAtBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } } - /** .tests.Cursor start_at = 6; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ public Builder setStartAt( - com.google.cloud.firestore.conformance.TestDefinition.Cursor value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor value) { if (startAtBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -15485,9 +16018,9 @@ public Builder setStartAt( clauseCase_ = 6; return this; } - /** .tests.Cursor start_at = 6; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ public Builder setStartAt( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder builderForValue) { if (startAtBuilder_ == null) { clause_ = builderForValue.build(); onChanged(); @@ -15497,17 +16030,17 @@ public Builder setStartAt( clauseCase_ = 6; return this; } - /** .tests.Cursor start_at = 6; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ public Builder mergeStartAt( - com.google.cloud.firestore.conformance.TestDefinition.Cursor value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor value) { if (startAtBuilder_ == null) { if (clauseCase_ == 6 && clause_ - != com.google.cloud.firestore.conformance.TestDefinition.Cursor + != com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor .getDefaultInstance()) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_) + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_) .mergeFrom(value) .buildPartial(); } else { @@ -15523,7 +16056,7 @@ public Builder mergeStartAt( clauseCase_ = 6; return this; } - /** .tests.Cursor start_at = 6; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ public Builder clearStartAt() { if (startAtBuilder_ == null) { if (clauseCase_ == 6) { @@ -15540,40 +16073,42 @@ public Builder clearStartAt() { } return this; } - /** .tests.Cursor start_at = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder getStartAtBuilder() { return getStartAtFieldBuilder().getBuilder(); } - /** .tests.Cursor start_at = 6; */ - public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getStartAtOrBuilder() { if ((clauseCase_ == 6) && (startAtBuilder_ != null)) { return startAtBuilder_.getMessageOrBuilder(); } else { if (clauseCase_ == 6) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } } - /** .tests.Cursor start_at = 6; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_at = 6; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder> getStartAtFieldBuilder() { if (startAtBuilder_ == null) { if (!(clauseCase_ == 6)) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } startAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_, getParentForChildren(), isClean()); clause_ = null; @@ -15585,31 +16120,33 @@ public Builder clearStartAt() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder> startAfterBuilder_; - /** .tests.Cursor start_after = 7; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ public boolean hasStartAfter() { return clauseCase_ == 7; } - /** .tests.Cursor start_after = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor getStartAfter() { + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getStartAfter() { if (startAfterBuilder_ == null) { if (clauseCase_ == 7) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } else { if (clauseCase_ == 7) { return startAfterBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } } - /** .tests.Cursor start_after = 7; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ public Builder setStartAfter( - com.google.cloud.firestore.conformance.TestDefinition.Cursor value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor value) { if (startAfterBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -15622,9 +16159,9 @@ public Builder setStartAfter( clauseCase_ = 7; return this; } - /** .tests.Cursor start_after = 7; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ public Builder setStartAfter( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder builderForValue) { if (startAfterBuilder_ == null) { clause_ = builderForValue.build(); onChanged(); @@ -15634,17 +16171,17 @@ public Builder setStartAfter( clauseCase_ = 7; return this; } - /** .tests.Cursor start_after = 7; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ public Builder mergeStartAfter( - com.google.cloud.firestore.conformance.TestDefinition.Cursor value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor value) { if (startAfterBuilder_ == null) { if (clauseCase_ == 7 && clause_ - != com.google.cloud.firestore.conformance.TestDefinition.Cursor + != com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor .getDefaultInstance()) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_) + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_) .mergeFrom(value) .buildPartial(); } else { @@ -15660,7 +16197,7 @@ public Builder mergeStartAfter( clauseCase_ = 7; return this; } - /** .tests.Cursor start_after = 7; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ public Builder clearStartAfter() { if (startAfterBuilder_ == null) { if (clauseCase_ == 7) { @@ -15677,40 +16214,42 @@ public Builder clearStartAfter() { } return this; } - /** .tests.Cursor start_after = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder getStartAfterBuilder() { return getStartAfterFieldBuilder().getBuilder(); } - /** .tests.Cursor start_after = 7; */ - public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getStartAfterOrBuilder() { if ((clauseCase_ == 7) && (startAfterBuilder_ != null)) { return startAfterBuilder_.getMessageOrBuilder(); } else { if (clauseCase_ == 7) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } } - /** .tests.Cursor start_after = 7; */ + /** .google.cloud.conformance.firestore.v1.Cursor start_after = 7; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder> getStartAfterFieldBuilder() { if (startAfterBuilder_ == null) { if (!(clauseCase_ == 7)) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } startAfterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_, getParentForChildren(), isClean()); clause_ = null; @@ -15722,30 +16261,33 @@ public Builder clearStartAfter() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder> endAtBuilder_; - /** .tests.Cursor end_at = 8; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ public boolean hasEndAt() { return clauseCase_ == 8; } - /** .tests.Cursor end_at = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndAt() { + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getEndAt() { if (endAtBuilder_ == null) { if (clauseCase_ == 8) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } else { if (clauseCase_ == 8) { return endAtBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } } - /** .tests.Cursor end_at = 8; */ - public Builder setEndAt(com.google.cloud.firestore.conformance.TestDefinition.Cursor value) { + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ + public Builder setEndAt( + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor value) { if (endAtBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -15758,9 +16300,9 @@ public Builder setEndAt(com.google.cloud.firestore.conformance.TestDefinition.Cu clauseCase_ = 8; return this; } - /** .tests.Cursor end_at = 8; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ public Builder setEndAt( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder builderForValue) { if (endAtBuilder_ == null) { clause_ = builderForValue.build(); onChanged(); @@ -15770,17 +16312,17 @@ public Builder setEndAt( clauseCase_ = 8; return this; } - /** .tests.Cursor end_at = 8; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ public Builder mergeEndAt( - com.google.cloud.firestore.conformance.TestDefinition.Cursor value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor value) { if (endAtBuilder_ == null) { if (clauseCase_ == 8 && clause_ - != com.google.cloud.firestore.conformance.TestDefinition.Cursor + != com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor .getDefaultInstance()) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_) + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_) .mergeFrom(value) .buildPartial(); } else { @@ -15796,7 +16338,7 @@ public Builder mergeEndAt( clauseCase_ = 8; return this; } - /** .tests.Cursor end_at = 8; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ public Builder clearEndAt() { if (endAtBuilder_ == null) { if (clauseCase_ == 8) { @@ -15813,40 +16355,42 @@ public Builder clearEndAt() { } return this; } - /** .tests.Cursor end_at = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder getEndAtBuilder() { return getEndAtFieldBuilder().getBuilder(); } - /** .tests.Cursor end_at = 8; */ - public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getEndAtOrBuilder() { if ((clauseCase_ == 8) && (endAtBuilder_ != null)) { return endAtBuilder_.getMessageOrBuilder(); } else { if (clauseCase_ == 8) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } } - /** .tests.Cursor end_at = 8; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_at = 8; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder> getEndAtFieldBuilder() { if (endAtBuilder_ == null) { if (!(clauseCase_ == 8)) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } endAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_, getParentForChildren(), isClean()); clause_ = null; @@ -15858,31 +16402,33 @@ public Builder clearEndAt() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder> endBeforeBuilder_; - /** .tests.Cursor end_before = 9; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ public boolean hasEndBefore() { return clauseCase_ == 9; } - /** .tests.Cursor end_before = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor getEndBefore() { + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getEndBefore() { if (endBeforeBuilder_ == null) { if (clauseCase_ == 9) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } else { if (clauseCase_ == 9) { return endBeforeBuilder_.getMessage(); } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } } - /** .tests.Cursor end_before = 9; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ public Builder setEndBefore( - com.google.cloud.firestore.conformance.TestDefinition.Cursor value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor value) { if (endBeforeBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -15895,9 +16441,9 @@ public Builder setEndBefore( clauseCase_ = 9; return this; } - /** .tests.Cursor end_before = 9; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ public Builder setEndBefore( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder builderForValue) { if (endBeforeBuilder_ == null) { clause_ = builderForValue.build(); onChanged(); @@ -15907,17 +16453,17 @@ public Builder setEndBefore( clauseCase_ = 9; return this; } - /** .tests.Cursor end_before = 9; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ public Builder mergeEndBefore( - com.google.cloud.firestore.conformance.TestDefinition.Cursor value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor value) { if (endBeforeBuilder_ == null) { if (clauseCase_ == 9 && clause_ - != com.google.cloud.firestore.conformance.TestDefinition.Cursor + != com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor .getDefaultInstance()) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_) + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.newBuilder( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_) .mergeFrom(value) .buildPartial(); } else { @@ -15933,7 +16479,7 @@ public Builder mergeEndBefore( clauseCase_ = 9; return this; } - /** .tests.Cursor end_before = 9; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ public Builder clearEndBefore() { if (endBeforeBuilder_ == null) { if (clauseCase_ == 9) { @@ -15950,40 +16496,42 @@ public Builder clearEndBefore() { } return this; } - /** .tests.Cursor end_before = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder getEndBeforeBuilder() { return getEndBeforeFieldBuilder().getBuilder(); } - /** .tests.Cursor end_before = 9; */ - public com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder getEndBeforeOrBuilder() { if ((clauseCase_ == 9) && (endBeforeBuilder_ != null)) { return endBeforeBuilder_.getMessageOrBuilder(); } else { if (clauseCase_ == 9) { - return (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_; + return (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_; } - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } } - /** .tests.Cursor end_before = 9; */ + /** .google.cloud.conformance.firestore.v1.Cursor end_before = 9; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder> getEndBeforeFieldBuilder() { if (endBeforeBuilder_ == null) { if (!(clauseCase_ == 9)) { clause_ = - com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + .getDefaultInstance(); } endBeforeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Cursor, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder, - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder>( - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) clause_, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder>( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) clause_, getParentForChildren(), isClean()); clause_ = null; @@ -15994,34 +16542,37 @@ public Builder clearEndBefore() { return endBeforeBuilder_; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.Clause) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.Clause) } - // @@protoc_insertion_point(class_scope:tests.Clause) - private static final com.google.cloud.firestore.conformance.TestDefinition.Clause + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.Clause) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.Clause DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Clause(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.Clause(); } - public static com.google.cloud.firestore.conformance.TestDefinition.Clause + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Clause getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public Clause parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -16039,7 +16590,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.Clause + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Clause getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -16047,27 +16599,28 @@ public com.google.protobuf.Parser getParserForType() { public interface SelectOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.Select) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.Select) com.google.protobuf.MessageOrBuilder { - /** repeated .tests.FieldPath fields = 1; */ - java.util.List getFieldsList(); - /** repeated .tests.FieldPath fields = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index); - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + java.util.List + getFieldsList(); + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getFields(int index); + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ int getFieldsCount(); - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldsOrBuilderList(); - /** repeated .tests.FieldPath fields = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder( + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder( int index); } - /** Protobuf type {@code tests.Select} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Select} */ public static final class Select extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.Select) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.Select) SelectOrBuilder { private static final long serialVersionUID = 0L; // Use Select.newBuilder() to construct. @@ -16103,27 +16656,27 @@ private Select( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { - if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { fields_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath>(); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath>(); mutable_bitField0_ |= 0x00000001; } fields_.add( input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.parser(), extensionRegistry)); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -16131,7 +16684,7 @@ private Select( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (((mutable_bitField0_ & 0x00000001) != 0)) { fields_ = java.util.Collections.unmodifiableList(fields_); } this.unknownFields = unknownFields.build(); @@ -16140,48 +16693,51 @@ private Select( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Select_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Select_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Select_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Select_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Select.class, - com.google.cloud.firestore.conformance.TestDefinition.Select.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.Builder.class); } public static final int FIELDS_FIELD_NUMBER = 1; - private java.util.List fields_; - /** repeated .tests.FieldPath fields = 1; */ - public java.util.List + private java.util.List + fields_; + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public java.util.List getFieldsList() { return fields_; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldsOrBuilderList() { return fields_; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public int getFieldsCount() { return fields_.size(); } - /** repeated .tests.FieldPath fields = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index) { + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getFields(int index) { return fields_.get(index); } - /** repeated .tests.FieldPath fields = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(int index) { return fields_.get(index); } private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -16191,6 +16747,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { for (int i = 0; i < fields_.size(); i++) { output.writeMessage(1, fields_.get(i)); @@ -16198,6 +16755,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -16216,16 +16774,15 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Select)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Select)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.Select other = - (com.google.cloud.firestore.conformance.TestDefinition.Select) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.Select other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) obj; - boolean result = true; - result = result && getFieldsList().equals(other.getFieldsList()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!getFieldsList().equals(other.getFieldsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -16244,71 +16801,72 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseDelimitedFrom( - java.io.InputStream input) throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseDelimitedFrom( - java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select + parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -16316,6 +16874,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.Select parse PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -16325,10 +16884,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.Select prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Select prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -16339,27 +16899,29 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.Select} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Select} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.Select) - com.google.cloud.firestore.conformance.TestDefinition.SelectOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.Select) + com.google.cloud.conformance.firestore.v1.TestDefinition.SelectOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Select_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Select_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Select_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Select_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Select.class, - com.google.cloud.firestore.conformance.TestDefinition.Select.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Select.Builder.class); } - // Construct using com.google.cloud.firestore.conformance.TestDefinition.Select.newBuilder() + // Construct using + // com.google.cloud.conformance.firestore.v1.TestDefinition.Select.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -16375,6 +16937,7 @@ private void maybeForceBuilderInitialization() { } } + @java.lang.Override public Builder clear() { super.clear(); if (fieldsBuilder_ == null) { @@ -16386,30 +16949,34 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Select_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Select_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.Select + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Select getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Select.getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.Select build() { - com.google.cloud.firestore.conformance.TestDefinition.Select result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Select build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Select result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.Select buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.Select result = - new com.google.cloud.firestore.conformance.TestDefinition.Select(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Select buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Select result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.Select(this); int from_bitField0_ = bitField0_; if (fieldsBuilder_ == null) { - if (((bitField0_ & 0x00000001) == 0x00000001)) { + if (((bitField0_ & 0x00000001) != 0)) { fields_ = java.util.Collections.unmodifiableList(fields_); bitField0_ = (bitField0_ & ~0x00000001); } @@ -16421,47 +16988,55 @@ public com.google.cloud.firestore.conformance.TestDefinition.Select buildPartial return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Select) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Select) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Select) { + return mergeFrom((com.google.cloud.conformance.firestore.v1.TestDefinition.Select) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Select other) { + public Builder mergeFrom( + com.google.cloud.conformance.firestore.v1.TestDefinition.Select other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.Select.getDefaultInstance()) + == com.google.cloud.conformance.firestore.v1.TestDefinition.Select.getDefaultInstance()) return this; if (fieldsBuilder_ == null) { if (!other.fields_.isEmpty()) { @@ -16495,20 +17070,22 @@ public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.S return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.Select parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.Select parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.Select) + (com.google.cloud.conformance.firestore.v1.TestDefinition.Select) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -16521,26 +17098,26 @@ public Builder mergeFrom( private int bitField0_; - private java.util.List + private java.util.List fields_ = java.util.Collections.emptyList(); private void ensureFieldsIsMutable() { - if (!((bitField0_ & 0x00000001) == 0x00000001)) { + if (!((bitField0_ & 0x00000001) != 0)) { fields_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath>(fields_); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath>(fields_); bitField0_ |= 0x00000001; } } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> fieldsBuilder_; - /** repeated .tests.FieldPath fields = 1; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public java.util.List getFieldsList() { if (fieldsBuilder_ == null) { return java.util.Collections.unmodifiableList(fields_); @@ -16548,7 +17125,7 @@ private void ensureFieldsIsMutable() { return fieldsBuilder_.getMessageList(); } } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public int getFieldsCount() { if (fieldsBuilder_ == null) { return fields_.size(); @@ -16556,17 +17133,18 @@ public int getFieldsCount() { return fieldsBuilder_.getCount(); } } - /** repeated .tests.FieldPath fields = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getFields(int index) { + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getFields( + int index) { if (fieldsBuilder_ == null) { return fields_.get(index); } else { return fieldsBuilder_.getMessage(index); } } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public Builder setFields( - int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (fieldsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -16579,10 +17157,11 @@ public Builder setFields( } return this; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public Builder setFields( int index, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (fieldsBuilder_ == null) { ensureFieldsIsMutable(); fields_.set(index, builderForValue.build()); @@ -16592,9 +17171,9 @@ public Builder setFields( } return this; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public Builder addFields( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (fieldsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -16607,9 +17186,9 @@ public Builder addFields( } return this; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public Builder addFields( - int index, com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (fieldsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -16622,9 +17201,10 @@ public Builder addFields( } return this; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public Builder addFields( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (fieldsBuilder_ == null) { ensureFieldsIsMutable(); fields_.add(builderForValue.build()); @@ -16634,10 +17214,11 @@ public Builder addFields( } return this; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public Builder addFields( int index, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (fieldsBuilder_ == null) { ensureFieldsIsMutable(); fields_.add(index, builderForValue.build()); @@ -16647,10 +17228,10 @@ public Builder addFields( } return this; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public Builder addAllFields( java.lang.Iterable< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPath> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath> values) { if (fieldsBuilder_ == null) { ensureFieldsIsMutable(); @@ -16661,7 +17242,7 @@ public Builder addAllFields( } return this; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public Builder clearFields() { if (fieldsBuilder_ == null) { fields_ = java.util.Collections.emptyList(); @@ -16672,7 +17253,7 @@ public Builder clearFields() { } return this; } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public Builder removeFields(int index) { if (fieldsBuilder_ == null) { ensureFieldsIsMutable(); @@ -16683,13 +17264,13 @@ public Builder removeFields(int index) { } return this; } - /** repeated .tests.FieldPath fields = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder getFieldsBuilder(int index) { return getFieldsFieldBuilder().getBuilder(index); } - /** repeated .tests.FieldPath fields = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getFieldsOrBuilder(int index) { if (fieldsBuilder_ == null) { return fields_.get(index); @@ -16697,9 +17278,9 @@ public Builder removeFields(int index) { return fieldsBuilder_.getMessageOrBuilder(index); } } - /** repeated .tests.FieldPath fields = 1; */ + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldsOrBuilderList() { if (fieldsBuilder_ != null) { return fieldsBuilder_.getMessageOrBuilderList(); @@ -16707,77 +17288,78 @@ public Builder removeFields(int index) { return java.util.Collections.unmodifiableList(fields_); } } - /** repeated .tests.FieldPath fields = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder addFieldsBuilder() { return getFieldsFieldBuilder() .addBuilder( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath .getDefaultInstance()); } - /** repeated .tests.FieldPath fields = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder addFieldsBuilder(int index) { return getFieldsFieldBuilder() .addBuilder( index, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath .getDefaultInstance()); } - /** repeated .tests.FieldPath fields = 1; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.FieldPath fields = 1; */ + public java.util.List< + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder> getFieldsBuilderList() { return getFieldsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getFieldsFieldBuilder() { if (fieldsBuilder_ == null) { fieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>( - fields_, - ((bitField0_ & 0x00000001) == 0x00000001), - getParentForChildren(), - isClean()); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder>( + fields_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); fields_ = null; } return fieldsBuilder_; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.Select) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.Select) } - // @@protoc_insertion_point(class_scope:tests.Select) - private static final com.google.cloud.firestore.conformance.TestDefinition.Select + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.Select) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.Select DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Select(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.Select(); } - public static com.google.cloud.firestore.conformance.TestDefinition.Select + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Select getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser() { + @java.lang.Override public Select parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -16795,7 +17377,8 @@ public com.google.protobuf.Parser getParserForType() { public interface WhereOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.Where) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.Where) com.google.protobuf.MessageOrBuilder { - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ boolean hasPath(); - /** .tests.FieldPath path = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath(); - /** .tests.FieldPath path = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getPathOrBuilder(); + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getPath(); + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getPathOrBuilder(); /** string op = 2; */ java.lang.String getOp(); @@ -16823,10 +17406,10 @@ public interface WhereOrBuilder /** string json_value = 3; */ com.google.protobuf.ByteString getJsonValueBytes(); } - /** Protobuf type {@code tests.Where} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Where} */ public static final class Where extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.Where) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.Where) WhereOrBuilder { private static final long serialVersionUID = 0L; // Use Where.newBuilder() to construct. @@ -16863,23 +17446,16 @@ private Where( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder subBuilder = - null; + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + subBuilder = null; if (path_ != null) { subBuilder = path_.toBuilder(); } path_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom(path_); @@ -16902,6 +17478,13 @@ private Where( jsonValue_ = s; break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -16915,33 +17498,34 @@ private Where( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Where_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Where_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Where_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Where_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Where.class, - com.google.cloud.firestore.conformance.TestDefinition.Where.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.Builder.class); } public static final int PATH_FIELD_NUMBER = 1; - private com.google.cloud.firestore.conformance.TestDefinition.FieldPath path_; - /** .tests.FieldPath path = 1; */ + private com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath path_; + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public boolean hasPath() { return path_ != null; } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath() { + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getPath() { return path_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.getDefaultInstance() : path_; } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getPathOrBuilder() { return getPath(); } @@ -17002,6 +17586,7 @@ public com.google.protobuf.ByteString getJsonValueBytes() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -17011,6 +17596,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (path_ != null) { output.writeMessage(1, getPath()); @@ -17024,6 +17610,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -17048,21 +17635,20 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Where)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Where)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.Where other = - (com.google.cloud.firestore.conformance.TestDefinition.Where) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.Where other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) obj; - boolean result = true; - result = result && (hasPath() == other.hasPath()); + if (hasPath() != other.hasPath()) return false; if (hasPath()) { - result = result && getPath().equals(other.getPath()); + if (!getPath().equals(other.getPath())) return false; } - result = result && getOp().equals(other.getOp()); - result = result && getJsonValue().equals(other.getJsonValue()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!getOp().equals(other.getOp())) return false; + if (!getJsonValue().equals(other.getJsonValue())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -17085,71 +17671,71 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseDelimitedFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseDelimitedFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseDelimitedFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -17157,6 +17743,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.Where parseF PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -17166,10 +17753,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.Where prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Where prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -17180,27 +17768,28 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.Where} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Where} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.Where) - com.google.cloud.firestore.conformance.TestDefinition.WhereOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.Where) + com.google.cloud.conformance.firestore.v1.TestDefinition.WhereOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Where_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Where_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Where_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Where_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Where.class, - com.google.cloud.firestore.conformance.TestDefinition.Where.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Where.Builder.class); } - // Construct using com.google.cloud.firestore.conformance.TestDefinition.Where.newBuilder() + // Construct using com.google.cloud.conformance.firestore.v1.TestDefinition.Where.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -17214,6 +17803,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); if (pathBuilder_ == null) { @@ -17229,27 +17819,31 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Where_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Where_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.Where + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Where getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Where.getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.Where build() { - com.google.cloud.firestore.conformance.TestDefinition.Where result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Where build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Where result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.Where buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.Where result = - new com.google.cloud.firestore.conformance.TestDefinition.Where(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Where buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Where result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.Where(this); if (pathBuilder_ == null) { result.path_ = path_; } else { @@ -17261,47 +17855,55 @@ public com.google.cloud.firestore.conformance.TestDefinition.Where buildPartial( return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Where) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Where) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Where) { + return mergeFrom((com.google.cloud.conformance.firestore.v1.TestDefinition.Where) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Where other) { + public Builder mergeFrom( + com.google.cloud.conformance.firestore.v1.TestDefinition.Where other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.Where.getDefaultInstance()) + == com.google.cloud.conformance.firestore.v1.TestDefinition.Where.getDefaultInstance()) return this; if (other.hasPath()) { mergePath(other.getPath()); @@ -17319,20 +17921,22 @@ public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.W return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.Where parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.Where parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.Where) + (com.google.cloud.conformance.firestore.v1.TestDefinition.Where) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -17343,29 +17947,30 @@ public Builder mergeFrom( return this; } - private com.google.cloud.firestore.conformance.TestDefinition.FieldPath path_ = null; + private com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath path_; private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> pathBuilder_; - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public boolean hasPath() { return pathBuilder_ != null || path_ != null; } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath() { + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getPath() { if (pathBuilder_ == null) { return path_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath + .getDefaultInstance() : path_; } else { return pathBuilder_.getMessage(); } } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public Builder setPath( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (pathBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -17378,9 +17983,10 @@ public Builder setPath( return this; } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public Builder setPath( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (pathBuilder_ == null) { path_ = builderForValue.build(); onChanged(); @@ -17390,13 +17996,13 @@ public Builder setPath( return this; } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public Builder mergePath( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (pathBuilder_ == null) { if (path_ != null) { path_ = - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.newBuilder(path_) + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.newBuilder(path_) .mergeFrom(value) .buildPartial(); } else { @@ -17409,7 +18015,7 @@ public Builder mergePath( return this; } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public Builder clearPath() { if (pathBuilder_ == null) { path_ = null; @@ -17421,36 +18027,37 @@ public Builder clearPath() { return this; } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder getPathBuilder() { onChanged(); return getPathFieldBuilder().getBuilder(); } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getPathOrBuilder() { if (pathBuilder_ != null) { return pathBuilder_.getMessageOrBuilder(); } else { return path_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath + .getDefaultInstance() : path_; } } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getPathFieldBuilder() { if (pathBuilder_ == null) { pathBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>( + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder>( getPath(), getParentForChildren(), isClean()); path_ = null; } @@ -17565,33 +18172,37 @@ public Builder setJsonValueBytes(com.google.protobuf.ByteString value) { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.Where) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.Where) } - // @@protoc_insertion_point(class_scope:tests.Where) - private static final com.google.cloud.firestore.conformance.TestDefinition.Where + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.Where) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.Where DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Where(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.Where(); } - public static com.google.cloud.firestore.conformance.TestDefinition.Where getDefaultInstance() { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Where + getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public Where parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -17609,22 +18220,24 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.Where getDefaultInstanceForType() { + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Where + getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } public interface OrderByOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.OrderBy) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.OrderBy) com.google.protobuf.MessageOrBuilder { - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ boolean hasPath(); - /** .tests.FieldPath path = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath(); - /** .tests.FieldPath path = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder getPathOrBuilder(); + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getPath(); + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getPathOrBuilder(); /** * @@ -17647,10 +18260,10 @@ public interface OrderByOrBuilder */ com.google.protobuf.ByteString getDirectionBytes(); } - /** Protobuf type {@code tests.OrderBy} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.OrderBy} */ public static final class OrderBy extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.OrderBy) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.OrderBy) OrderByOrBuilder { private static final long serialVersionUID = 0L; // Use OrderBy.newBuilder() to construct. @@ -17686,23 +18299,16 @@ private OrderBy( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder subBuilder = - null; + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + subBuilder = null; if (path_ != null) { subBuilder = path_.toBuilder(); } path_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom(path_); @@ -17718,6 +18324,13 @@ private OrderBy( direction_ = s; break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -17731,33 +18344,34 @@ private OrderBy( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_OrderBy_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_OrderBy_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_OrderBy_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_OrderBy_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.class, - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.Builder.class); } public static final int PATH_FIELD_NUMBER = 1; - private com.google.cloud.firestore.conformance.TestDefinition.FieldPath path_; - /** .tests.FieldPath path = 1; */ + private com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath path_; + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public boolean hasPath() { return path_ != null; } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath() { + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getPath() { return path_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.getDefaultInstance() : path_; } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getPathOrBuilder() { return getPath(); } @@ -17807,6 +18421,7 @@ public com.google.protobuf.ByteString getDirectionBytes() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -17816,6 +18431,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (path_ != null) { output.writeMessage(1, getPath()); @@ -17826,6 +18442,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -17847,20 +18464,19 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.OrderBy)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.OrderBy other = - (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) obj; - boolean result = true; - result = result && (hasPath() == other.hasPath()); + if (hasPath() != other.hasPath()) return false; if (hasPath()) { - result = result && getPath().equals(other.getPath()); + if (!getPath().equals(other.getPath())) return false; } - result = result && getDirection().equals(other.getDirection()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!getDirection().equals(other.getDirection())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -17881,71 +18497,72 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseDelimitedFrom( - java.io.InputStream input) throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseDelimitedFrom( - java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy + parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -17953,6 +18570,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy pars PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -17962,10 +18580,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.OrderBy prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -17976,27 +18595,29 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.OrderBy} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.OrderBy} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.OrderBy) - com.google.cloud.firestore.conformance.TestDefinition.OrderByOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.OrderBy) + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderByOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_OrderBy_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_OrderBy_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_OrderBy_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_OrderBy_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.class, - com.google.cloud.firestore.conformance.TestDefinition.OrderBy.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.Builder.class); } - // Construct using com.google.cloud.firestore.conformance.TestDefinition.OrderBy.newBuilder() + // Construct using + // com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -18010,6 +18631,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); if (pathBuilder_ == null) { @@ -18023,27 +18645,32 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_OrderBy_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_OrderBy_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.OrderBy + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy + .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.OrderBy build() { - com.google.cloud.firestore.conformance.TestDefinition.OrderBy result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.OrderBy buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.OrderBy result = - new com.google.cloud.firestore.conformance.TestDefinition.OrderBy(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy(this); if (pathBuilder_ == null) { result.path_ = path_; } else { @@ -18054,38 +18681,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.OrderBy buildPartia return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.OrderBy) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.OrderBy) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) { + return mergeFrom( + (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) other); } else { super.mergeFrom(other); return this; @@ -18093,10 +18728,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.OrderBy other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.OrderBy.getDefaultInstance()) - return this; + == com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy + .getDefaultInstance()) return this; if (other.hasPath()) { mergePath(other.getPath()); } @@ -18109,20 +18744,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.OrderBy parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.OrderBy) + (com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -18133,29 +18770,30 @@ public Builder mergeFrom( return this; } - private com.google.cloud.firestore.conformance.TestDefinition.FieldPath path_ = null; + private com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath path_; private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> pathBuilder_; - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public boolean hasPath() { return pathBuilder_ != null || path_ != null; } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath getPath() { + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getPath() { if (pathBuilder_ == null) { return path_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath + .getDefaultInstance() : path_; } else { return pathBuilder_.getMessage(); } } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public Builder setPath( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (pathBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -18168,9 +18806,10 @@ public Builder setPath( return this; } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public Builder setPath( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder + builderForValue) { if (pathBuilder_ == null) { path_ = builderForValue.build(); onChanged(); @@ -18180,13 +18819,13 @@ public Builder setPath( return this; } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public Builder mergePath( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath value) { if (pathBuilder_ == null) { if (path_ != null) { path_ = - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.newBuilder(path_) + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.newBuilder(path_) .mergeFrom(value) .buildPartial(); } else { @@ -18199,7 +18838,7 @@ public Builder mergePath( return this; } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ public Builder clearPath() { if (pathBuilder_ == null) { path_ = null; @@ -18211,36 +18850,37 @@ public Builder clearPath() { return this; } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder getPathBuilder() { onChanged(); return getPathFieldBuilder().getBuilder(); } - /** .tests.FieldPath path = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder getPathOrBuilder() { if (pathBuilder_ != null) { return pathBuilder_.getMessageOrBuilder(); } else { return path_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath + .getDefaultInstance() : path_; } } - /** .tests.FieldPath path = 1; */ + /** .google.cloud.conformance.firestore.v1.FieldPath path = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder> getPathFieldBuilder() { if (pathBuilder_ == null) { pathBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.FieldPath, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder, - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder>( + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder>( getPath(), getParentForChildren(), isClean()); path_ = null; } @@ -18341,34 +18981,37 @@ public Builder setDirectionBytes(com.google.protobuf.ByteString value) { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.OrderBy) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.OrderBy) } - // @@protoc_insertion_point(class_scope:tests.OrderBy) - private static final com.google.cloud.firestore.conformance.TestDefinition.OrderBy + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.OrderBy) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.OrderBy(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy(); } - public static com.google.cloud.firestore.conformance.TestDefinition.OrderBy + public static com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public OrderBy parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -18386,7 +19029,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.OrderBy + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.OrderBy getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -18394,7 +19038,7 @@ public com.google.protobuf.Parser getParserForType() { public interface CursorOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.Cursor) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.Cursor) com.google.protobuf.MessageOrBuilder { /** @@ -18404,7 +19048,7 @@ public interface CursorOrBuilder * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ boolean hasDocSnapshot(); /** @@ -18414,9 +19058,9 @@ public interface CursorOrBuilder * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDocSnapshot(); + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot getDocSnapshot(); /** * * @@ -18424,9 +19068,9 @@ public interface CursorOrBuilder * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshotOrBuilder getDocSnapshotOrBuilder(); /** repeated string json_values = 2; */ @@ -18438,10 +19082,10 @@ public interface CursorOrBuilder /** repeated string json_values = 2; */ com.google.protobuf.ByteString getJsonValuesBytes(int index); } - /** Protobuf type {@code tests.Cursor} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Cursor} */ public static final class Cursor extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.Cursor) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.Cursor) CursorOrBuilder { private static final long serialVersionUID = 0L; // Use Cursor.newBuilder() to construct. @@ -18477,23 +19121,17 @@ private Cursor( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.Builder subBuilder = null; if (docSnapshot_ != null) { subBuilder = docSnapshot_.toBuilder(); } docSnapshot_ = input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot + .parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom(docSnapshot_); @@ -18505,13 +19143,20 @@ private Cursor( case 18: { java.lang.String s = input.readStringRequireUtf8(); - if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { jsonValues_ = new com.google.protobuf.LazyStringArrayList(); mutable_bitField0_ |= 0x00000002; } jsonValues_.add(s); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -18519,7 +19164,7 @@ private Cursor( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (((mutable_bitField0_ & 0x00000002) != 0)) { jsonValues_ = jsonValues_.getUnmodifiableView(); } this.unknownFields = unknownFields.build(); @@ -18528,22 +19173,23 @@ private Cursor( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Cursor_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Cursor_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Cursor_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Cursor_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.class, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder.class); } private int bitField0_; public static final int DOC_SNAPSHOT_FIELD_NUMBER = 1; - private com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot docSnapshot_; + private com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot docSnapshot_; /** * * @@ -18551,7 +19197,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ public boolean hasDocSnapshot() { return docSnapshot_ != null; @@ -18563,11 +19209,12 @@ public boolean hasDocSnapshot() { * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDocSnapshot() { + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot getDocSnapshot() { return docSnapshot_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.getDefaultInstance() + ? com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot + .getDefaultInstance() : docSnapshot_; } /** @@ -18577,9 +19224,9 @@ public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDocS * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshotOrBuilder getDocSnapshotOrBuilder() { return getDocSnapshot(); } @@ -18605,6 +19252,7 @@ public com.google.protobuf.ByteString getJsonValuesBytes(int index) { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -18614,6 +19262,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (docSnapshot_ != null) { output.writeMessage(1, getDocSnapshot()); @@ -18624,6 +19273,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -18650,20 +19300,19 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Cursor)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.Cursor other = - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) obj; - boolean result = true; - result = result && (hasDocSnapshot() == other.hasDocSnapshot()); + if (hasDocSnapshot() != other.hasDocSnapshot()) return false; if (hasDocSnapshot()) { - result = result && getDocSnapshot().equals(other.getDocSnapshot()); + if (!getDocSnapshot().equals(other.getDocSnapshot())) return false; } - result = result && getJsonValuesList().equals(other.getJsonValuesList()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!getJsonValuesList().equals(other.getJsonValuesList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -18686,71 +19335,72 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseDelimitedFrom( - java.io.InputStream input) throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseDelimitedFrom( - java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor + parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -18758,6 +19408,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.Cursor parse PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -18767,10 +19418,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.Cursor prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -18781,27 +19433,29 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.Cursor} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Cursor} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.Cursor) - com.google.cloud.firestore.conformance.TestDefinition.CursorOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.Cursor) + com.google.cloud.conformance.firestore.v1.TestDefinition.CursorOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Cursor_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Cursor_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Cursor_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Cursor_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Cursor.class, - com.google.cloud.firestore.conformance.TestDefinition.Cursor.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.Builder.class); } - // Construct using com.google.cloud.firestore.conformance.TestDefinition.Cursor.newBuilder() + // Construct using + // com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -18815,6 +19469,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); if (docSnapshotBuilder_ == null) { @@ -18828,27 +19483,31 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Cursor_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Cursor_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.Cursor + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.Cursor build() { - com.google.cloud.firestore.conformance.TestDefinition.Cursor result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.Cursor buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.Cursor result = - new com.google.cloud.firestore.conformance.TestDefinition.Cursor(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (docSnapshotBuilder_ == null) { @@ -18856,7 +19515,7 @@ public com.google.cloud.firestore.conformance.TestDefinition.Cursor buildPartial } else { result.docSnapshot_ = docSnapshotBuilder_.build(); } - if (((bitField0_ & 0x00000002) == 0x00000002)) { + if (((bitField0_ & 0x00000002) != 0)) { jsonValues_ = jsonValues_.getUnmodifiableView(); bitField0_ = (bitField0_ & ~0x00000002); } @@ -18866,47 +19525,55 @@ public com.google.cloud.firestore.conformance.TestDefinition.Cursor buildPartial return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Cursor) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Cursor) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) { + return mergeFrom((com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.Cursor other) { + public Builder mergeFrom( + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.Cursor.getDefaultInstance()) + == com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor.getDefaultInstance()) return this; if (other.hasDocSnapshot()) { mergeDocSnapshot(other.getDocSnapshot()); @@ -18926,20 +19593,22 @@ public Builder mergeFrom(com.google.cloud.firestore.conformance.TestDefinition.C return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.Cursor parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.Cursor) + (com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -18952,11 +19621,11 @@ public Builder mergeFrom( private int bitField0_; - private com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot docSnapshot_ = null; + private com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot docSnapshot_; private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot, - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder, - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshotOrBuilder> docSnapshotBuilder_; /** * @@ -18965,7 +19634,7 @@ public Builder mergeFrom( * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ public boolean hasDocSnapshot() { return docSnapshotBuilder_ != null || docSnapshot_ != null; @@ -18977,12 +19646,12 @@ public boolean hasDocSnapshot() { * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDocSnapshot() { + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot getDocSnapshot() { if (docSnapshotBuilder_ == null) { return docSnapshot_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + ? com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot .getDefaultInstance() : docSnapshot_; } else { @@ -18996,10 +19665,10 @@ public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot getDocS * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ public Builder setDocSnapshot( - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot value) { if (docSnapshotBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -19019,10 +19688,10 @@ public Builder setDocSnapshot( * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ public Builder setDocSnapshot( - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.Builder builderForValue) { if (docSnapshotBuilder_ == null) { docSnapshot_ = builderForValue.build(); @@ -19040,14 +19709,14 @@ public Builder setDocSnapshot( * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ public Builder mergeDocSnapshot( - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot value) { if (docSnapshotBuilder_ == null) { if (docSnapshot_ != null) { docSnapshot_ = - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.newBuilder( + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.newBuilder( docSnapshot_) .mergeFrom(value) .buildPartial(); @@ -19068,7 +19737,7 @@ public Builder mergeDocSnapshot( * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ public Builder clearDocSnapshot() { if (docSnapshotBuilder_ == null) { @@ -19088,9 +19757,9 @@ public Builder clearDocSnapshot() { * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.Builder getDocSnapshotBuilder() { onChanged(); @@ -19103,15 +19772,15 @@ public Builder clearDocSnapshot() { * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshotOrBuilder getDocSnapshotOrBuilder() { if (docSnapshotBuilder_ != null) { return docSnapshotBuilder_.getMessageOrBuilder(); } else { return docSnapshot_ == null - ? com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + ? com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot .getDefaultInstance() : docSnapshot_; } @@ -19123,19 +19792,19 @@ public Builder clearDocSnapshot() { * one of: * * - * .tests.DocSnapshot doc_snapshot = 1; + * .google.cloud.conformance.firestore.v1.DocSnapshot doc_snapshot = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot, - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder, - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshotOrBuilder> getDocSnapshotFieldBuilder() { if (docSnapshotBuilder_ == null) { docSnapshotBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot, - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder, - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder>( + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshotOrBuilder>( getDocSnapshot(), getParentForChildren(), isClean()); docSnapshot_ = null; } @@ -19146,7 +19815,7 @@ public Builder clearDocSnapshot() { com.google.protobuf.LazyStringArrayList.EMPTY; private void ensureJsonValuesIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { + if (!((bitField0_ & 0x00000002) != 0)) { jsonValues_ = new com.google.protobuf.LazyStringArrayList(jsonValues_); bitField0_ |= 0x00000002; } @@ -19213,34 +19882,37 @@ public Builder addJsonValuesBytes(com.google.protobuf.ByteString value) { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.Cursor) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.Cursor) } - // @@protoc_insertion_point(class_scope:tests.Cursor) - private static final com.google.cloud.firestore.conformance.TestDefinition.Cursor + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.Cursor) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Cursor(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor(); } - public static com.google.cloud.firestore.conformance.TestDefinition.Cursor + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public Cursor parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -19258,7 +19930,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.Cursor + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Cursor getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -19266,7 +19939,7 @@ public com.google.protobuf.Parser getParserForType() { public interface DocSnapshotOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.DocSnapshot) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.DocSnapshot) com.google.protobuf.MessageOrBuilder { /** string path = 1; */ @@ -19279,10 +19952,10 @@ public interface DocSnapshotOrBuilder /** string json_data = 2; */ com.google.protobuf.ByteString getJsonDataBytes(); } - /** Protobuf type {@code tests.DocSnapshot} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.DocSnapshot} */ public static final class DocSnapshot extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.DocSnapshot) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.DocSnapshot) DocSnapshotOrBuilder { private static final long serialVersionUID = 0L; // Use DocSnapshot.newBuilder() to construct. @@ -19319,13 +19992,6 @@ private DocSnapshot( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); @@ -19340,6 +20006,13 @@ private DocSnapshot( jsonData_ = s; break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -19353,17 +20026,18 @@ private DocSnapshot( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocSnapshot_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocSnapshot_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.class, - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.Builder.class); } public static final int PATH_FIELD_NUMBER = 1; @@ -19422,6 +20096,7 @@ public com.google.protobuf.ByteString getJsonDataBytes() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -19431,6 +20106,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getPathBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_); @@ -19441,6 +20117,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -19462,17 +20139,16 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot other = - (com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot) obj; - boolean result = true; - result = result && getPath().equals(other.getPath()); - result = result && getJsonData().equals(other.getJsonData()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!getPath().equals(other.getPath())) return false; + if (!getJsonData().equals(other.getJsonData())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -19491,59 +20167,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -19551,12 +20227,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -19564,6 +20240,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -19573,10 +20250,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -19587,28 +20265,29 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.DocSnapshot} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.DocSnapshot} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.DocSnapshot) - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshotOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.DocSnapshot) + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshotOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocSnapshot_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocSnapshot_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.class, - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -19622,6 +20301,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); path_ = ""; @@ -19631,67 +20311,79 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocSnapshot_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + return com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot build() { - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot result = + buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot result = - new com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot(this); result.path_ = path_; result.jsonData_ = jsonData_; onBuilt(); return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot) { + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot) { return mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot) other); + (com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot) other); } else { super.mergeFrom(other); return this; @@ -19699,9 +20391,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + == com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot .getDefaultInstance()) return this; if (!other.getPath().isEmpty()) { path_ = other.path_; @@ -19716,20 +20408,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot) + (com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -19848,34 +20542,37 @@ public Builder setJsonDataBytes(com.google.protobuf.ByteString value) { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.DocSnapshot) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.DocSnapshot) } - // @@protoc_insertion_point(class_scope:tests.DocSnapshot) - private static final com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.DocSnapshot) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot(); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public DocSnapshot parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -19893,7 +20590,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.DocSnapshot + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocSnapshot getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -19901,7 +20599,7 @@ public com.google.protobuf.Parser getParserForType() { public interface FieldPathOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.FieldPath) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.FieldPath) com.google.protobuf.MessageOrBuilder { /** repeated string field = 1; */ @@ -19913,10 +20611,10 @@ public interface FieldPathOrBuilder /** repeated string field = 1; */ com.google.protobuf.ByteString getFieldBytes(int index); } - /** Protobuf type {@code tests.FieldPath} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.FieldPath} */ public static final class FieldPath extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.FieldPath) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.FieldPath) FieldPathOrBuilder { private static final long serialVersionUID = 0L; // Use FieldPath.newBuilder() to construct. @@ -19952,23 +20650,23 @@ private FieldPath( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { java.lang.String s = input.readStringRequireUtf8(); - if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { field_ = new com.google.protobuf.LazyStringArrayList(); mutable_bitField0_ |= 0x00000001; } field_.add(s); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -19976,7 +20674,7 @@ private FieldPath( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (((mutable_bitField0_ & 0x00000001) != 0)) { field_ = field_.getUnmodifiableView(); } this.unknownFields = unknownFields.build(); @@ -19985,17 +20683,18 @@ private FieldPath( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_FieldPath_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_FieldPath_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_FieldPath_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_FieldPath_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.class, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder.class); } public static final int FIELD_FIELD_NUMBER = 1; @@ -20019,6 +20718,7 @@ public com.google.protobuf.ByteString getFieldBytes(int index) { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -20028,6 +20728,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { for (int i = 0; i < field_.size(); i++) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, field_.getRaw(i)); @@ -20035,6 +20736,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -20058,16 +20760,15 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.FieldPath)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.FieldPath other = - (com.google.cloud.firestore.conformance.TestDefinition.FieldPath) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath) obj; - boolean result = true; - result = result && getFieldList().equals(other.getFieldList()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!getFieldList().equals(other.getFieldList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -20086,59 +20787,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -20146,12 +20847,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath pa PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -20159,6 +20860,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath pa PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -20168,10 +20870,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -20182,28 +20885,29 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.FieldPath} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.FieldPath} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.FieldPath) - com.google.cloud.firestore.conformance.TestDefinition.FieldPathOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.FieldPath) + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPathOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_FieldPath_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_FieldPath_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_FieldPath_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_FieldPath_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.class, - com.google.cloud.firestore.conformance.TestDefinition.FieldPath.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.FieldPath.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -20217,6 +20921,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); field_ = com.google.protobuf.LazyStringArrayList.EMPTY; @@ -20224,29 +20929,34 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_FieldPath_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_FieldPath_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath + .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath build() { - com.google.cloud.firestore.conformance.TestDefinition.FieldPath result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.FieldPath result = - new com.google.cloud.firestore.conformance.TestDefinition.FieldPath(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath(this); int from_bitField0_ = bitField0_; - if (((bitField0_ & 0x00000001) == 0x00000001)) { + if (((bitField0_ & 0x00000001) != 0)) { field_ = field_.getUnmodifiableView(); bitField0_ = (bitField0_ & ~0x00000001); } @@ -20255,38 +20965,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.FieldPath buildPart return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.FieldPath) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.FieldPath) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath) { + return mergeFrom( + (com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath) other); } else { super.mergeFrom(other); return this; @@ -20294,10 +21012,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.FieldPath other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.FieldPath.getDefaultInstance()) - return this; + == com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath + .getDefaultInstance()) return this; if (!other.field_.isEmpty()) { if (field_.isEmpty()) { field_ = other.field_; @@ -20313,20 +21031,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.FieldPath parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.FieldPath) + (com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -20343,7 +21063,7 @@ public Builder mergeFrom( com.google.protobuf.LazyStringArrayList.EMPTY; private void ensureFieldIsMutable() { - if (!((bitField0_ & 0x00000001) == 0x00000001)) { + if (!((bitField0_ & 0x00000001) != 0)) { field_ = new com.google.protobuf.LazyStringArrayList(field_); bitField0_ |= 0x00000001; } @@ -20410,34 +21130,37 @@ public Builder addFieldBytes(com.google.protobuf.ByteString value) { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.FieldPath) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.FieldPath) } - // @@protoc_insertion_point(class_scope:tests.FieldPath) - private static final com.google.cloud.firestore.conformance.TestDefinition.FieldPath + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.FieldPath) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.FieldPath(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath(); } - public static com.google.cloud.firestore.conformance.TestDefinition.FieldPath + public static com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public FieldPath parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -20455,7 +21178,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.FieldPath + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.FieldPath getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -20463,7 +21187,7 @@ public com.google.protobuf.Parser getParserForType() { public interface ListenTestOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.ListenTest) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.ListenTest) com.google.protobuf.MessageOrBuilder { /** repeated .google.firestore.v1.ListenResponse responses = 1; */ @@ -20478,20 +21202,20 @@ public interface ListenTestOrBuilder /** repeated .google.firestore.v1.ListenResponse responses = 1; */ com.google.firestore.v1.ListenResponseOrBuilder getResponsesOrBuilder(int index); - /** repeated .tests.Snapshot snapshots = 2; */ - java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + java.util.List getSnapshotsList(); - /** repeated .tests.Snapshot snapshots = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.Snapshot getSnapshots(int index); - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot getSnapshots(int index); + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ int getSnapshotsCount(); - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder> getSnapshotsOrBuilderList(); - /** repeated .tests.Snapshot snapshots = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder getSnapshotsOrBuilder( - int index); + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder + getSnapshotsOrBuilder(int index); /** bool is_error = 3; */ boolean getIsError(); @@ -20511,11 +21235,11 @@ com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder getSnaps * or change the ID in the tests before running them. * * - * Protobuf type {@code tests.ListenTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.ListenTest} */ public static final class ListenTest extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.ListenTest) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.ListenTest) ListenTestOrBuilder { private static final long serialVersionUID = 0L; // Use ListenTest.newBuilder() to construct. @@ -20526,7 +21250,6 @@ private ListenTest(com.google.protobuf.GeneratedMessageV3.Builder builder) { private ListenTest() { responses_ = java.util.Collections.emptyList(); snapshots_ = java.util.Collections.emptyList(); - isError_ = false; } @java.lang.Override @@ -20553,16 +21276,9 @@ private ListenTest( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { - if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { responses_ = new java.util.ArrayList(); mutable_bitField0_ |= 0x00000001; } @@ -20573,15 +21289,15 @@ private ListenTest( } case 18: { - if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { snapshots_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.Snapshot>(); + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot>(); mutable_bitField0_ |= 0x00000002; } snapshots_.add( input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.parser(), extensionRegistry)); break; } @@ -20590,6 +21306,13 @@ private ListenTest( isError_ = input.readBool(); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -20597,10 +21320,10 @@ private ListenTest( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (((mutable_bitField0_ & 0x00000001) != 0)) { responses_ = java.util.Collections.unmodifiableList(responses_); } - if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (((mutable_bitField0_ & 0x00000002) != 0)) { snapshots_ = java.util.Collections.unmodifiableList(snapshots_); } this.unknownFields = unknownFields.build(); @@ -20609,17 +21332,18 @@ private ListenTest( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_ListenTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_ListenTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_ListenTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_ListenTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.class, - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.Builder.class); } private int bitField0_; @@ -20648,29 +21372,30 @@ public com.google.firestore.v1.ListenResponseOrBuilder getResponsesOrBuilder(int } public static final int SNAPSHOTS_FIELD_NUMBER = 2; - private java.util.List + private java.util.List snapshots_; - /** repeated .tests.Snapshot snapshots = 2; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public java.util.List getSnapshotsList() { return snapshots_; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder> getSnapshotsOrBuilderList() { return snapshots_; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public int getSnapshotsCount() { return snapshots_.size(); } - /** repeated .tests.Snapshot snapshots = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Snapshot getSnapshots(int index) { + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot getSnapshots( + int index) { return snapshots_.get(index); } - /** repeated .tests.Snapshot snapshots = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder getSnapshotsOrBuilder(int index) { return snapshots_.get(index); } @@ -20684,6 +21409,7 @@ public boolean getIsError() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -20693,6 +21419,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { for (int i = 0; i < responses_.size(); i++) { output.writeMessage(1, responses_.get(i)); @@ -20706,6 +21433,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -20730,18 +21458,17 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.ListenTest)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.ListenTest other = - (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) obj; - boolean result = true; - result = result && getResponsesList().equals(other.getResponsesList()); - result = result && getSnapshotsList().equals(other.getSnapshotsList()); - result = result && (getIsError() == other.getIsError()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!getResponsesList().equals(other.getResponsesList())) return false; + if (!getSnapshotsList().equals(other.getSnapshotsList())) return false; + if (getIsError() != other.getIsError()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -20766,59 +21493,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -20826,12 +21553,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest p PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -20839,6 +21566,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest p PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -20848,10 +21576,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.ListenTest prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -20877,29 +21606,30 @@ protected Builder newBuilderForType( * or change the ID in the tests before running them. * * - * Protobuf type {@code tests.ListenTest} + * Protobuf type {@code google.cloud.conformance.firestore.v1.ListenTest} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.ListenTest) - com.google.cloud.firestore.conformance.TestDefinition.ListenTestOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.ListenTest) + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTestOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_ListenTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_ListenTest_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_ListenTest_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_ListenTest_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.class, - com.google.cloud.firestore.conformance.TestDefinition.ListenTest.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.ListenTest.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -20916,6 +21646,7 @@ private void maybeForceBuilderInitialization() { } } + @java.lang.Override public Builder clear() { super.clear(); if (responsesBuilder_ == null) { @@ -20935,32 +21666,36 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_ListenTest_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_ListenTest_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.ListenTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.ListenTest + return com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.ListenTest build() { - com.google.cloud.firestore.conformance.TestDefinition.ListenTest result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.ListenTest buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.ListenTest result = - new com.google.cloud.firestore.conformance.TestDefinition.ListenTest(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (responsesBuilder_ == null) { - if (((bitField0_ & 0x00000001) == 0x00000001)) { + if (((bitField0_ & 0x00000001) != 0)) { responses_ = java.util.Collections.unmodifiableList(responses_); bitField0_ = (bitField0_ & ~0x00000001); } @@ -20969,7 +21704,7 @@ public com.google.cloud.firestore.conformance.TestDefinition.ListenTest buildPar result.responses_ = responsesBuilder_.build(); } if (snapshotsBuilder_ == null) { - if (((bitField0_ & 0x00000002) == 0x00000002)) { + if (((bitField0_ & 0x00000002) != 0)) { snapshots_ = java.util.Collections.unmodifiableList(snapshots_); bitField0_ = (bitField0_ & ~0x00000002); } @@ -20983,39 +21718,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.ListenTest buildPar return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.ListenTest) { + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) { return mergeFrom( - (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) other); + (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) other); } else { super.mergeFrom(other); return this; @@ -21023,9 +21765,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.ListenTest other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.ListenTest + == com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest .getDefaultInstance()) return this; if (responsesBuilder_ == null) { if (!other.responses_.isEmpty()) { @@ -21089,20 +21831,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.ListenTest parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.ListenTest) + (com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -21119,7 +21863,7 @@ public Builder mergeFrom( java.util.Collections.emptyList(); private void ensureResponsesIsMutable() { - if (!((bitField0_ & 0x00000001) == 0x00000001)) { + if (!((bitField0_ & 0x00000001) != 0)) { responses_ = new java.util.ArrayList(responses_); bitField0_ |= 0x00000001; } @@ -21314,35 +22058,32 @@ public com.google.firestore.v1.ListenResponse.Builder addResponsesBuilder(int in com.google.firestore.v1.ListenResponse, com.google.firestore.v1.ListenResponse.Builder, com.google.firestore.v1.ListenResponseOrBuilder>( - responses_, - ((bitField0_ & 0x00000001) == 0x00000001), - getParentForChildren(), - isClean()); + responses_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); responses_ = null; } return responsesBuilder_; } - private java.util.List + private java.util.List snapshots_ = java.util.Collections.emptyList(); private void ensureSnapshotsIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { + if (!((bitField0_ & 0x00000002) != 0)) { snapshots_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.Snapshot>(snapshots_); + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot>(snapshots_); bitField0_ |= 0x00000002; } } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Snapshot, - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot, + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder> snapshotsBuilder_; - /** repeated .tests.Snapshot snapshots = 2; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public java.util.List getSnapshotsList() { if (snapshotsBuilder_ == null) { return java.util.Collections.unmodifiableList(snapshots_); @@ -21350,7 +22091,7 @@ private void ensureSnapshotsIsMutable() { return snapshotsBuilder_.getMessageList(); } } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public int getSnapshotsCount() { if (snapshotsBuilder_ == null) { return snapshots_.size(); @@ -21358,8 +22099,8 @@ public int getSnapshotsCount() { return snapshotsBuilder_.getCount(); } } - /** repeated .tests.Snapshot snapshots = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Snapshot getSnapshots( + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot getSnapshots( int index) { if (snapshotsBuilder_ == null) { return snapshots_.get(index); @@ -21367,9 +22108,9 @@ public com.google.cloud.firestore.conformance.TestDefinition.Snapshot getSnapsho return snapshotsBuilder_.getMessage(index); } } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public Builder setSnapshots( - int index, com.google.cloud.firestore.conformance.TestDefinition.Snapshot value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot value) { if (snapshotsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -21382,10 +22123,11 @@ public Builder setSnapshots( } return this; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public Builder setSnapshots( int index, - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder + builderForValue) { if (snapshotsBuilder_ == null) { ensureSnapshotsIsMutable(); snapshots_.set(index, builderForValue.build()); @@ -21395,9 +22137,9 @@ public Builder setSnapshots( } return this; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public Builder addSnapshots( - com.google.cloud.firestore.conformance.TestDefinition.Snapshot value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot value) { if (snapshotsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -21410,9 +22152,9 @@ public Builder addSnapshots( } return this; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public Builder addSnapshots( - int index, com.google.cloud.firestore.conformance.TestDefinition.Snapshot value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot value) { if (snapshotsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -21425,9 +22167,10 @@ public Builder addSnapshots( } return this; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public Builder addSnapshots( - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder + builderForValue) { if (snapshotsBuilder_ == null) { ensureSnapshotsIsMutable(); snapshots_.add(builderForValue.build()); @@ -21437,10 +22180,11 @@ public Builder addSnapshots( } return this; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public Builder addSnapshots( int index, - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder + builderForValue) { if (snapshotsBuilder_ == null) { ensureSnapshotsIsMutable(); snapshots_.add(index, builderForValue.build()); @@ -21450,10 +22194,10 @@ public Builder addSnapshots( } return this; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public Builder addAllSnapshots( java.lang.Iterable< - ? extends com.google.cloud.firestore.conformance.TestDefinition.Snapshot> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot> values) { if (snapshotsBuilder_ == null) { ensureSnapshotsIsMutable(); @@ -21464,7 +22208,7 @@ public Builder addAllSnapshots( } return this; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public Builder clearSnapshots() { if (snapshotsBuilder_ == null) { snapshots_ = java.util.Collections.emptyList(); @@ -21475,7 +22219,7 @@ public Builder clearSnapshots() { } return this; } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public Builder removeSnapshots(int index) { if (snapshotsBuilder_ == null) { ensureSnapshotsIsMutable(); @@ -21486,13 +22230,13 @@ public Builder removeSnapshots(int index) { } return this; } - /** repeated .tests.Snapshot snapshots = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder getSnapshotsBuilder(int index) { return getSnapshotsFieldBuilder().getBuilder(index); } - /** repeated .tests.Snapshot snapshots = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder getSnapshotsOrBuilder(int index) { if (snapshotsBuilder_ == null) { return snapshots_.get(index); @@ -21500,9 +22244,9 @@ public Builder removeSnapshots(int index) { return snapshotsBuilder_.getMessageOrBuilder(index); } } - /** repeated .tests.Snapshot snapshots = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder> getSnapshotsOrBuilderList() { if (snapshotsBuilder_ != null) { return snapshotsBuilder_.getMessageOrBuilderList(); @@ -21510,44 +22254,42 @@ public Builder removeSnapshots(int index) { return java.util.Collections.unmodifiableList(snapshots_); } } - /** repeated .tests.Snapshot snapshots = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder addSnapshotsBuilder() { return getSnapshotsFieldBuilder() .addBuilder( - com.google.cloud.firestore.conformance.TestDefinition.Snapshot + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot .getDefaultInstance()); } - /** repeated .tests.Snapshot snapshots = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder addSnapshotsBuilder(int index) { return getSnapshotsFieldBuilder() .addBuilder( index, - com.google.cloud.firestore.conformance.TestDefinition.Snapshot + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot .getDefaultInstance()); } - /** repeated .tests.Snapshot snapshots = 2; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.Snapshot snapshots = 2; */ + public java.util.List< + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder> getSnapshotsBuilderList() { return getSnapshotsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Snapshot, - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot, + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder> getSnapshotsFieldBuilder() { if (snapshotsBuilder_ == null) { snapshotsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.Snapshot, - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder, - com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder>( - snapshots_, - ((bitField0_ & 0x00000002) == 0x00000002), - getParentForChildren(), - isClean()); + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot, + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder>( + snapshots_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); snapshots_ = null; } return snapshotsBuilder_; @@ -21573,34 +22315,37 @@ public Builder clearIsError() { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.ListenTest) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.ListenTest) } - // @@protoc_insertion_point(class_scope:tests.ListenTest) - private static final com.google.cloud.firestore.conformance.TestDefinition.ListenTest + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.ListenTest) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.ListenTest(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest(); } - public static com.google.cloud.firestore.conformance.TestDefinition.ListenTest + public static com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public ListenTest parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -21618,7 +22363,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.ListenTest + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.ListenTest getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -21626,7 +22372,7 @@ public com.google.protobuf.Parser getParserForType() { public interface SnapshotOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.Snapshot) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.Snapshot) com.google.protobuf.MessageOrBuilder { /** repeated .google.firestore.v1.Document docs = 1; */ @@ -21640,19 +22386,19 @@ public interface SnapshotOrBuilder /** repeated .google.firestore.v1.Document docs = 1; */ com.google.firestore.v1.DocumentOrBuilder getDocsOrBuilder(int index); - /** repeated .tests.DocChange changes = 2; */ - java.util.List + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + java.util.List getChangesList(); - /** repeated .tests.DocChange changes = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.DocChange getChanges(int index); - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange getChanges(int index); + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ int getChangesCount(); - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder> getChangesOrBuilderList(); - /** repeated .tests.DocChange changes = 2; */ - com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder getChangesOrBuilder( + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder getChangesOrBuilder( int index); /** .google.protobuf.Timestamp read_time = 3; */ @@ -21662,10 +22408,10 @@ com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder getChan /** .google.protobuf.Timestamp read_time = 3; */ com.google.protobuf.TimestampOrBuilder getReadTimeOrBuilder(); } - /** Protobuf type {@code tests.Snapshot} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Snapshot} */ public static final class Snapshot extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.Snapshot) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.Snapshot) SnapshotOrBuilder { private static final long serialVersionUID = 0L; // Use Snapshot.newBuilder() to construct. @@ -21702,16 +22448,9 @@ private Snapshot( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 10: { - if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { docs_ = new java.util.ArrayList(); mutable_bitField0_ |= 0x00000001; } @@ -21722,15 +22461,15 @@ private Snapshot( } case 18: { - if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { changes_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.DocChange>(); + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange>(); mutable_bitField0_ |= 0x00000002; } changes_.add( input.readMessage( - com.google.cloud.firestore.conformance.TestDefinition.DocChange.parser(), + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.parser(), extensionRegistry)); break; } @@ -21747,6 +22486,13 @@ private Snapshot( readTime_ = subBuilder.buildPartial(); } + break; + } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } break; } } @@ -21756,10 +22502,10 @@ private Snapshot( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + if (((mutable_bitField0_ & 0x00000001) != 0)) { docs_ = java.util.Collections.unmodifiableList(docs_); } - if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (((mutable_bitField0_ & 0x00000002) != 0)) { changes_ = java.util.Collections.unmodifiableList(changes_); } this.unknownFields = unknownFields.build(); @@ -21768,17 +22514,18 @@ private Snapshot( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Snapshot_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Snapshot_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Snapshot_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Snapshot_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.class, - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder.class); } private int bitField0_; @@ -21807,29 +22554,30 @@ public com.google.firestore.v1.DocumentOrBuilder getDocsOrBuilder(int index) { } public static final int CHANGES_FIELD_NUMBER = 2; - private java.util.List + private java.util.List changes_; - /** repeated .tests.DocChange changes = 2; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public java.util.List getChangesList() { return changes_; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder> getChangesOrBuilderList() { return changes_; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public int getChangesCount() { return changes_.size(); } - /** repeated .tests.DocChange changes = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocChange getChanges(int index) { + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange getChanges( + int index) { return changes_.get(index); } - /** repeated .tests.DocChange changes = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder getChangesOrBuilder(int index) { return changes_.get(index); } @@ -21851,6 +22599,7 @@ public com.google.protobuf.TimestampOrBuilder getReadTimeOrBuilder() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -21860,6 +22609,7 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { for (int i = 0; i < docs_.size(); i++) { output.writeMessage(1, docs_.get(i)); @@ -21873,6 +22623,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -21897,21 +22648,20 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.Snapshot)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.Snapshot other = - (com.google.cloud.firestore.conformance.TestDefinition.Snapshot) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot) obj; - boolean result = true; - result = result && getDocsList().equals(other.getDocsList()); - result = result && getChangesList().equals(other.getChangesList()); - result = result && (hasReadTime() == other.hasReadTime()); + if (!getDocsList().equals(other.getDocsList())) return false; + if (!getChangesList().equals(other.getChangesList())) return false; + if (hasReadTime() != other.hasReadTime()) return false; if (hasReadTime()) { - result = result && getReadTime().equals(other.getReadTime()); + if (!getReadTime().equals(other.getReadTime())) return false; } - result = result && unknownFields.equals(other.unknownFields); - return result; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -21938,71 +22688,72 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseDelimitedFrom( - java.io.InputStream input) throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseDelimitedFrom( - java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot + parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -22010,6 +22761,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot par PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -22019,10 +22771,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.Snapshot prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -22033,27 +22786,29 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.Snapshot} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.Snapshot} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.Snapshot) - com.google.cloud.firestore.conformance.TestDefinition.SnapshotOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.Snapshot) + com.google.cloud.conformance.firestore.v1.TestDefinition.SnapshotOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Snapshot_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Snapshot_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Snapshot_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Snapshot_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.class, - com.google.cloud.firestore.conformance.TestDefinition.Snapshot.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.Builder.class); } - // Construct using com.google.cloud.firestore.conformance.TestDefinition.Snapshot.newBuilder() + // Construct using + // com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -22070,6 +22825,7 @@ private void maybeForceBuilderInitialization() { } } + @java.lang.Override public Builder clear() { super.clear(); if (docsBuilder_ == null) { @@ -22093,31 +22849,36 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_Snapshot_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_Snapshot_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.Snapshot + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.Snapshot.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot + .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.Snapshot build() { - com.google.cloud.firestore.conformance.TestDefinition.Snapshot result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.Snapshot buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.Snapshot result = - new com.google.cloud.firestore.conformance.TestDefinition.Snapshot(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (docsBuilder_ == null) { - if (((bitField0_ & 0x00000001) == 0x00000001)) { + if (((bitField0_ & 0x00000001) != 0)) { docs_ = java.util.Collections.unmodifiableList(docs_); bitField0_ = (bitField0_ & ~0x00000001); } @@ -22126,7 +22887,7 @@ public com.google.cloud.firestore.conformance.TestDefinition.Snapshot buildParti result.docs_ = docsBuilder_.build(); } if (changesBuilder_ == null) { - if (((bitField0_ & 0x00000002) == 0x00000002)) { + if (((bitField0_ & 0x00000002) != 0)) { changes_ = java.util.Collections.unmodifiableList(changes_); bitField0_ = (bitField0_ & ~0x00000002); } @@ -22144,38 +22905,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.Snapshot buildParti return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.Snapshot) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.Snapshot) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot) { + return mergeFrom( + (com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot) other); } else { super.mergeFrom(other); return this; @@ -22183,10 +22952,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.Snapshot other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.Snapshot.getDefaultInstance()) - return this; + == com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot + .getDefaultInstance()) return this; if (docsBuilder_ == null) { if (!other.docs_.isEmpty()) { if (docs_.isEmpty()) { @@ -22249,20 +23018,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.Snapshot parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.Snapshot) + (com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -22279,7 +23050,7 @@ public Builder mergeFrom( java.util.Collections.emptyList(); private void ensureDocsIsMutable() { - if (!((bitField0_ & 0x00000001) == 0x00000001)) { + if (!((bitField0_ & 0x00000001) != 0)) { docs_ = new java.util.ArrayList(docs_); bitField0_ |= 0x00000001; } @@ -22471,35 +23242,32 @@ public java.util.List getDocsBuilderLi com.google.firestore.v1.Document, com.google.firestore.v1.Document.Builder, com.google.firestore.v1.DocumentOrBuilder>( - docs_, - ((bitField0_ & 0x00000001) == 0x00000001), - getParentForChildren(), - isClean()); + docs_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); docs_ = null; } return docsBuilder_; } - private java.util.List + private java.util.List changes_ = java.util.Collections.emptyList(); private void ensureChangesIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { + if (!((bitField0_ & 0x00000002) != 0)) { changes_ = new java.util.ArrayList< - com.google.cloud.firestore.conformance.TestDefinition.DocChange>(changes_); + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange>(changes_); bitField0_ |= 0x00000002; } } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.DocChange, - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder, - com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder> changesBuilder_; - /** repeated .tests.DocChange changes = 2; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public java.util.List getChangesList() { if (changesBuilder_ == null) { return java.util.Collections.unmodifiableList(changes_); @@ -22507,7 +23275,7 @@ private void ensureChangesIsMutable() { return changesBuilder_.getMessageList(); } } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public int getChangesCount() { if (changesBuilder_ == null) { return changes_.size(); @@ -22515,17 +23283,18 @@ public int getChangesCount() { return changesBuilder_.getCount(); } } - /** repeated .tests.DocChange changes = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocChange getChanges(int index) { + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange getChanges( + int index) { if (changesBuilder_ == null) { return changes_.get(index); } else { return changesBuilder_.getMessage(index); } } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public Builder setChanges( - int index, com.google.cloud.firestore.conformance.TestDefinition.DocChange value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange value) { if (changesBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -22538,10 +23307,11 @@ public Builder setChanges( } return this; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public Builder setChanges( int index, - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder + builderForValue) { if (changesBuilder_ == null) { ensureChangesIsMutable(); changes_.set(index, builderForValue.build()); @@ -22551,9 +23321,9 @@ public Builder setChanges( } return this; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public Builder addChanges( - com.google.cloud.firestore.conformance.TestDefinition.DocChange value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange value) { if (changesBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -22566,9 +23336,9 @@ public Builder addChanges( } return this; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public Builder addChanges( - int index, com.google.cloud.firestore.conformance.TestDefinition.DocChange value) { + int index, com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange value) { if (changesBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -22581,9 +23351,10 @@ public Builder addChanges( } return this; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public Builder addChanges( - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder + builderForValue) { if (changesBuilder_ == null) { ensureChangesIsMutable(); changes_.add(builderForValue.build()); @@ -22593,10 +23364,11 @@ public Builder addChanges( } return this; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public Builder addChanges( int index, - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder builderForValue) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder + builderForValue) { if (changesBuilder_ == null) { ensureChangesIsMutable(); changes_.add(index, builderForValue.build()); @@ -22606,10 +23378,10 @@ public Builder addChanges( } return this; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public Builder addAllChanges( java.lang.Iterable< - ? extends com.google.cloud.firestore.conformance.TestDefinition.DocChange> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange> values) { if (changesBuilder_ == null) { ensureChangesIsMutable(); @@ -22620,7 +23392,7 @@ public Builder addAllChanges( } return this; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public Builder clearChanges() { if (changesBuilder_ == null) { changes_ = java.util.Collections.emptyList(); @@ -22631,7 +23403,7 @@ public Builder clearChanges() { } return this; } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public Builder removeChanges(int index) { if (changesBuilder_ == null) { ensureChangesIsMutable(); @@ -22642,13 +23414,13 @@ public Builder removeChanges(int index) { } return this; } - /** repeated .tests.DocChange changes = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder getChangesBuilder(int index) { return getChangesFieldBuilder().getBuilder(index); } - /** repeated .tests.DocChange changes = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder getChangesOrBuilder(int index) { if (changesBuilder_ == null) { return changes_.get(index); @@ -22656,9 +23428,9 @@ public Builder removeChanges(int index) { return changesBuilder_.getMessageOrBuilder(index); } } - /** repeated .tests.DocChange changes = 2; */ + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ public java.util.List< - ? extends com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder> + ? extends com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder> getChangesOrBuilderList() { if (changesBuilder_ != null) { return changesBuilder_.getMessageOrBuilderList(); @@ -22666,50 +23438,48 @@ public Builder removeChanges(int index) { return java.util.Collections.unmodifiableList(changes_); } } - /** repeated .tests.DocChange changes = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder addChangesBuilder() { return getChangesFieldBuilder() .addBuilder( - com.google.cloud.firestore.conformance.TestDefinition.DocChange + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange .getDefaultInstance()); } - /** repeated .tests.DocChange changes = 2; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder addChangesBuilder(int index) { return getChangesFieldBuilder() .addBuilder( index, - com.google.cloud.firestore.conformance.TestDefinition.DocChange + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange .getDefaultInstance()); } - /** repeated .tests.DocChange changes = 2; */ - public java.util.List + /** repeated .google.cloud.conformance.firestore.v1.DocChange changes = 2; */ + public java.util.List< + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder> getChangesBuilderList() { return getChangesFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.DocChange, - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder, - com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder> + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder> getChangesFieldBuilder() { if (changesBuilder_ == null) { changesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - com.google.cloud.firestore.conformance.TestDefinition.DocChange, - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder, - com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder>( - changes_, - ((bitField0_ & 0x00000002) == 0x00000002), - getParentForChildren(), - isClean()); + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder>( + changes_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); changes_ = null; } return changesBuilder_; } - private com.google.protobuf.Timestamp readTime_ = null; + private com.google.protobuf.Timestamp readTime_; private com.google.protobuf.SingleFieldBuilderV3< com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, @@ -22812,34 +23582,37 @@ public com.google.protobuf.TimestampOrBuilder getReadTimeOrBuilder() { return readTimeBuilder_; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.Snapshot) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.Snapshot) } - // @@protoc_insertion_point(class_scope:tests.Snapshot) - private static final com.google.cloud.firestore.conformance.TestDefinition.Snapshot + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.Snapshot) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.Snapshot(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot(); } - public static com.google.cloud.firestore.conformance.TestDefinition.Snapshot + public static com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public Snapshot parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -22857,7 +23630,8 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.Snapshot + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.Snapshot getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -22865,13 +23639,13 @@ public com.google.protobuf.Parser getParserForType() { public interface DocChangeOrBuilder extends - // @@protoc_insertion_point(interface_extends:tests.DocChange) + // @@protoc_insertion_point(interface_extends:google.cloud.conformance.firestore.v1.DocChange) com.google.protobuf.MessageOrBuilder { - /** .tests.DocChange.Kind kind = 1; */ + /** .google.cloud.conformance.firestore.v1.DocChange.Kind kind = 1; */ int getKindValue(); - /** .tests.DocChange.Kind kind = 1; */ - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind getKind(); + /** .google.cloud.conformance.firestore.v1.DocChange.Kind kind = 1; */ + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind getKind(); /** .google.firestore.v1.Document doc = 2; */ boolean hasDoc(); @@ -22886,10 +23660,10 @@ public interface DocChangeOrBuilder /** int32 new_index = 4; */ int getNewIndex(); } - /** Protobuf type {@code tests.DocChange} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.DocChange} */ public static final class DocChange extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:tests.DocChange) + // @@protoc_insertion_point(message_implements:google.cloud.conformance.firestore.v1.DocChange) DocChangeOrBuilder { private static final long serialVersionUID = 0L; // Use DocChange.newBuilder() to construct. @@ -22899,8 +23673,6 @@ private DocChange(com.google.protobuf.GeneratedMessageV3.Builder builder) { private DocChange() { kind_ = 0; - oldIndex_ = 0; - newIndex_ = 0; } @java.lang.Override @@ -22927,13 +23699,6 @@ private DocChange( case 0: done = true; break; - default: - { - if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } case 8: { int rawValue = input.readEnum(); @@ -22966,6 +23731,13 @@ private DocChange( newIndex_ = input.readInt32(); break; } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -22979,20 +23751,21 @@ private DocChange( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocChange_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocChange_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocChange_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocChange_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.DocChange.class, - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder.class); } - /** Protobuf enum {@code tests.DocChange.Kind} */ + /** Protobuf enum {@code google.cloud.conformance.firestore.v1.DocChange.Kind} */ public enum Kind implements com.google.protobuf.ProtocolMessageEnum { /** KIND_UNSPECIFIED = 0; */ KIND_UNSPECIFIED(0), @@ -23063,7 +23836,7 @@ public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition.DocChange.getDescriptor() + return com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.getDescriptor() .getEnumTypes() .get(0); } @@ -23086,21 +23859,22 @@ private Kind(int value) { this.value = value; } - // @@protoc_insertion_point(enum_scope:tests.DocChange.Kind) + // @@protoc_insertion_point(enum_scope:google.cloud.conformance.firestore.v1.DocChange.Kind) } public static final int KIND_FIELD_NUMBER = 1; private int kind_; - /** .tests.DocChange.Kind kind = 1; */ + /** .google.cloud.conformance.firestore.v1.DocChange.Kind kind = 1; */ public int getKindValue() { return kind_; } - /** .tests.DocChange.Kind kind = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind getKind() { - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind result = - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.forNumber(kind_); + /** .google.cloud.conformance.firestore.v1.DocChange.Kind kind = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind getKind() { + @SuppressWarnings("deprecation") + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind result = + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind.valueOf(kind_); return result == null - ? com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.UNRECOGNIZED + ? com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind.UNRECOGNIZED : result; } @@ -23135,6 +23909,7 @@ public int getNewIndex() { private byte memoizedIsInitialized = -1; + @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -23144,9 +23919,11 @@ public final boolean isInitialized() { return true; } + @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (kind_ - != com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.KIND_UNSPECIFIED + != com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind + .KIND_UNSPECIFIED .getNumber()) { output.writeEnum(1, kind_); } @@ -23162,13 +23939,15 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io unknownFields.writeTo(output); } + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (kind_ - != com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.KIND_UNSPECIFIED + != com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind + .KIND_UNSPECIFIED .getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, kind_); } @@ -23191,22 +23970,21 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.cloud.firestore.conformance.TestDefinition.DocChange)) { + if (!(obj instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange)) { return super.equals(obj); } - com.google.cloud.firestore.conformance.TestDefinition.DocChange other = - (com.google.cloud.firestore.conformance.TestDefinition.DocChange) obj; + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange other = + (com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange) obj; - boolean result = true; - result = result && kind_ == other.kind_; - result = result && (hasDoc() == other.hasDoc()); + if (kind_ != other.kind_) return false; + if (hasDoc() != other.hasDoc()) return false; if (hasDoc()) { - result = result && getDoc().equals(other.getDoc()); + if (!getDoc().equals(other.getDoc())) return false; } - result = result && (getOldIndex() == other.getOldIndex()); - result = result && (getNewIndex() == other.getNewIndex()); - result = result && unknownFields.equals(other.unknownFields); - return result; + if (getOldIndex() != other.getOldIndex()) return false; + if (getNewIndex() != other.getNewIndex()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; } @java.lang.Override @@ -23231,59 +24009,59 @@ public int hashCode() { return hash; } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -23291,12 +24069,12 @@ public static com.google.cloud.firestore.conformance.TestDefinition.DocChange pa PARSER, input, extensionRegistry); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange parseFrom( + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -23304,6 +24082,7 @@ public static com.google.cloud.firestore.conformance.TestDefinition.DocChange pa PARSER, input, extensionRegistry); } + @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } @@ -23313,10 +24092,11 @@ public static Builder newBuilder() { } public static Builder newBuilder( - com.google.cloud.firestore.conformance.TestDefinition.DocChange prototype) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } + @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @@ -23327,28 +24107,29 @@ protected Builder newBuilderForType( Builder builder = new Builder(parent); return builder; } - /** Protobuf type {@code tests.DocChange} */ + /** Protobuf type {@code google.cloud.conformance.firestore.v1.DocChange} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:tests.DocChange) - com.google.cloud.firestore.conformance.TestDefinition.DocChangeOrBuilder { + // @@protoc_insertion_point(builder_implements:google.cloud.conformance.firestore.v1.DocChange) + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChangeOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocChange_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocChange_descriptor; } + @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocChange_fieldAccessorTable + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocChange_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.cloud.firestore.conformance.TestDefinition.DocChange.class, - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Builder.class); + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.class, + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Builder.class); } // Construct using - // com.google.cloud.firestore.conformance.TestDefinition.DocChange.newBuilder() + // com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -23362,6 +24143,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } + @java.lang.Override public Builder clear() { super.clear(); kind_ = 0; @@ -23379,27 +24161,32 @@ public Builder clear() { return this; } + @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.firestore.conformance.TestDefinition - .internal_static_tests_DocChange_descriptor; + return com.google.cloud.conformance.firestore.v1.TestDefinition + .internal_static_google_cloud_conformance_firestore_v1_DocChange_descriptor; } - public com.google.cloud.firestore.conformance.TestDefinition.DocChange + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange getDefaultInstanceForType() { - return com.google.cloud.firestore.conformance.TestDefinition.DocChange.getDefaultInstance(); + return com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange + .getDefaultInstance(); } - public com.google.cloud.firestore.conformance.TestDefinition.DocChange build() { - com.google.cloud.firestore.conformance.TestDefinition.DocChange result = buildPartial(); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange build() { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - public com.google.cloud.firestore.conformance.TestDefinition.DocChange buildPartial() { - com.google.cloud.firestore.conformance.TestDefinition.DocChange result = - new com.google.cloud.firestore.conformance.TestDefinition.DocChange(this); + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange buildPartial() { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange result = + new com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange(this); result.kind_ = kind_; if (docBuilder_ == null) { result.doc_ = doc_; @@ -23412,38 +24199,46 @@ public com.google.cloud.firestore.conformance.TestDefinition.DocChange buildPart return result; } + @java.lang.Override public Builder clone() { - return (Builder) super.clone(); + return super.clone(); } + @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.setField(field, value); + return super.setField(field, value); } + @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); + return super.clearField(field); } + @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); + return super.clearOneof(oneof); } + @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return (Builder) super.setRepeatedField(field, index, value); + return super.setRepeatedField(field, index, value); } + @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return (Builder) super.addRepeatedField(field, value); + return super.addRepeatedField(field, value); } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.cloud.firestore.conformance.TestDefinition.DocChange) { - return mergeFrom((com.google.cloud.firestore.conformance.TestDefinition.DocChange) other); + if (other instanceof com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange) { + return mergeFrom( + (com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange) other); } else { super.mergeFrom(other); return this; @@ -23451,10 +24246,10 @@ public Builder mergeFrom(com.google.protobuf.Message other) { } public Builder mergeFrom( - com.google.cloud.firestore.conformance.TestDefinition.DocChange other) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange other) { if (other - == com.google.cloud.firestore.conformance.TestDefinition.DocChange.getDefaultInstance()) - return this; + == com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange + .getDefaultInstance()) return this; if (other.kind_ != 0) { setKindValue(other.getKindValue()); } @@ -23472,20 +24267,22 @@ public Builder mergeFrom( return this; } + @java.lang.Override public final boolean isInitialized() { return true; } + @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.cloud.firestore.conformance.TestDefinition.DocChange parsedMessage = null; + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = - (com.google.cloud.firestore.conformance.TestDefinition.DocChange) + (com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { @@ -23497,27 +24294,28 @@ public Builder mergeFrom( } private int kind_ = 0; - /** .tests.DocChange.Kind kind = 1; */ + /** .google.cloud.conformance.firestore.v1.DocChange.Kind kind = 1; */ public int getKindValue() { return kind_; } - /** .tests.DocChange.Kind kind = 1; */ + /** .google.cloud.conformance.firestore.v1.DocChange.Kind kind = 1; */ public Builder setKindValue(int value) { kind_ = value; onChanged(); return this; } - /** .tests.DocChange.Kind kind = 1; */ - public com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind getKind() { - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind result = - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.forNumber(kind_); + /** .google.cloud.conformance.firestore.v1.DocChange.Kind kind = 1; */ + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind getKind() { + @SuppressWarnings("deprecation") + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind result = + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind.valueOf(kind_); return result == null - ? com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind.UNRECOGNIZED + ? com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind.UNRECOGNIZED : result; } - /** .tests.DocChange.Kind kind = 1; */ + /** .google.cloud.conformance.firestore.v1.DocChange.Kind kind = 1; */ public Builder setKind( - com.google.cloud.firestore.conformance.TestDefinition.DocChange.Kind value) { + com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange.Kind value) { if (value == null) { throw new NullPointerException(); } @@ -23526,7 +24324,7 @@ public Builder setKind( onChanged(); return this; } - /** .tests.DocChange.Kind kind = 1; */ + /** .google.cloud.conformance.firestore.v1.DocChange.Kind kind = 1; */ public Builder clearKind() { kind_ = 0; @@ -23534,7 +24332,7 @@ public Builder clearKind() { return this; } - private com.google.firestore.v1.Document doc_ = null; + private com.google.firestore.v1.Document doc_; private com.google.protobuf.SingleFieldBuilderV3< com.google.firestore.v1.Document, com.google.firestore.v1.Document.Builder, @@ -23677,34 +24475,37 @@ public Builder clearNewIndex() { return this; } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFieldsProto3(unknownFields); + return super.setUnknownFields(unknownFields); } + @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:tests.DocChange) + // @@protoc_insertion_point(builder_scope:google.cloud.conformance.firestore.v1.DocChange) } - // @@protoc_insertion_point(class_scope:tests.DocChange) - private static final com.google.cloud.firestore.conformance.TestDefinition.DocChange + // @@protoc_insertion_point(class_scope:google.cloud.conformance.firestore.v1.DocChange) + private static final com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.cloud.firestore.conformance.TestDefinition.DocChange(); + DEFAULT_INSTANCE = new com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange(); } - public static com.google.cloud.firestore.conformance.TestDefinition.DocChange + public static com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override public DocChange parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -23722,92 +24523,93 @@ public com.google.protobuf.Parser getParserForType() { return PARSER; } - public com.google.cloud.firestore.conformance.TestDefinition.DocChange + @java.lang.Override + public com.google.cloud.conformance.firestore.v1.TestDefinition.DocChange getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_TestSuite_descriptor; + internal_static_google_cloud_conformance_firestore_v1_TestSuite_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_TestSuite_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_TestSuite_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_Test_descriptor; + internal_static_google_cloud_conformance_firestore_v1_Test_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_Test_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_Test_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_GetTest_descriptor; + internal_static_google_cloud_conformance_firestore_v1_GetTest_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_GetTest_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_GetTest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_CreateTest_descriptor; + internal_static_google_cloud_conformance_firestore_v1_CreateTest_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_CreateTest_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_CreateTest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_SetTest_descriptor; + internal_static_google_cloud_conformance_firestore_v1_SetTest_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_SetTest_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_SetTest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_UpdateTest_descriptor; + internal_static_google_cloud_conformance_firestore_v1_UpdateTest_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_UpdateTest_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_UpdateTest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_UpdatePathsTest_descriptor; + internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_UpdatePathsTest_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_DeleteTest_descriptor; + internal_static_google_cloud_conformance_firestore_v1_DeleteTest_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_DeleteTest_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_DeleteTest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_SetOption_descriptor; + internal_static_google_cloud_conformance_firestore_v1_SetOption_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_SetOption_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_SetOption_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_QueryTest_descriptor; + internal_static_google_cloud_conformance_firestore_v1_QueryTest_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_QueryTest_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_QueryTest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_Clause_descriptor; + internal_static_google_cloud_conformance_firestore_v1_Clause_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_Clause_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_Clause_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_Select_descriptor; + internal_static_google_cloud_conformance_firestore_v1_Select_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_Select_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_Select_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_Where_descriptor; + internal_static_google_cloud_conformance_firestore_v1_Where_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_Where_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_Where_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_OrderBy_descriptor; + internal_static_google_cloud_conformance_firestore_v1_OrderBy_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_OrderBy_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_OrderBy_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_Cursor_descriptor; + internal_static_google_cloud_conformance_firestore_v1_Cursor_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_Cursor_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_Cursor_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_DocSnapshot_descriptor; + internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_DocSnapshot_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_FieldPath_descriptor; + internal_static_google_cloud_conformance_firestore_v1_FieldPath_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_FieldPath_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_FieldPath_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_ListenTest_descriptor; + internal_static_google_cloud_conformance_firestore_v1_ListenTest_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_ListenTest_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_ListenTest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_Snapshot_descriptor; + internal_static_google_cloud_conformance_firestore_v1_Snapshot_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_Snapshot_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_Snapshot_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_tests_DocChange_descriptor; + internal_static_google_cloud_conformance_firestore_v1_DocChange_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_tests_DocChange_fieldAccessorTable; + internal_static_google_cloud_conformance_firestore_v1_DocChange_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -23817,82 +24619,104 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { - "\n\025test-definition.proto\022\005tests\032%google/f" - + "irestore/v1/common.proto\032\'google/fi" - + "restore/v1/document.proto\032(google/f" - + "irestore/v1/firestore.proto\032$google" - + "/firestore/v1/query.proto\032\037google/p" - + "rotobuf/timestamp.proto\"\'\n\tTestSuite\022\032\n\005" - + "tests\030\001 \003(\0132\013.tests.Test\"\310\002\n\004Test\022\023\n\013des" - + "cription\030\001 \001(\t\022\035\n\003get\030\002 \001(\0132\016.tests.GetT" - + "estH\000\022#\n\006create\030\003 \001(\0132\021.tests.CreateTest" - + "H\000\022\035\n\003set\030\004 \001(\0132\016.tests.SetTestH\000\022#\n\006upd" - + "ate\030\005 \001(\0132\021.tests.UpdateTestH\000\022.\n\014update" - + "_paths\030\006 \001(\0132\026.tests.UpdatePathsTestH\000\022#" - + "\n\006delete\030\007 \001(\0132\021.tests.DeleteTestH\000\022!\n\005q" - + "uery\030\010 \001(\0132\020.tests.QueryTestH\000\022#\n\006listen" - + "\030\t \001(\0132\021.tests.ListenTestH\000B\006\n\004test\"^\n\007G" - + "etTest\022\024\n\014doc_ref_path\030\001 \001(\t\022=\n\007request\030" - + "\002 \001(\0132,.google.firestore.v1.GetDocu" - + "mentRequest\"\201\001\n\nCreateTest\022\024\n\014doc_ref_pa" - + "th\030\001 \001(\t\022\021\n\tjson_data\030\002 \001(\t\0228\n\007request\030\003" - + " \001(\0132\'.google.firestore.v1.CommitRe" - + "quest\022\020\n\010is_error\030\004 \001(\010\"\240\001\n\007SetTest\022\024\n\014d" - + "oc_ref_path\030\001 \001(\t\022 \n\006option\030\002 \001(\0132\020.test" - + "s.SetOption\022\021\n\tjson_data\030\003 \001(\t\0228\n\007reques" - + "t\030\004 \001(\0132\'.google.firestore.v1.Commi" - + "tRequest\022\020\n\010is_error\030\005 \001(\010\"\277\001\n\nUpdateTes" - + "t\022\024\n\014doc_ref_path\030\001 \001(\t\022<\n\014precondition\030" - + "\002 \001(\0132&.google.firestore.v1.Precond" - + "ition\022\021\n\tjson_data\030\003 \001(\t\0228\n\007request\030\004 \001(" - + "\0132\'.google.firestore.v1.CommitReque" - + "st\022\020\n\010is_error\030\005 \001(\010\"\355\001\n\017UpdatePathsTest" - + "\022\024\n\014doc_ref_path\030\001 \001(\t\022<\n\014precondition\030\002" - + " \001(\0132&.google.firestore.v1.Precondi" - + "tion\022%\n\013field_paths\030\003 \003(\0132\020.tests.FieldP" - + "ath\022\023\n\013json_values\030\004 \003(\t\0228\n\007request\030\005 \001(" - + "\0132\'.google.firestore.v1.CommitReque" - + "st\022\020\n\010is_error\030\006 \001(\010\"\254\001\n\nDeleteTest\022\024\n\014d" - + "oc_ref_path\030\001 \001(\t\022<\n\014precondition\030\002 \001(\0132" - + "&.google.firestore.v1.Precondition\022" - + "8\n\007request\030\003 \001(\0132\'.google.firestore.v1be" - + "ta1.CommitRequest\022\020\n\010is_error\030\004 \001(\010\":\n\tS" - + "etOption\022\013\n\003all\030\001 \001(\010\022 \n\006fields\030\002 \003(\0132\020." - + "tests.FieldPath\"\212\001\n\tQueryTest\022\021\n\tcoll_pa" - + "th\030\001 \001(\t\022\036\n\007clauses\030\002 \003(\0132\r.tests.Clause" - + "\0228\n\005query\030\003 \001(\0132).google.firestore.v1bet" - + "a1.StructuredQuery\022\020\n\010is_error\030\004 \001(\010\"\250\002\n" - + "\006Clause\022\037\n\006select\030\001 \001(\0132\r.tests.SelectH\000" - + "\022\035\n\005where\030\002 \001(\0132\014.tests.WhereH\000\022\"\n\010order" - + "_by\030\003 \001(\0132\016.tests.OrderByH\000\022\020\n\006offset\030\004 " - + "\001(\005H\000\022\017\n\005limit\030\005 \001(\005H\000\022!\n\010start_at\030\006 \001(\013" - + "2\r.tests.CursorH\000\022$\n\013start_after\030\007 \001(\0132\r" - + ".tests.CursorH\000\022\037\n\006end_at\030\010 \001(\0132\r.tests." - + "CursorH\000\022#\n\nend_before\030\t \001(\0132\r.tests.Cur" - + "sorH\000B\010\n\006clause\"*\n\006Select\022 \n\006fields\030\001 \003(" - + "\0132\020.tests.FieldPath\"G\n\005Where\022\036\n\004path\030\001 \001" - + "(\0132\020.tests.FieldPath\022\n\n\002op\030\002 \001(\t\022\022\n\njson" - + "_value\030\003 \001(\t\"<\n\007OrderBy\022\036\n\004path\030\001 \001(\0132\020." - + "tests.FieldPath\022\021\n\tdirection\030\002 \001(\t\"G\n\006Cu" - + "rsor\022(\n\014doc_snapshot\030\001 \001(\0132\022.tests.DocSn" - + "apshot\022\023\n\013json_values\030\002 \003(\t\".\n\013DocSnapsh" - + "ot\022\014\n\004path\030\001 \001(\t\022\021\n\tjson_data\030\002 \001(\t\"\032\n\tF" - + "ieldPath\022\r\n\005field\030\001 \003(\t\"\177\n\nListenTest\022;\n" - + "\tresponses\030\001 \003(\0132(.google.firestore.v1be" - + "ta1.ListenResponse\022\"\n\tsnapshots\030\002 \003(\0132\017." - + "tests.Snapshot\022\020\n\010is_error\030\003 \001(\010\"\216\001\n\010Sna" - + "pshot\0220\n\004docs\030\001 \003(\0132\".google.firestore.v" - + "1beta1.Document\022!\n\007changes\030\002 \003(\0132\020.tests" - + ".DocChange\022-\n\tread_time\030\003 \001(\0132\032.google.p" - + "rotobuf.Timestamp\"\313\001\n\tDocChange\022#\n\004kind\030" - + "\001 \001(\0162\025.tests.DocChange.Kind\022/\n\003doc\030\002 \001(" - + "\0132\".google.firestore.v1.Document\022\021\n" - + "\told_index\030\003 \001(\005\022\021\n\tnew_index\030\004 \001(\005\"B\n\004K" - + "ind\022\024\n\020KIND_UNSPECIFIED\020\000\022\t\n\005ADDED\020\001\022\013\n\007" - + "REMOVED\020\002\022\014\n\010MODIFIED\020\003Bx\n&com.google.cl" - + "oud.firestore.conformance\252\002\"Google.Cloud" - + ".Firestore.Tests.Proto\312\002(Google\\Cloud\\Fi" - + "restore\\Tests\\Conformanceb\006proto3" + "\n1google/cloud/conformance/firestore/v1/" + + "tests.proto\022%google.cloud.conformance.fi" + + "restore.v1\032 google/firestore/v1/common.p" + + "roto\032\"google/firestore/v1/document.proto" + + "\032#google/firestore/v1/firestore.proto\032\037g" + + "oogle/firestore/v1/query.proto\032\037google/p" + + "rotobuf/timestamp.proto\"G\n\tTestSuite\022:\n\005" + + "tests\030\001 \003(\0132+.google.cloud.conformance.f" + + "irestore.v1.Test\"\331\004\n\004Test\022\023\n\013description" + + "\030\001 \001(\t\022\017\n\007comment\030\n \001(\t\022=\n\003get\030\002 \001(\0132..g" + + "oogle.cloud.conformance.firestore.v1.Get" + + "TestH\000\022C\n\006create\030\003 \001(\01321.google.cloud.co" + + "nformance.firestore.v1.CreateTestH\000\022=\n\003s" + + "et\030\004 \001(\0132..google.cloud.conformance.fire" + + "store.v1.SetTestH\000\022C\n\006update\030\005 \001(\01321.goo" + + "gle.cloud.conformance.firestore.v1.Updat" + + "eTestH\000\022N\n\014update_paths\030\006 \001(\01326.google.c" + + "loud.conformance.firestore.v1.UpdatePath" + + "sTestH\000\022C\n\006delete\030\007 \001(\01321.google.cloud.c" + + "onformance.firestore.v1.DeleteTestH\000\022A\n\005" + + "query\030\010 \001(\01320.google.cloud.conformance.f" + + "irestore.v1.QueryTestH\000\022C\n\006listen\030\t \001(\0132" + + "1.google.cloud.conformance.firestore.v1." + + "ListenTestH\000B\006\n\004test\"Y\n\007GetTest\022\024\n\014doc_r" + + "ef_path\030\001 \001(\t\0228\n\007request\030\002 \001(\0132\'.google." + + "firestore.v1.GetDocumentRequest\"|\n\nCreat" + + "eTest\022\024\n\014doc_ref_path\030\001 \001(\t\022\021\n\tjson_data" + + "\030\002 \001(\t\0223\n\007request\030\003 \001(\0132\".google.firesto" + + "re.v1.CommitRequest\022\020\n\010is_error\030\004 \001(\010\"\273\001" + + "\n\007SetTest\022\024\n\014doc_ref_path\030\001 \001(\t\022@\n\006optio" + + "n\030\002 \001(\01320.google.cloud.conformance.fires" + + "tore.v1.SetOption\022\021\n\tjson_data\030\003 \001(\t\0223\n\007" + + "request\030\004 \001(\0132\".google.firestore.v1.Comm" + + "itRequest\022\020\n\010is_error\030\005 \001(\010\"\265\001\n\nUpdateTe" + + "st\022\024\n\014doc_ref_path\030\001 \001(\t\0227\n\014precondition" + + "\030\002 \001(\0132!.google.firestore.v1.Preconditio" + + "n\022\021\n\tjson_data\030\003 \001(\t\0223\n\007request\030\004 \001(\0132\"." + + "google.firestore.v1.CommitRequest\022\020\n\010is_" + + "error\030\005 \001(\010\"\203\002\n\017UpdatePathsTest\022\024\n\014doc_r" + + "ef_path\030\001 \001(\t\0227\n\014precondition\030\002 \001(\0132!.go" + + "ogle.firestore.v1.Precondition\022E\n\013field_" + + "paths\030\003 \003(\01320.google.cloud.conformance.f" + + "irestore.v1.FieldPath\022\023\n\013json_values\030\004 \003" + + "(\t\0223\n\007request\030\005 \001(\0132\".google.firestore.v" + + "1.CommitRequest\022\020\n\010is_error\030\006 \001(\010\"\242\001\n\nDe" + + "leteTest\022\024\n\014doc_ref_path\030\001 \001(\t\0227\n\014precon" + + "dition\030\002 \001(\0132!.google.firestore.v1.Preco" + + "ndition\0223\n\007request\030\003 \001(\0132\".google.firest" + + "ore.v1.CommitRequest\022\020\n\010is_error\030\004 \001(\010\"Z" + + "\n\tSetOption\022\013\n\003all\030\001 \001(\010\022@\n\006fields\030\002 \003(\013" + + "20.google.cloud.conformance.firestore.v1" + + ".FieldPath\"\245\001\n\tQueryTest\022\021\n\tcoll_path\030\001 " + + "\001(\t\022>\n\007clauses\030\002 \003(\0132-.google.cloud.conf" + + "ormance.firestore.v1.Clause\0223\n\005query\030\003 \001" + + "(\0132$.google.firestore.v1.StructuredQuery" + + "\022\020\n\010is_error\030\004 \001(\010\"\210\004\n\006Clause\022?\n\006select\030" + + "\001 \001(\0132-.google.cloud.conformance.firesto" + + "re.v1.SelectH\000\022=\n\005where\030\002 \001(\0132,.google.c" + + "loud.conformance.firestore.v1.WhereH\000\022B\n" + + "\010order_by\030\003 \001(\0132..google.cloud.conforman" + + "ce.firestore.v1.OrderByH\000\022\020\n\006offset\030\004 \001(" + + "\005H\000\022\017\n\005limit\030\005 \001(\005H\000\022A\n\010start_at\030\006 \001(\0132-" + + ".google.cloud.conformance.firestore.v1.C" + + "ursorH\000\022D\n\013start_after\030\007 \001(\0132-.google.cl" + + "oud.conformance.firestore.v1.CursorH\000\022?\n" + + "\006end_at\030\010 \001(\0132-.google.cloud.conformance" + + ".firestore.v1.CursorH\000\022C\n\nend_before\030\t \001" + + "(\0132-.google.cloud.conformance.firestore." + + "v1.CursorH\000B\010\n\006clause\"J\n\006Select\022@\n\006field" + + "s\030\001 \003(\01320.google.cloud.conformance.fires" + + "tore.v1.FieldPath\"g\n\005Where\022>\n\004path\030\001 \001(\013" + + "20.google.cloud.conformance.firestore.v1" + + ".FieldPath\022\n\n\002op\030\002 \001(\t\022\022\n\njson_value\030\003 \001" + + "(\t\"\\\n\007OrderBy\022>\n\004path\030\001 \001(\01320.google.clo" + + "ud.conformance.firestore.v1.FieldPath\022\021\n" + + "\tdirection\030\002 \001(\t\"g\n\006Cursor\022H\n\014doc_snapsh" + + "ot\030\001 \001(\01322.google.cloud.conformance.fire" + + "store.v1.DocSnapshot\022\023\n\013json_values\030\002 \003(" + + "\t\".\n\013DocSnapshot\022\014\n\004path\030\001 \001(\t\022\021\n\tjson_d" + + "ata\030\002 \001(\t\"\032\n\tFieldPath\022\r\n\005field\030\001 \003(\t\"\232\001" + + "\n\nListenTest\0226\n\tresponses\030\001 \003(\0132#.google" + + ".firestore.v1.ListenResponse\022B\n\tsnapshot" + + "s\030\002 \003(\0132/.google.cloud.conformance.fires" + + "tore.v1.Snapshot\022\020\n\010is_error\030\003 \001(\010\"\251\001\n\010S" + + "napshot\022+\n\004docs\030\001 \003(\0132\035.google.firestore" + + ".v1.Document\022A\n\007changes\030\002 \003(\01320.google.c" + + "loud.conformance.firestore.v1.DocChange\022" + + "-\n\tread_time\030\003 \001(\0132\032.google.protobuf.Tim" + + "estamp\"\346\001\n\tDocChange\022C\n\004kind\030\001 \001(\01625.goo" + + "gle.cloud.conformance.firestore.v1.DocCh" + + "ange.Kind\022*\n\003doc\030\002 \001(\0132\035.google.firestor" + + "e.v1.Document\022\021\n\told_index\030\003 \001(\005\022\021\n\tnew_" + + "index\030\004 \001(\005\"B\n\004Kind\022\024\n\020KIND_UNSPECIFIED\020" + + "\000\022\t\n\005ADDED\020\001\022\013\n\007REMOVED\020\002\022\014\n\010MODIFIED\020\003B" + + "\213\001\n)com.google.cloud.conformance.firesto" + + "re.v1B\016TestDefinition\252\002\"Google.Cloud.Fir" + + "estore.Tests.Proto\312\002(Google\\Cloud\\Firest" + + "ore\\Tests\\Conformanceb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -23912,19 +24736,22 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.TimestampProto.getDescriptor(), }, assigner); - internal_static_tests_TestSuite_descriptor = getDescriptor().getMessageTypes().get(0); - internal_static_tests_TestSuite_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_TestSuite_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_google_cloud_conformance_firestore_v1_TestSuite_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_TestSuite_descriptor, + internal_static_google_cloud_conformance_firestore_v1_TestSuite_descriptor, new java.lang.String[] { "Tests", }); - internal_static_tests_Test_descriptor = getDescriptor().getMessageTypes().get(1); - internal_static_tests_Test_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_Test_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_google_cloud_conformance_firestore_v1_Test_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_Test_descriptor, + internal_static_google_cloud_conformance_firestore_v1_Test_descriptor, new java.lang.String[] { "Description", + "Comment", "Get", "Create", "Set", @@ -23935,66 +24762,75 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Listen", "Test", }); - internal_static_tests_GetTest_descriptor = getDescriptor().getMessageTypes().get(2); - internal_static_tests_GetTest_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_GetTest_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_google_cloud_conformance_firestore_v1_GetTest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_GetTest_descriptor, + internal_static_google_cloud_conformance_firestore_v1_GetTest_descriptor, new java.lang.String[] { "DocRefPath", "Request", }); - internal_static_tests_CreateTest_descriptor = getDescriptor().getMessageTypes().get(3); - internal_static_tests_CreateTest_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_CreateTest_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_google_cloud_conformance_firestore_v1_CreateTest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_CreateTest_descriptor, + internal_static_google_cloud_conformance_firestore_v1_CreateTest_descriptor, new java.lang.String[] { "DocRefPath", "JsonData", "Request", "IsError", }); - internal_static_tests_SetTest_descriptor = getDescriptor().getMessageTypes().get(4); - internal_static_tests_SetTest_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_SetTest_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_google_cloud_conformance_firestore_v1_SetTest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_SetTest_descriptor, + internal_static_google_cloud_conformance_firestore_v1_SetTest_descriptor, new java.lang.String[] { "DocRefPath", "Option", "JsonData", "Request", "IsError", }); - internal_static_tests_UpdateTest_descriptor = getDescriptor().getMessageTypes().get(5); - internal_static_tests_UpdateTest_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_UpdateTest_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_google_cloud_conformance_firestore_v1_UpdateTest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_UpdateTest_descriptor, + internal_static_google_cloud_conformance_firestore_v1_UpdateTest_descriptor, new java.lang.String[] { "DocRefPath", "Precondition", "JsonData", "Request", "IsError", }); - internal_static_tests_UpdatePathsTest_descriptor = getDescriptor().getMessageTypes().get(6); - internal_static_tests_UpdatePathsTest_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_UpdatePathsTest_descriptor, + internal_static_google_cloud_conformance_firestore_v1_UpdatePathsTest_descriptor, new java.lang.String[] { "DocRefPath", "Precondition", "FieldPaths", "JsonValues", "Request", "IsError", }); - internal_static_tests_DeleteTest_descriptor = getDescriptor().getMessageTypes().get(7); - internal_static_tests_DeleteTest_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_DeleteTest_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_google_cloud_conformance_firestore_v1_DeleteTest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_DeleteTest_descriptor, + internal_static_google_cloud_conformance_firestore_v1_DeleteTest_descriptor, new java.lang.String[] { "DocRefPath", "Precondition", "Request", "IsError", }); - internal_static_tests_SetOption_descriptor = getDescriptor().getMessageTypes().get(8); - internal_static_tests_SetOption_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_SetOption_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_google_cloud_conformance_firestore_v1_SetOption_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_SetOption_descriptor, + internal_static_google_cloud_conformance_firestore_v1_SetOption_descriptor, new java.lang.String[] { "All", "Fields", }); - internal_static_tests_QueryTest_descriptor = getDescriptor().getMessageTypes().get(9); - internal_static_tests_QueryTest_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_QueryTest_descriptor = + getDescriptor().getMessageTypes().get(9); + internal_static_google_cloud_conformance_firestore_v1_QueryTest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_QueryTest_descriptor, + internal_static_google_cloud_conformance_firestore_v1_QueryTest_descriptor, new java.lang.String[] { "CollPath", "Clauses", "Query", "IsError", }); - internal_static_tests_Clause_descriptor = getDescriptor().getMessageTypes().get(10); - internal_static_tests_Clause_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_Clause_descriptor = + getDescriptor().getMessageTypes().get(10); + internal_static_google_cloud_conformance_firestore_v1_Clause_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_Clause_descriptor, + internal_static_google_cloud_conformance_firestore_v1_Clause_descriptor, new java.lang.String[] { "Select", "Where", @@ -24007,66 +24843,75 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "EndBefore", "Clause", }); - internal_static_tests_Select_descriptor = getDescriptor().getMessageTypes().get(11); - internal_static_tests_Select_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_Select_descriptor = + getDescriptor().getMessageTypes().get(11); + internal_static_google_cloud_conformance_firestore_v1_Select_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_Select_descriptor, + internal_static_google_cloud_conformance_firestore_v1_Select_descriptor, new java.lang.String[] { "Fields", }); - internal_static_tests_Where_descriptor = getDescriptor().getMessageTypes().get(12); - internal_static_tests_Where_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_Where_descriptor = + getDescriptor().getMessageTypes().get(12); + internal_static_google_cloud_conformance_firestore_v1_Where_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_Where_descriptor, + internal_static_google_cloud_conformance_firestore_v1_Where_descriptor, new java.lang.String[] { "Path", "Op", "JsonValue", }); - internal_static_tests_OrderBy_descriptor = getDescriptor().getMessageTypes().get(13); - internal_static_tests_OrderBy_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_OrderBy_descriptor = + getDescriptor().getMessageTypes().get(13); + internal_static_google_cloud_conformance_firestore_v1_OrderBy_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_OrderBy_descriptor, + internal_static_google_cloud_conformance_firestore_v1_OrderBy_descriptor, new java.lang.String[] { "Path", "Direction", }); - internal_static_tests_Cursor_descriptor = getDescriptor().getMessageTypes().get(14); - internal_static_tests_Cursor_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_Cursor_descriptor = + getDescriptor().getMessageTypes().get(14); + internal_static_google_cloud_conformance_firestore_v1_Cursor_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_Cursor_descriptor, + internal_static_google_cloud_conformance_firestore_v1_Cursor_descriptor, new java.lang.String[] { "DocSnapshot", "JsonValues", }); - internal_static_tests_DocSnapshot_descriptor = getDescriptor().getMessageTypes().get(15); - internal_static_tests_DocSnapshot_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_descriptor = + getDescriptor().getMessageTypes().get(15); + internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_DocSnapshot_descriptor, + internal_static_google_cloud_conformance_firestore_v1_DocSnapshot_descriptor, new java.lang.String[] { "Path", "JsonData", }); - internal_static_tests_FieldPath_descriptor = getDescriptor().getMessageTypes().get(16); - internal_static_tests_FieldPath_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_FieldPath_descriptor = + getDescriptor().getMessageTypes().get(16); + internal_static_google_cloud_conformance_firestore_v1_FieldPath_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_FieldPath_descriptor, + internal_static_google_cloud_conformance_firestore_v1_FieldPath_descriptor, new java.lang.String[] { "Field", }); - internal_static_tests_ListenTest_descriptor = getDescriptor().getMessageTypes().get(17); - internal_static_tests_ListenTest_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_ListenTest_descriptor = + getDescriptor().getMessageTypes().get(17); + internal_static_google_cloud_conformance_firestore_v1_ListenTest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_ListenTest_descriptor, + internal_static_google_cloud_conformance_firestore_v1_ListenTest_descriptor, new java.lang.String[] { "Responses", "Snapshots", "IsError", }); - internal_static_tests_Snapshot_descriptor = getDescriptor().getMessageTypes().get(18); - internal_static_tests_Snapshot_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_Snapshot_descriptor = + getDescriptor().getMessageTypes().get(18); + internal_static_google_cloud_conformance_firestore_v1_Snapshot_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_Snapshot_descriptor, + internal_static_google_cloud_conformance_firestore_v1_Snapshot_descriptor, new java.lang.String[] { "Docs", "Changes", "ReadTime", }); - internal_static_tests_DocChange_descriptor = getDescriptor().getMessageTypes().get(19); - internal_static_tests_DocChange_fieldAccessorTable = + internal_static_google_cloud_conformance_firestore_v1_DocChange_descriptor = + getDescriptor().getMessageTypes().get(19); + internal_static_google_cloud_conformance_firestore_v1_DocChange_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_tests_DocChange_descriptor, + internal_static_google_cloud_conformance_firestore_v1_DocChange_descriptor, new java.lang.String[] { "Kind", "Doc", "OldIndex", "NewIndex", }); diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/proto/google/cloud/conformance/firestore/v1/tests.proto b/google-cloud-testing/google-cloud-conformance-tests/src/main/proto/google/cloud/conformance/firestore/v1/tests.proto new file mode 100644 index 000000000000..48eb89cf7bc3 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/proto/google/cloud/conformance/firestore/v1/tests.proto @@ -0,0 +1,213 @@ +// Copyright 2019 Google LLC. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// Tests for firestore clients. + +syntax = "proto3"; + +package google.cloud.conformance.firestore.v1; + +option php_namespace = "Google\\Cloud\\Firestore\\Tests\\Conformance"; +option csharp_namespace = "Google.Cloud.Firestore.Tests.Proto"; +option java_outer_classname = "TestDefinition"; +option java_package = "com.google.cloud.conformance.firestore.v1"; + +import "google/firestore/v1/common.proto"; +import "google/firestore/v1/document.proto"; +import "google/firestore/v1/firestore.proto"; +import "google/firestore/v1/query.proto"; +import "google/protobuf/timestamp.proto"; + +// A collection of tests. +message TestSuite { + repeated Test tests = 1; +} + +// A Test describes a single client method call and its expected result. +message Test { + string description = 1; // short description of the test + string comment = 10; // a comment describing the behavior being tested + + oneof test { + GetTest get = 2; + CreateTest create = 3; + SetTest set = 4; + UpdateTest update = 5; + UpdatePathsTest update_paths = 6; + DeleteTest delete = 7; + QueryTest query = 8; + ListenTest listen = 9; + } +} + +// Call to the DocumentRef.Get method. +message GetTest { + // The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d" + string doc_ref_path = 1; + + // The request that the call should send to the Firestore service. + google.firestore.v1.GetDocumentRequest request = 2; +} + +// Call to DocumentRef.Create. +message CreateTest { + // The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d" + string doc_ref_path = 1; + + // The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp" + // denote the two special sentinel values. Values that could be interpreted as integers + // (i.e. digit strings) should be treated as integers. + string json_data = 2; + + // The request that the call should generate. + google.firestore.v1.CommitRequest request = 3; + + // If true, the call should result in an error without generating a request. + // If this is true, request should not be set. + bool is_error = 4; +} + +// A call to DocumentRef.Set. +message SetTest { + string doc_ref_path = 1; // path of doc + SetOption option = 2; // option to the Set call, if any + string json_data = 3; // data (see CreateTest.json_data) + google.firestore.v1.CommitRequest request = 4; // expected request + bool is_error = 5; // call signals an error +} + +// A call to the form of DocumentRef.Update that represents the data as a map +// or dictionary. +message UpdateTest { + string doc_ref_path = 1; // path of doc + google.firestore.v1.Precondition precondition = 2; // precondition in call, if any + string json_data = 3; // data (see CreateTest.json_data) + google.firestore.v1.CommitRequest request = 4; // expected request + bool is_error = 5; // call signals an error +} + +// A call to the form of DocumentRef.Update that represents the data as a list +// of field paths and their values. +message UpdatePathsTest { + string doc_ref_path = 1; // path of doc + google.firestore.v1.Precondition precondition = 2; // precondition in call, if any + // parallel sequences: field_paths[i] corresponds to json_values[i] + repeated FieldPath field_paths = 3; // the argument field paths + repeated string json_values = 4; // the argument values, as JSON + google.firestore.v1.CommitRequest request = 5; // expected rquest + bool is_error = 6; // call signals an error +} + +// A call to DocmentRef.Delete +message DeleteTest { + string doc_ref_path = 1; // path of doc + google.firestore.v1.Precondition precondition = 2; + google.firestore.v1.CommitRequest request = 3; // expected rquest + bool is_error = 4; // call signals an error +} + +// An option to the DocumentRef.Set call. +message SetOption { + bool all = 1; // if true, merge all fields ("fields" is ignored). + repeated FieldPath fields = 2; // field paths for a Merge option +} + +message QueryTest { + string coll_path = 1; // path of collection, e.g. "projects/projectID/databases/(default)/documents/C" + repeated Clause clauses = 2; + google.firestore.v1.StructuredQuery query = 3; + bool is_error = 4; +} + +message Clause { + oneof clause { + Select select = 1; + Where where = 2; + OrderBy order_by = 3; + int32 offset = 4; + int32 limit = 5; + Cursor start_at = 6; + Cursor start_after = 7; + Cursor end_at = 8; + Cursor end_before = 9; + } +} + +message Select { + repeated FieldPath fields = 1; +} + +message Where { + FieldPath path = 1; + string op = 2; + string json_value = 3; +} + +message OrderBy { + FieldPath path = 1; + string direction = 2; // "asc" or "desc" +} + +message Cursor { + // one of: + DocSnapshot doc_snapshot = 1; + repeated string json_values = 2; +} + +message DocSnapshot { + string path = 1; + string json_data = 2; +} + +message FieldPath { + repeated string field = 1; +} + +// A test of the Listen streaming RPC (a.k.a. FireStore watch). +// If the sequence of responses is provided to the implementation, +// it should produce the sequence of snapshots. +// If is_error is true, an error should occur after the snapshots. +// +// The tests assume that the query is +// Collection("projects/projectID/databases/(default)/documents/C").OrderBy("a", Ascending) +// +// The watch target ID used in these tests is 1. Test interpreters +// should either change their client's ID for testing, +// or change the ID in the tests before running them. +message ListenTest { + repeated google.firestore.v1.ListenResponse responses = 1; + repeated Snapshot snapshots = 2; + bool is_error = 3; +} + +message Snapshot { + repeated google.firestore.v1.Document docs = 1; + repeated DocChange changes = 2; + google.protobuf.Timestamp read_time = 3; +} + +message DocChange { + enum Kind { + KIND_UNSPECIFIED = 0; + ADDED = 1; + REMOVED = 2; + MODIFIED = 3; + } + + Kind kind = 1; + google.firestore.v1.Document doc = 2; + int32 old_index = 3; + int32 new_index = 4; +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-all-transforms.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-all-transforms.json new file mode 100644 index 000000000000..82831624bb1f --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-all-transforms.json @@ -0,0 +1,73 @@ +{ + "tests": [ + { + "description": "create: all transforms in a single call", + "comment": "A document can be created with any amount of transforms.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\", \"c\": [\"ArrayUnion\", 1, 2, 3], \"d\": [\"ArrayRemove\", 4, 5, 6]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + }, + { + "fieldPath": "c", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "d", + "removeAllFromArray": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-multi.json new file mode 100644 index 000000000000..548a9838089e --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-multi.json @@ -0,0 +1,69 @@ +{ + "tests": [ + { + "description": "create: multiple ArrayRemove fields", + "comment": "A document can have more than one ArrayRemove field.\nSince all the ArrayRemove fields are removed, the only field in the update is \"a\".", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayRemove\", 1, 2, 3], \"c\": {\"d\": [\"ArrayRemove\", 4, 5, 6]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "c.d", + "removeAllFromArray": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-nested.json new file mode 100644 index 000000000000..fa01bd7e0071 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-nested.json @@ -0,0 +1,53 @@ +{ + "tests": [ + { + "description": "create: nested ArrayRemove field", + "comment": "An ArrayRemove value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": {\"c\": [\"ArrayRemove\", 1, 2, 3]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-noarray-nested.json new file mode 100644 index 000000000000..7d530084d448 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: ArrayRemove cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ArrayRemove. Firestore transforms don't support array indexing.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": [\"ArrayRemove\", 1, 2, 3]}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-noarray.json new file mode 100644 index 000000000000..99aea7e35cdf --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: ArrayRemove cannot be in an array value", + "comment": "ArrayRemove must be the value of a field. Firestore\ntransforms don't support array indexing.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, [\"ArrayRemove\", 1, 2, 3]]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-with-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-with-st.json new file mode 100644 index 000000000000..56bdc435daff --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove-with-st.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: The ServerTimestamp sentinel cannot be in an ArrayUnion", + "comment": "The ServerTimestamp sentinel must be the value of a field. It may\nnot appear in an ArrayUnion.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [\"ArrayRemove\", 1, \"ServerTimestamp\", 3]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove.json new file mode 100644 index 000000000000..a69be14b7b12 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayremove.json @@ -0,0 +1,53 @@ +{ + "tests": [ + { + "description": "create: ArrayRemove with data", + "comment": "A key with ArrayRemove is removed from the data in the update \noperation. Instead it appears in a separate Transform operation.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayRemove\", 1, 2, 3]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-multi.json new file mode 100644 index 000000000000..7ca9852f48d9 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-multi.json @@ -0,0 +1,69 @@ +{ + "tests": [ + { + "description": "create: multiple ArrayUnion fields", + "comment": "A document can have more than one ArrayUnion field.\nSince all the ArrayUnion fields are removed, the only field in the update is \"a\".", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayUnion\", 1, 2, 3], \"c\": {\"d\": [\"ArrayUnion\", 4, 5, 6]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "c.d", + "appendMissingElements": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-nested.json new file mode 100644 index 000000000000..a2f20299d3be --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-nested.json @@ -0,0 +1,53 @@ +{ + "tests": [ + { + "description": "create: nested ArrayUnion field", + "comment": "An ArrayUnion value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": {\"c\": [\"ArrayUnion\", 1, 2, 3]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-noarray-nested.json new file mode 100644 index 000000000000..b9ec5c01cbf1 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: ArrayUnion cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ArrayUnion. Firestore transforms don't support array indexing.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": [\"ArrayUnion\", 1, 2, 3]}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-noarray.json new file mode 100644 index 000000000000..1b85a93c45e9 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: ArrayUnion cannot be in an array value", + "comment": "ArrayUnion must be the value of a field. Firestore\ntransforms don't support array indexing.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, [\"ArrayRemove\", 1, 2, 3]]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-with-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-with-st.json new file mode 100644 index 000000000000..2847f57490b8 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion-with-st.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: The ServerTimestamp sentinel cannot be in an ArrayUnion", + "comment": "The ServerTimestamp sentinel must be the value of a field. It may\nnot appear in an ArrayUnion.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [\"ArrayUnion\", 1, \"ServerTimestamp\", 3]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion.json new file mode 100644 index 000000000000..26d079946645 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-arrayunion.json @@ -0,0 +1,53 @@ +{ + "tests": [ + { + "description": "create: ArrayUnion with data", + "comment": "A key with ArrayUnion is removed from the data in the update \noperation. Instead it appears in a separate Transform operation.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayUnion\", 1, 2, 3]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-basic.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-basic.json new file mode 100644 index 000000000000..d67558ca13dd --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-basic.json @@ -0,0 +1,30 @@ +{ + "tests": [ + { + "description": "create: basic", + "comment": "A simple call, resulting in a single update operation.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-complex.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-complex.json new file mode 100644 index 000000000000..a01b307f672d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-complex.json @@ -0,0 +1,63 @@ +{ + "tests": [ + { + "description": "create: complex", + "comment": "A call to a write method with complicated input data.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2.5], \"b\": {\"c\": [\"three\", {\"d\": true}]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "arrayValue": { + "values": [ + { + "integerValue": "1" + }, + { + "doubleValue": 2.5 + } + ] + } + }, + "b": { + "mapValue": { + "fields": { + "c": { + "arrayValue": { + "values": [ + { + "stringValue": "three" + }, + { + "mapValue": { + "fields": { + "d": { + "booleanValue": true + } + } + } + } + ] + } + } + } + } + } + } + }, + "currentDocument": { + "exists": false + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-del-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-del-noarray-nested.json new file mode 100644 index 000000000000..34d8258e1b21 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-del-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: Delete cannot be anywhere inside an array value", + "comment": "The Delete sentinel must be the value of a field. Deletes are implemented\nby turning the path to the Delete sentinel into a FieldPath, and FieldPaths do not support\narray indexing.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": \"Delete\"}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-del-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-del-noarray.json new file mode 100644 index 000000000000..dde6b334b461 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-del-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: Delete cannot be in an array value", + "comment": "The Delete sentinel must be the value of a field. Deletes are\nimplemented by turning the path to the Delete sentinel into a FieldPath, and FieldPaths\ndo not support array indexing.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, \"Delete\"]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-empty.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-empty.json new file mode 100644 index 000000000000..7d9f7f009872 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-empty.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "create: creating or setting an empty map", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": {} + }, + "currentDocument": { + "exists": false + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-nodel.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-nodel.json new file mode 100644 index 000000000000..dd8baaf227aa --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-nodel.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: Delete cannot appear in data", + "comment": "The Delete sentinel cannot be used in Create, or in Set without a Merge option.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"Delete\"}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-nosplit.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-nosplit.json new file mode 100644 index 000000000000..8807af362e70 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-nosplit.json @@ -0,0 +1,39 @@ +{ + "tests": [ + { + "description": "create: don’t split on dots", + "comment": "Create and Set treat their map keys literally. They do not split on dots.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{ \"a.b\": { \"c.d\": 1 }, \"e\": 2 }", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a.b": { + "mapValue": { + "fields": { + "c.d": { + "integerValue": "1" + } + } + } + }, + "e": { + "integerValue": "2" + } + } + }, + "currentDocument": { + "exists": false + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-special-chars.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-special-chars.json new file mode 100644 index 000000000000..4080042000d5 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-special-chars.json @@ -0,0 +1,39 @@ +{ + "tests": [ + { + "description": "create: non-alpha characters in map keys", + "comment": "Create and Set treat their map keys literally. They do not escape special characters.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{ \"*\": { \".\": 1 }, \"~\": 2 }", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "*": { + "mapValue": { + "fields": { + ".": { + "integerValue": "1" + } + } + } + }, + "~": { + "integerValue": "2" + } + } + }, + "currentDocument": { + "exists": false + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-alone.json new file mode 100644 index 000000000000..20c5e8ec32a3 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-alone.json @@ -0,0 +1,31 @@ +{ + "tests": [ + { + "description": "create: ServerTimestamp alone", + "comment": "If the only values in the input are ServerTimestamps, then no\nupdate operation should be produced.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a", + "setToServerValue": "REQUEST_TIME" + } + ] + }, + "currentDocument": { + "exists": false + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-multi.json new file mode 100644 index 000000000000..89430e2b64d6 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-multi.json @@ -0,0 +1,45 @@ +{ + "tests": [ + { + "description": "create: multiple ServerTimestamp fields", + "comment": "A document can have more than one ServerTimestamp field.\nSince all the ServerTimestamp fields are removed, the only field in the update is \"a\".", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\", \"c\": {\"d\": \"ServerTimestamp\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + }, + { + "fieldPath": "c.d", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-nested.json new file mode 100644 index 000000000000..f2a3a8d1f624 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-nested.json @@ -0,0 +1,41 @@ +{ + "tests": [ + { + "description": "create: nested ServerTimestamp field", + "comment": "A ServerTimestamp value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": {\"c\": \"ServerTimestamp\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-noarray-nested.json new file mode 100644 index 000000000000..8660531dcc9a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: ServerTimestamp cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ServerTimestamp sentinel. Firestore transforms don't support array indexing.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": \"ServerTimestamp\"}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-noarray.json new file mode 100644 index 000000000000..31104f25613c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "create: ServerTimestamp cannot be in an array value", + "comment": "The ServerTimestamp sentinel must be the value of a field. Firestore\ntransforms don't support array indexing.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, \"ServerTimestamp\"]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-with-empty-map.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-with-empty-map.json new file mode 100644 index 000000000000..730afd154fd8 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st-with-empty-map.json @@ -0,0 +1,49 @@ +{ + "tests": [ + { + "description": "create: ServerTimestamp beside an empty map", + "comment": "When a ServerTimestamp and a map both reside inside a map, the\nServerTimestamp should be stripped out but the empty map should remain.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": {\"b\": {}, \"c\": \"ServerTimestamp\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "mapValue": { + "fields": { + "b": { + "mapValue": { + "fields": {} + } + } + } + } + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st.json new file mode 100644 index 000000000000..705f76ed16ac --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/create-st.json @@ -0,0 +1,41 @@ +{ + "tests": [ + { + "description": "create: ServerTimestamp with data", + "comment": "A key with the special ServerTimestamp sentinel is removed from\nthe data in the update operation. Instead it appears in a separate Transform operation.\nNote that in these tests, the string \"ServerTimestamp\" should be replaced with the\nspecial ServerTimestamp value.", + "create": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "currentDocument": { + "exists": false + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-exists-precond.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-exists-precond.json new file mode 100644 index 000000000000..174be0eccb06 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-exists-precond.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "delete: delete with exists precondition", + "comment": "Delete supports an exists precondition.", + "delete": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "precondition": { + "exists": true + }, + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "delete": "projects/projectID/databases/(default)/documents/C/d", + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-no-precond.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-no-precond.json new file mode 100644 index 000000000000..96fcb39a5988 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-no-precond.json @@ -0,0 +1,19 @@ +{ + "tests": [ + { + "description": "delete: delete without precondition", + "comment": "An ordinary Delete call.", + "delete": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "delete": "projects/projectID/databases/(default)/documents/C/d" + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-time-precond.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-time-precond.json new file mode 100644 index 000000000000..160defb3fedb --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/delete-time-precond.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "delete: delete with last-update-time precondition", + "comment": "Delete supports a last-update-time precondition.", + "delete": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "precondition": { + "updateTime": "1970-01-01T00:00:42Z" + }, + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "delete": "projects/projectID/databases/(default)/documents/C/d", + "currentDocument": { + "updateTime": "1970-01-01T00:00:42Z" + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/get-basic.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/get-basic.json new file mode 100644 index 000000000000..0a2cd2d4a1b7 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/get-basic.json @@ -0,0 +1,14 @@ +{ + "tests": [ + { + "description": "get: get a document", + "comment": "A call to DocumentRef.Get", + "get": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "request": { + "name": "projects/projectID/databases/(default)/documents/C/d" + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-mod-del-add.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-mod-del-add.json new file mode 100644 index 000000000000..d05997332df0 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-mod-del-add.json @@ -0,0 +1,206 @@ +{ + "tests": [ + { + "description": "listen: add a doc, modify it, delete it, then add it again", + "comment": "Various changes to a single document.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + }, + { + "documentDelete": { + "document": "projects/projectID/databases/(default)/documents/C/d1" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:03Z" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:04Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:01Z" + }, + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + } + ], + "changes": [ + { + "kind": "MODIFIED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + } + } + ], + "readTime": "1970-01-01T00:00:02Z" + }, + { + "changes": [ + { + "kind": "REMOVED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + "newIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:03Z" + }, + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + "oldIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:04Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-one.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-one.json new file mode 100644 index 000000000000..8223180a8765 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-one.json @@ -0,0 +1,72 @@ +{ + "tests": [ + { + "description": "listen: add a doc", + "comment": "Snapshot with a single document.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:02Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-three.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-three.json new file mode 100644 index 000000000000..6ea117a7cc38 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-add-three.json @@ -0,0 +1,156 @@ +{ + "tests": [ + { + "description": "listen: add three documents", + "comment": "A snapshot with three documents. The documents are sorted\nfirst by the \"a\" field, then by their path. The changes are ordered the same way.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 1 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 2 + } + ], + "readTime": "1970-01-01T00:00:02Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-doc-remove.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-doc-remove.json new file mode 100644 index 000000000000..59af7d11a6e8 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-doc-remove.json @@ -0,0 +1,101 @@ +{ + "tests": [ + { + "description": "listen: DocumentRemove behaves like DocumentDelete", + "comment": "The DocumentRemove response behaves exactly like DocumentDelete.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + }, + { + "documentRemove": { + "document": "projects/projectID/databases/(default)/documents/C/d1" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:01Z" + }, + { + "changes": [ + { + "kind": "REMOVED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "newIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:02Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-empty.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-empty.json new file mode 100644 index 000000000000..734aa41f9ee7 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-empty.json @@ -0,0 +1,27 @@ +{ + "tests": [ + { + "description": "listen: no changes; empty snapshot", + "comment": "There are no changes, so the snapshot should be empty.", + "listen": { + "responses": [ + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + } + ], + "snapshots": [ + { + "readTime": "1970-01-01T00:00:01Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-filter-nop.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-filter-nop.json new file mode 100644 index 000000000000..a7c09e97d99a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-filter-nop.json @@ -0,0 +1,203 @@ +{ + "tests": [ + { + "description": "listen: Filter response with same size is a no-op", + "comment": "A Filter response whose count matches the size of the current\nstate (docs in last snapshot + docs added - docs deleted) is a no-op.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentDelete": { + "document": "projects/projectID/databases/(default)/documents/C/d1" + } + }, + { + "filter": { + "count": 2 + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 1 + } + ], + "readTime": "1970-01-01T00:00:01Z" + }, + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "REMOVED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": 1, + "newIndex": -1 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 1 + } + ], + "readTime": "1970-01-01T00:00:02Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-multi-docs.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-multi-docs.json new file mode 100644 index 000000000000..fe5b0f0bbf9b --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-multi-docs.json @@ -0,0 +1,414 @@ +{ + "tests": [ + { + "description": "listen: multiple documents, added, deleted and updated", + "comment": "Changes should be ordered with deletes first, then additions, then mods,\neach in query order.\nOld indices refer to the immediately previous state, not the previous snapshot", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d4", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d5", + "fields": { + "a": { + "integerValue": "4" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentDelete": { + "document": "projects/projectID/databases/(default)/documents/C/d3" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "-1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d6", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentDelete": { + "document": "projects/projectID/databases/(default)/documents/C/d2" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d4", + "fields": { + "a": { + "integerValue": "-2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:04Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d4", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 1 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d4", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 2 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 3 + } + ], + "readTime": "1970-01-01T00:00:02Z" + }, + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d4", + "fields": { + "a": { + "integerValue": "-2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "-1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d6", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d5", + "fields": { + "a": { + "integerValue": "4" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "REMOVED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "newIndex": -1 + }, + { + "kind": "REMOVED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "newIndex": -1 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d6", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 2 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d5", + "fields": { + "a": { + "integerValue": "4" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 3 + }, + { + "kind": "MODIFIED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d4", + "fields": { + "a": { + "integerValue": "-2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + } + }, + { + "kind": "MODIFIED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "-1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + "oldIndex": 1, + "newIndex": 1 + } + ], + "readTime": "1970-01-01T00:00:04Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-nocurrent.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-nocurrent.json new file mode 100644 index 000000000000..158595e963df --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-nocurrent.json @@ -0,0 +1,119 @@ +{ + "tests": [ + { + "description": "listen: no snapshot if we don't see CURRENT", + "comment": "If the watch state is not marked CURRENT, no snapshot is issued.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + "oldIndex": -1, + "newIndex": 1 + } + ], + "readTime": "1970-01-01T00:00:02Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-nomod.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-nomod.json new file mode 100644 index 000000000000..0e454d51286a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-nomod.json @@ -0,0 +1,123 @@ +{ + "tests": [ + { + "description": "listen: add a doc, then change it but without changing its update time", + "comment": "Document updates are recognized by a change in the update time, not the data.\nThis shouldn't actually happen. It is just a test of the update logic.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + }, + { + "documentDelete": { + "document": "projects/projectID/databases/(default)/documents/C/d1" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:03Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:01Z" + }, + { + "changes": [ + { + "kind": "REMOVED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "newIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:03Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-removed-target-ids.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-removed-target-ids.json new file mode 100644 index 000000000000..57c91b7bd7f5 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-removed-target-ids.json @@ -0,0 +1,113 @@ +{ + "tests": [ + { + "description": "listen: DocumentChange with removed_target_id is like a delete.", + "comment": "A DocumentChange with the watch target ID in the removed_target_ids field is the\nsame as deleting a document.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "removedTargetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:01Z" + }, + { + "changes": [ + { + "kind": "REMOVED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "newIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:02Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-reset.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-reset.json new file mode 100644 index 000000000000..d988a1ba9bf0 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-reset.json @@ -0,0 +1,309 @@ +{ + "tests": [ + { + "description": "listen: RESET turns off CURRENT", + "comment": "A RESET message turns off the CURRENT state, and marks all documents as deleted.\n\nIf a document appeared on the stream but was never part of a snapshot (\"d3\" in this test), a reset\nwill make it disappear completely.\n\nFor a snapshot to happen at a NO_CHANGE reponse, we need to have both seen a CURRENT response, and\nhave a change from the previous snapshot. Here, after the reset, we see the same version of d2\nagain. That doesn't result in a snapshot.\n", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "RESET" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:02Z" + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:03Z" + } + }, + { + "targetChange": { + "targetChangeType": "RESET" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:04Z" + } + }, + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:05Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "1" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + "oldIndex": -1 + }, + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1, + "newIndex": 1 + } + ], + "readTime": "1970-01-01T00:00:01Z" + }, + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + } + ], + "changes": [ + { + "kind": "REMOVED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "2" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": 1, + "newIndex": -1 + }, + { + "kind": "MODIFIED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + } + } + ], + "readTime": "1970-01-01T00:00:03Z" + }, + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d2", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:03Z" + }, + { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d3", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:02Z" + }, + "oldIndex": -1, + "newIndex": 1 + } + ], + "readTime": "1970-01-01T00:00:05Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-add-nop.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-add-nop.json new file mode 100644 index 000000000000..e864ea58221a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-add-nop.json @@ -0,0 +1,81 @@ +{ + "tests": [ + { + "description": "listen: TargetChange_ADD is a no-op if it has the same target ID", + "comment": "A TargetChange_ADD response must have the same watch target ID.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "targetChangeType": "ADD", + "targetIds": [ + 1 + ], + "readTime": "1970-01-01T00:00:02Z" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + } + ], + "snapshots": [ + { + "docs": [ + { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + } + ], + "changes": [ + { + "kind": "ADDED", + "doc": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "oldIndex": -1 + } + ], + "readTime": "1970-01-01T00:00:01Z" + } + ] + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-add-wrong-id.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-add-wrong-id.json new file mode 100644 index 000000000000..5bd295d50572 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-add-wrong-id.json @@ -0,0 +1,49 @@ +{ + "tests": [ + { + "description": "listen: TargetChange_ADD is an error if it has a different target ID", + "comment": "A TargetChange_ADD response must have the same watch target ID.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "targetChangeType": "ADD", + "targetIds": [ + 2 + ], + "readTime": "1970-01-01T00:00:02Z" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-remove.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-remove.json new file mode 100644 index 000000000000..2b11e280eb19 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/listen-target-remove.json @@ -0,0 +1,45 @@ +{ + "tests": [ + { + "description": "listen: TargetChange_REMOVE should not appear", + "comment": "A TargetChange_REMOVE response should never be sent.", + "listen": { + "responses": [ + { + "documentChange": { + "document": { + "name": "projects/projectID/databases/(default)/documents/C/d1", + "fields": { + "a": { + "integerValue": "3" + } + }, + "createTime": "1970-01-01T00:00:01Z", + "updateTime": "1970-01-01T00:00:01Z" + }, + "targetIds": [ + 1 + ] + } + }, + { + "targetChange": { + "targetChangeType": "CURRENT" + } + }, + { + "targetChange": { + "targetChangeType": "REMOVE" + } + }, + { + "targetChange": { + "readTime": "1970-01-01T00:00:01Z" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayremove-cursor.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayremove-cursor.json new file mode 100644 index 000000000000..9e396b358cd6 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayremove-cursor.json @@ -0,0 +1,31 @@ +{ + "tests": [ + { + "description": "query: ArrayRemove in cursor method", + "comment": "ArrayRemove is not permitted in queries.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "endBefore": { + "jsonValues": [ + "[\"ArrayRemove\", 1, 2, 3]" + ] + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayremove-where.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayremove-where.json new file mode 100644 index 000000000000..c488bba85afc --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayremove-where.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "query: ArrayRemove in Where", + "comment": "ArrayRemove is not permitted in queries.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "==", + "jsonValue": "[\"ArrayRemove\", 1, 2, 3]" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayunion-cursor.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayunion-cursor.json new file mode 100644 index 000000000000..8259d31cc75e --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayunion-cursor.json @@ -0,0 +1,31 @@ +{ + "tests": [ + { + "description": "query: ArrayUnion in cursor method", + "comment": "ArrayUnion is not permitted in queries.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "endBefore": { + "jsonValues": [ + "[\"ArrayUnion\", 1, 2, 3]" + ] + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayunion-where.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayunion-where.json new file mode 100644 index 000000000000..9f298d84e02c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-arrayunion-where.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "query: ArrayUnion in Where", + "comment": "ArrayUnion is not permitted in queries.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "==", + "jsonValue": "[\"ArrayUnion\", 1, 2, 3]" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-bad-NaN.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-bad-NaN.json new file mode 100644 index 000000000000..47344309fe6b --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-bad-NaN.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "query: where clause with non-== comparison with NaN", + "comment": "You can only compare NaN for equality.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "\u003c", + "jsonValue": "\"NaN\"" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-bad-null.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-bad-null.json new file mode 100644 index 000000000000..340afb9332db --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-bad-null.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "query: where clause with non-== comparison with Null", + "comment": "You can only compare Null for equality.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "\u003e", + "jsonValue": "null" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-order.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-order.json new file mode 100644 index 000000000000..89d2696dd493 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-order.json @@ -0,0 +1,81 @@ +{ + "tests": [ + { + "description": "query: cursor methods with a document snapshot, existing orderBy", + "comment": "When a document snapshot is used, the client appends a __name__ order-by clause\nwith the direction of the last order-by clause.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "orderBy": { + "path": { + "field": [ + "b" + ] + }, + "direction": "desc" + } + }, + { + "startAfter": { + "docSnapshot": { + "path": "projects/projectID/databases/(default)/documents/C/D", + "jsonData": "{\"a\": 7, \"b\": 8}" + } + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "ASCENDING" + }, + { + "field": { + "fieldPath": "b" + }, + "direction": "DESCENDING" + }, + { + "field": { + "fieldPath": "__name__" + }, + "direction": "DESCENDING" + } + ], + "startAt": { + "values": [ + { + "integerValue": "7" + }, + { + "integerValue": "8" + }, + { + "referenceValue": "projects/projectID/databases/(default)/documents/C/D" + } + ] + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-orderby-name.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-orderby-name.json new file mode 100644 index 000000000000..189b302a0b73 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-orderby-name.json @@ -0,0 +1,91 @@ +{ + "tests": [ + { + "description": "query: cursor method, doc snapshot, existing orderBy __name__", + "comment": "If there is an existing orderBy clause on __name__,\nno changes are made to the list of orderBy clauses.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "desc" + } + }, + { + "orderBy": { + "path": { + "field": [ + "__name__" + ] + }, + "direction": "asc" + } + }, + { + "startAt": { + "docSnapshot": { + "path": "projects/projectID/databases/(default)/documents/C/D", + "jsonData": "{\"a\": 7, \"b\": 8}" + } + } + }, + { + "endAt": { + "docSnapshot": { + "path": "projects/projectID/databases/(default)/documents/C/D", + "jsonData": "{\"a\": 7, \"b\": 8}" + } + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "DESCENDING" + }, + { + "field": { + "fieldPath": "__name__" + }, + "direction": "ASCENDING" + } + ], + "startAt": { + "values": [ + { + "integerValue": "7" + }, + { + "referenceValue": "projects/projectID/databases/(default)/documents/C/D" + } + ], + "before": true + }, + "endAt": { + "values": [ + { + "integerValue": "7" + }, + { + "referenceValue": "projects/projectID/databases/(default)/documents/C/D" + } + ] + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-eq.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-eq.json new file mode 100644 index 000000000000..41bc9bf1c07c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-eq.json @@ -0,0 +1,65 @@ +{ + "tests": [ + { + "description": "query: cursor methods with a document snapshot and an equality where clause", + "comment": "A Where clause using equality doesn't change the implicit orderBy clauses.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "==", + "jsonValue": "3" + } + }, + { + "endAt": { + "docSnapshot": { + "path": "projects/projectID/databases/(default)/documents/C/D", + "jsonData": "{\"a\": 7, \"b\": 8}" + } + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "where": { + "fieldFilter": { + "field": { + "fieldPath": "a" + }, + "op": "EQUAL", + "value": { + "integerValue": "3" + } + } + }, + "orderBy": [ + { + "field": { + "fieldPath": "__name__" + }, + "direction": "ASCENDING" + } + ], + "endAt": { + "values": [ + { + "referenceValue": "projects/projectID/databases/(default)/documents/C/D" + } + ] + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-neq-orderby.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-neq-orderby.json new file mode 100644 index 000000000000..ce99f786d39f --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-neq-orderby.json @@ -0,0 +1,85 @@ +{ + "tests": [ + { + "description": "query: cursor method, doc snapshot, inequality where clause, and existing orderBy clause", + "comment": "If there is an OrderBy clause, the inequality Where clause does\nnot result in a new OrderBy clause. We still add a __name__ OrderBy clause", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "desc" + } + }, + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "\u003c", + "jsonValue": "4" + } + }, + { + "startAt": { + "docSnapshot": { + "path": "projects/projectID/databases/(default)/documents/C/D", + "jsonData": "{\"a\": 7, \"b\": 8}" + } + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "where": { + "fieldFilter": { + "field": { + "fieldPath": "a" + }, + "op": "LESS_THAN", + "value": { + "integerValue": "4" + } + } + }, + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "DESCENDING" + }, + { + "field": { + "fieldPath": "__name__" + }, + "direction": "DESCENDING" + } + ], + "startAt": { + "values": [ + { + "integerValue": "7" + }, + { + "referenceValue": "projects/projectID/databases/(default)/documents/C/D" + } + ], + "before": true + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-neq.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-neq.json new file mode 100644 index 000000000000..384bb7c2042a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap-where-neq.json @@ -0,0 +1,75 @@ +{ + "tests": [ + { + "description": "query: cursor method with a document snapshot and an inequality where clause", + "comment": "A Where clause with an inequality results in an OrderBy clause\non that clause's path, if there are no other OrderBy clauses.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "\u003c=", + "jsonValue": "3" + } + }, + { + "endBefore": { + "docSnapshot": { + "path": "projects/projectID/databases/(default)/documents/C/D", + "jsonData": "{\"a\": 7, \"b\": 8}" + } + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "where": { + "fieldFilter": { + "field": { + "fieldPath": "a" + }, + "op": "LESS_THAN_OR_EQUAL", + "value": { + "integerValue": "3" + } + } + }, + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "ASCENDING" + }, + { + "field": { + "fieldPath": "__name__" + }, + "direction": "ASCENDING" + } + ], + "endAt": { + "values": [ + { + "integerValue": "7" + }, + { + "referenceValue": "projects/projectID/databases/(default)/documents/C/D" + } + ], + "before": true + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap.json new file mode 100644 index 000000000000..ea84c01729e6 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-docsnap.json @@ -0,0 +1,44 @@ +{ + "tests": [ + { + "description": "query: cursor methods with a document snapshot", + "comment": "When a document snapshot is used, the client appends a __name__ order-by clause.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "startAt": { + "docSnapshot": { + "path": "projects/projectID/databases/(default)/documents/C/D", + "jsonData": "{\"a\": 7, \"b\": 8}" + } + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "__name__" + }, + "direction": "ASCENDING" + } + ], + "startAt": { + "values": [ + { + "referenceValue": "projects/projectID/databases/(default)/documents/C/D" + } + ], + "before": true + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-endbefore-empty-map.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-endbefore-empty-map.json new file mode 100644 index 000000000000..3d02cbca2127 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-endbefore-empty-map.json @@ -0,0 +1,55 @@ +{ + "tests": [ + { + "description": "query: EndBefore with explicit empty map", + "comment": "Cursor methods are allowed to use empty maps with EndBefore. It should result in an empty map in the query.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "endBefore": { + "jsonValues": [ + "{}" + ] + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "ASCENDING" + } + ], + "endAt": { + "values": [ + { + "mapValue": { + "fields": {} + } + } + ], + "before": true + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-endbefore-empty.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-endbefore-empty.json new file mode 100644 index 000000000000..c491dcd79882 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-endbefore-empty.json @@ -0,0 +1,27 @@ +{ + "tests": [ + { + "description": "query: EndBefore with empty values", + "comment": "Cursor methods are not allowed to use empty values with EndBefore. It should result in an error.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "endBefore": {} + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-no-order.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-no-order.json new file mode 100644 index 000000000000..45823b228483 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-no-order.json @@ -0,0 +1,21 @@ +{ + "tests": [ + { + "description": "query: cursor method without orderBy", + "comment": "If a cursor method with a list of values is provided, there must be at least as many\nexplicit orderBy clauses as values.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "startAt": { + "jsonValues": [ + "2" + ] + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-startat-empty-map.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-startat-empty-map.json new file mode 100644 index 000000000000..788588f76424 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-startat-empty-map.json @@ -0,0 +1,55 @@ +{ + "tests": [ + { + "description": "query: StartAt with explicit empty map", + "comment": "Cursor methods are allowed to use empty maps with StartAt. It should result in an empty map in the query.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "startAt": { + "jsonValues": [ + "{}" + ] + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "ASCENDING" + } + ], + "startAt": { + "values": [ + { + "mapValue": { + "fields": {} + } + } + ], + "before": true + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-startat-empty.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-startat-empty.json new file mode 100644 index 000000000000..c0c5a09801d4 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-startat-empty.json @@ -0,0 +1,27 @@ +{ + "tests": [ + { + "description": "query: StartAt with empty values", + "comment": "Cursor methods are not allowed to use empty values with StartAt. It should result in an error.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "startAt": {} + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-1a.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-1a.json new file mode 100644 index 000000000000..038d177f1535 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-1a.json @@ -0,0 +1,68 @@ +{ + "tests": [ + { + "description": "query: StartAt/EndBefore with values", + "comment": "Cursor methods take the same number of values as there are OrderBy clauses.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "startAt": { + "jsonValues": [ + "7" + ] + } + }, + { + "endBefore": { + "jsonValues": [ + "9" + ] + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "ASCENDING" + } + ], + "startAt": { + "values": [ + { + "integerValue": "7" + } + ], + "before": true + }, + "endAt": { + "values": [ + { + "integerValue": "9" + } + ], + "before": true + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-1b.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-1b.json new file mode 100644 index 000000000000..089cff93bdef --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-1b.json @@ -0,0 +1,66 @@ +{ + "tests": [ + { + "description": "query: StartAfter/EndAt with values", + "comment": "Cursor methods take the same number of values as there are OrderBy clauses.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "startAfter": { + "jsonValues": [ + "7" + ] + } + }, + { + "endAt": { + "jsonValues": [ + "9" + ] + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "ASCENDING" + } + ], + "startAt": { + "values": [ + { + "integerValue": "7" + } + ] + }, + "endAt": { + "values": [ + { + "integerValue": "9" + } + ] + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-2.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-2.json new file mode 100644 index 000000000000..8554b436039a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-2.json @@ -0,0 +1,91 @@ +{ + "tests": [ + { + "description": "query: Start/End with two values", + "comment": "Cursor methods take the same number of values as there are OrderBy clauses.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "orderBy": { + "path": { + "field": [ + "b" + ] + }, + "direction": "desc" + } + }, + { + "startAt": { + "jsonValues": [ + "7", + "8" + ] + } + }, + { + "endAt": { + "jsonValues": [ + "9", + "10" + ] + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "ASCENDING" + }, + { + "field": { + "fieldPath": "b" + }, + "direction": "DESCENDING" + } + ], + "startAt": { + "values": [ + { + "integerValue": "7" + }, + { + "integerValue": "8" + } + ], + "before": true + }, + "endAt": { + "values": [ + { + "integerValue": "9" + }, + { + "integerValue": "10" + } + ] + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-docid.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-docid.json new file mode 100644 index 000000000000..6492b3f19527 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-docid.json @@ -0,0 +1,67 @@ +{ + "tests": [ + { + "description": "query: cursor methods with __name__", + "comment": "Cursor values corresponding to a __name__ field take the document path relative to the\nquery's collection.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "__name__" + ] + }, + "direction": "asc" + } + }, + { + "startAfter": { + "jsonValues": [ + "\"D1\"" + ] + } + }, + { + "endBefore": { + "jsonValues": [ + "\"D2\"" + ] + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "__name__" + }, + "direction": "ASCENDING" + } + ], + "startAt": { + "values": [ + { + "referenceValue": "projects/projectID/databases/(default)/documents/C/D1" + } + ] + }, + "endAt": { + "values": [ + { + "referenceValue": "projects/projectID/databases/(default)/documents/C/D2" + } + ], + "before": true + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-last-wins.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-last-wins.json new file mode 100644 index 000000000000..4a46b2f789d5 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-cursor-vals-last-wins.json @@ -0,0 +1,82 @@ +{ + "tests": [ + { + "description": "query: cursor methods, last one wins", + "comment": "When multiple Start* or End* calls occur, the values of the last one are used.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "startAfter": { + "jsonValues": [ + "1" + ] + } + }, + { + "startAt": { + "jsonValues": [ + "2" + ] + } + }, + { + "endAt": { + "jsonValues": [ + "3" + ] + } + }, + { + "endBefore": { + "jsonValues": [ + "4" + ] + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "a" + }, + "direction": "ASCENDING" + } + ], + "startAt": { + "values": [ + { + "integerValue": "2" + } + ], + "before": true + }, + "endAt": { + "values": [ + { + "integerValue": "4" + } + ], + "before": true + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-del-cursor.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-del-cursor.json new file mode 100644 index 000000000000..921ace131d28 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-del-cursor.json @@ -0,0 +1,31 @@ +{ + "tests": [ + { + "description": "query: Delete in cursor method", + "comment": "Sentinel values are not permitted in queries.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "endBefore": { + "jsonValues": [ + "\"Delete\"" + ] + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-del-where.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-del-where.json new file mode 100644 index 000000000000..2075e3578078 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-del-where.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "query: Delete in Where", + "comment": "Sentinel values are not permitted in queries.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "==", + "jsonValue": "\"Delete\"" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-operator.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-operator.json new file mode 100644 index 000000000000..064164dc0d89 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-operator.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "query: invalid operator in Where clause", + "comment": "The != operator is not supported.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "!=", + "jsonValue": "4" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-order.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-order.json new file mode 100644 index 000000000000..d0c5ba654f61 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-order.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "query: invalid path in OrderBy clause", + "comment": "The path has an empty component.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "*", + "" + ] + }, + "direction": "asc" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-select.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-select.json new file mode 100644 index 000000000000..fa18f72817a4 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-select.json @@ -0,0 +1,26 @@ +{ + "tests": [ + { + "description": "query: invalid path in Where clause", + "comment": "The path has an empty component.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "select": { + "fields": [ + { + "field": [ + "*", + "" + ] + } + ] + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-where.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-where.json new file mode 100644 index 000000000000..a5b2add33360 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-invalid-path-where.json @@ -0,0 +1,26 @@ +{ + "tests": [ + { + "description": "query: invalid path in Where clause", + "comment": "The path has an empty component.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "*", + "" + ] + }, + "op": "==", + "jsonValue": "4" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-offset-limit-last-wins.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-offset-limit-last-wins.json new file mode 100644 index 000000000000..8788826081ef --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-offset-limit-last-wins.json @@ -0,0 +1,34 @@ +{ + "tests": [ + { + "description": "query: multiple Offset and Limit clauses", + "comment": "With multiple Offset or Limit clauses, the last one wins.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "offset": 2 + }, + { + "limit": 3 + }, + { + "limit": 4 + }, + { + "offset": 5 + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "offset": 5, + "limit": 4 + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-offset-limit.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-offset-limit.json new file mode 100644 index 000000000000..3429dce0e89d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-offset-limit.json @@ -0,0 +1,28 @@ +{ + "tests": [ + { + "description": "query: Offset and Limit clauses", + "comment": "Offset and Limit clauses.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "offset": 2 + }, + { + "limit": 3 + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "offset": 2, + "limit": 3 + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-order.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-order.json new file mode 100644 index 000000000000..f6670f060db9 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-order.json @@ -0,0 +1,54 @@ +{ + "tests": [ + { + "description": "query: basic OrderBy clauses", + "comment": "Multiple OrderBy clauses combine.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "b" + ] + }, + "direction": "asc" + } + }, + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "desc" + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "orderBy": [ + { + "field": { + "fieldPath": "b" + }, + "direction": "ASCENDING" + }, + { + "field": { + "fieldPath": "a" + }, + "direction": "DESCENDING" + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select-empty.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select-empty.json new file mode 100644 index 000000000000..8dda741a63e8 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select-empty.json @@ -0,0 +1,32 @@ +{ + "tests": [ + { + "description": "query: empty Select clause", + "comment": "An empty Select clause selects just the document ID.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "select": { + "fields": [] + } + } + ], + "query": { + "select": { + "fields": [ + { + "fieldPath": "__name__" + } + ] + }, + "from": [ + { + "collectionId": "C" + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select-last-wins.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select-last-wins.json new file mode 100644 index 000000000000..9df4d13d054c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select-last-wins.json @@ -0,0 +1,54 @@ +{ + "tests": [ + { + "description": "query: two Select clauses", + "comment": "The last Select clause is the only one used.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "select": { + "fields": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ] + } + }, + { + "select": { + "fields": [ + { + "field": [ + "c" + ] + } + ] + } + } + ], + "query": { + "select": { + "fields": [ + { + "fieldPath": "c" + } + ] + }, + "from": [ + { + "collectionId": "C" + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select.json new file mode 100644 index 000000000000..cfaab8f1f55a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-select.json @@ -0,0 +1,46 @@ +{ + "tests": [ + { + "description": "query: Select clause with some fields", + "comment": "An ordinary Select clause.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "select": { + "fields": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ] + } + } + ], + "query": { + "select": { + "fields": [ + { + "fieldPath": "a" + }, + { + "fieldPath": "b" + } + ] + }, + "from": [ + { + "collectionId": "C" + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-st-cursor.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-st-cursor.json new file mode 100644 index 000000000000..d42416ee1dd8 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-st-cursor.json @@ -0,0 +1,31 @@ +{ + "tests": [ + { + "description": "query: ServerTimestamp in cursor method", + "comment": "Sentinel values are not permitted in queries.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "orderBy": { + "path": { + "field": [ + "a" + ] + }, + "direction": "asc" + } + }, + { + "endBefore": { + "jsonValues": [ + "\"ServerTimestamp\"" + ] + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-st-where.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-st-where.json new file mode 100644 index 000000000000..1584bb9b47b5 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-st-where.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "query: ServerTimestamp in Where", + "comment": "Sentinel values are not permitted in queries.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "==", + "jsonValue": "\"ServerTimestamp\"" + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-2.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-2.json new file mode 100644 index 000000000000..a78beb264642 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-2.json @@ -0,0 +1,71 @@ +{ + "tests": [ + { + "description": "query: two Where clauses", + "comment": "Multiple Where clauses are combined into a composite filter.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "\u003e=", + "jsonValue": "5" + } + }, + { + "where": { + "path": { + "field": [ + "b" + ] + }, + "op": "\u003c", + "jsonValue": "\"foo\"" + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "where": { + "compositeFilter": { + "op": "AND", + "filters": [ + { + "fieldFilter": { + "field": { + "fieldPath": "a" + }, + "op": "GREATER_THAN_OR_EQUAL", + "value": { + "integerValue": "5" + } + } + }, + { + "fieldFilter": { + "field": { + "fieldPath": "b" + }, + "op": "LESS_THAN", + "value": { + "stringValue": "foo" + } + } + } + ] + } + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-NaN.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-NaN.json new file mode 100644 index 000000000000..c091fe5c091c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-NaN.json @@ -0,0 +1,39 @@ +{ + "tests": [ + { + "description": "query: a Where clause comparing to NaN", + "comment": "A Where clause that tests for equality with NaN results in a unary filter.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "==", + "jsonValue": "\"NaN\"" + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "where": { + "unaryFilter": { + "op": "IS_NAN", + "field": { + "fieldPath": "a" + } + } + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-null.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-null.json new file mode 100644 index 000000000000..6862dd97f6cf --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where-null.json @@ -0,0 +1,39 @@ +{ + "tests": [ + { + "description": "query: a Where clause comparing to null", + "comment": "A Where clause that tests for equality with null results in a unary filter.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "==", + "jsonValue": "null" + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "where": { + "unaryFilter": { + "op": "IS_NULL", + "field": { + "fieldPath": "a" + } + } + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where.json new file mode 100644 index 000000000000..b132c3030f02 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-where.json @@ -0,0 +1,42 @@ +{ + "tests": [ + { + "description": "query: Where clause", + "comment": "A simple Where clause.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "where": { + "path": { + "field": [ + "a" + ] + }, + "op": "\u003e", + "jsonValue": "5" + } + } + ], + "query": { + "from": [ + { + "collectionId": "C" + } + ], + "where": { + "fieldFilter": { + "field": { + "fieldPath": "a" + }, + "op": "GREATER_THAN", + "value": { + "integerValue": "5" + } + } + } + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-wrong-collection.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-wrong-collection.json new file mode 100644 index 000000000000..6a677f53decf --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/query-wrong-collection.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "query: doc snapshot with wrong collection in cursor method", + "comment": "If a document snapshot is passed to a Start*/End* method, it must be in the\nsame collection as the query.", + "query": { + "collPath": "projects/projectID/databases/(default)/documents/C", + "clauses": [ + { + "endBefore": { + "docSnapshot": { + "path": "projects/projectID/databases/(default)/documents/C2/D", + "jsonData": "{\"a\": 7, \"b\": 8}" + } + } + } + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-all-transforms.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-all-transforms.json new file mode 100644 index 000000000000..5c8b1373d4c0 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-all-transforms.json @@ -0,0 +1,70 @@ +{ + "tests": [ + { + "description": "set: all transforms in a single call", + "comment": "A document can be created with any amount of transforms.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\", \"c\": [\"ArrayUnion\", 1, 2, 3], \"d\": [\"ArrayRemove\", 4, 5, 6]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + }, + { + "fieldPath": "c", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "d", + "removeAllFromArray": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-multi.json new file mode 100644 index 000000000000..3ea9b0dbd8a8 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-multi.json @@ -0,0 +1,66 @@ +{ + "tests": [ + { + "description": "set: multiple ArrayRemove fields", + "comment": "A document can have more than one ArrayRemove field.\nSince all the ArrayRemove fields are removed, the only field in the update is \"a\".", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayRemove\", 1, 2, 3], \"c\": {\"d\": [\"ArrayRemove\", 4, 5, 6]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "c.d", + "removeAllFromArray": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-nested.json new file mode 100644 index 000000000000..4db133f2c54c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-nested.json @@ -0,0 +1,50 @@ +{ + "tests": [ + { + "description": "set: nested ArrayRemove field", + "comment": "An ArrayRemove value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": {\"c\": [\"ArrayRemove\", 1, 2, 3]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-noarray-nested.json new file mode 100644 index 000000000000..96965faa660d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: ArrayRemove cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ArrayRemove. Firestore transforms don't support array indexing.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": [\"ArrayRemove\", 1, 2, 3]}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-noarray.json new file mode 100644 index 000000000000..cd0e04468bdf --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: ArrayRemove cannot be in an array value", + "comment": "ArrayRemove must be the value of a field. Firestore\ntransforms don't support array indexing.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, [\"ArrayRemove\", 1, 2, 3]]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-with-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-with-st.json new file mode 100644 index 000000000000..146e41fdf439 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove-with-st.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: The ServerTimestamp sentinel cannot be in an ArrayUnion", + "comment": "The ServerTimestamp sentinel must be the value of a field. It may\nnot appear in an ArrayUnion.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [\"ArrayRemove\", 1, \"ServerTimestamp\", 3]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove.json new file mode 100644 index 000000000000..18969ef80a5f --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayremove.json @@ -0,0 +1,50 @@ +{ + "tests": [ + { + "description": "set: ArrayRemove with data", + "comment": "A key with ArrayRemove is removed from the data in the update \noperation. Instead it appears in a separate Transform operation.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayRemove\", 1, 2, 3]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-multi.json new file mode 100644 index 000000000000..3d076397c5ff --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-multi.json @@ -0,0 +1,66 @@ +{ + "tests": [ + { + "description": "set: multiple ArrayUnion fields", + "comment": "A document can have more than one ArrayUnion field.\nSince all the ArrayUnion fields are removed, the only field in the update is \"a\".", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayUnion\", 1, 2, 3], \"c\": {\"d\": [\"ArrayUnion\", 4, 5, 6]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "c.d", + "appendMissingElements": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-nested.json new file mode 100644 index 000000000000..e265f6c61375 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-nested.json @@ -0,0 +1,50 @@ +{ + "tests": [ + { + "description": "set: nested ArrayUnion field", + "comment": "An ArrayUnion value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": {\"c\": [\"ArrayUnion\", 1, 2, 3]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-noarray-nested.json new file mode 100644 index 000000000000..c9b1385e03ad --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: ArrayUnion cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ArrayUnion. Firestore transforms don't support array indexing.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": [\"ArrayUnion\", 1, 2, 3]}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-noarray.json new file mode 100644 index 000000000000..4379578bd838 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: ArrayUnion cannot be in an array value", + "comment": "ArrayUnion must be the value of a field. Firestore\ntransforms don't support array indexing.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, [\"ArrayRemove\", 1, 2, 3]]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-with-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-with-st.json new file mode 100644 index 000000000000..d65436af2055 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion-with-st.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: The ServerTimestamp sentinel cannot be in an ArrayUnion", + "comment": "The ServerTimestamp sentinel must be the value of a field. It may\nnot appear in an ArrayUnion.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [\"ArrayUnion\", 1, \"ServerTimestamp\", 3]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion.json new file mode 100644 index 000000000000..856e07517327 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-arrayunion.json @@ -0,0 +1,50 @@ +{ + "tests": [ + { + "description": "set: ArrayUnion with data", + "comment": "A key with ArrayUnion is removed from the data in the update \noperation. Instead it appears in a separate Transform operation.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayUnion\", 1, 2, 3]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-basic.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-basic.json new file mode 100644 index 000000000000..f322509126d3 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-basic.json @@ -0,0 +1,27 @@ +{ + "tests": [ + { + "description": "set: basic", + "comment": "A simple call, resulting in a single update operation.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-complex.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-complex.json new file mode 100644 index 000000000000..aa871ddae6c7 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-complex.json @@ -0,0 +1,60 @@ +{ + "tests": [ + { + "description": "set: complex", + "comment": "A call to a write method with complicated input data.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2.5], \"b\": {\"c\": [\"three\", {\"d\": true}]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "arrayValue": { + "values": [ + { + "integerValue": "1" + }, + { + "doubleValue": 2.5 + } + ] + } + }, + "b": { + "mapValue": { + "fields": { + "c": { + "arrayValue": { + "values": [ + { + "stringValue": "three" + }, + { + "mapValue": { + "fields": { + "d": { + "booleanValue": true + } + } + } + } + ] + } + } + } + } + } + } + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-merge-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-merge-alone.json new file mode 100644 index 000000000000..7a8ba5d5458c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-merge-alone.json @@ -0,0 +1,37 @@ +{ + "tests": [ + { + "description": "set-merge: Delete with merge", + "comment": "A Delete sentinel can appear with a merge option. If the delete\npaths are the only ones to be merged, then no document is sent, just an update mask.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "b", + "c" + ] + } + ] + }, + "jsonData": "{\"a\": 1, \"b\": {\"c\": \"Delete\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d" + }, + "updateMask": { + "fieldPaths": [ + "b.c" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-merge.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-merge.json new file mode 100644 index 000000000000..6a5759c12555 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-merge.json @@ -0,0 +1,48 @@ +{ + "tests": [ + { + "description": "set-merge: Delete with merge", + "comment": "A Delete sentinel can appear with a merge option.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b", + "c" + ] + } + ] + }, + "jsonData": "{\"a\": 1, \"b\": {\"c\": \"Delete\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b.c" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-mergeall.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-mergeall.json new file mode 100644 index 000000000000..6106a3e4f229 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-mergeall.json @@ -0,0 +1,36 @@ +{ + "tests": [ + { + "description": "set: Delete with MergeAll", + "comment": "A Delete sentinel can appear with a mergeAll option.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "all": true + }, + "jsonData": "{\"a\": 1, \"b\": {\"c\": \"Delete\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b.c" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-noarray-nested.json new file mode 100644 index 000000000000..5a2303284e48 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: Delete cannot be anywhere inside an array value", + "comment": "The Delete sentinel must be the value of a field. Deletes are implemented\nby turning the path to the Delete sentinel into a FieldPath, and FieldPaths do not support\narray indexing.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": \"Delete\"}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-noarray.json new file mode 100644 index 000000000000..dee9c75f6972 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: Delete cannot be in an array value", + "comment": "The Delete sentinel must be the value of a field. Deletes are\nimplemented by turning the path to the Delete sentinel into a FieldPath, and FieldPaths\ndo not support array indexing.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, \"Delete\"]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-nomerge.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-nomerge.json new file mode 100644 index 000000000000..67e3b74b8607 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-nomerge.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "set-merge: Delete cannot appear in an unmerged field", + "comment": "The client signals an error if the Delete sentinel is in the\ninput data, but not selected by a merge option, because this is most likely a programming\nbug.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "a" + ] + } + ] + }, + "jsonData": "{\"a\": 1, \"b\": \"Delete\"}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-nonleaf.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-nonleaf.json new file mode 100644 index 000000000000..67c864957ca8 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-nonleaf.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "set-merge: Delete cannot appear as part of a merge path", + "comment": "If a Delete is part of the value at a merge path, then the user is\nconfused: their merge path says \"replace this entire value\" but their Delete says\n\"delete this part of the value\". This should be an error, just as if they specified Delete\nin a Set with no merge.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "h" + ] + } + ] + }, + "jsonData": "{\"h\": {\"g\": \"Delete\"}}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-wo-merge.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-wo-merge.json new file mode 100644 index 000000000000..32d860a626df --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-del-wo-merge.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: Delete cannot appear unless a merge option is specified", + "comment": "Without a merge option, Set replaces the document with the input\ndata. A Delete sentinel in the data makes no sense in this case.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"Delete\"}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-empty.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-empty.json new file mode 100644 index 000000000000..924992caf308 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-empty.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "set: creating or setting an empty map", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": {} + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-fp.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-fp.json new file mode 100644 index 000000000000..8a5b0faa6e2a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-fp.json @@ -0,0 +1,48 @@ +{ + "tests": [ + { + "description": "set-merge: Merge with FieldPaths", + "comment": "A merge with fields that use special characters.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "*", + "~" + ] + } + ] + }, + "jsonData": "{\"*\": {\"~\": true}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "*": { + "mapValue": { + "fields": { + "~": { + "booleanValue": true + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "`*`.`~`" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-nested.json new file mode 100644 index 000000000000..8ebec8fda277 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-nested.json @@ -0,0 +1,48 @@ +{ + "tests": [ + { + "description": "set-merge: Merge with a nested field", + "comment": "A merge option where the field is not at top level.\nOnly fields mentioned in the option are present in the update operation.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "h", + "g" + ] + } + ] + }, + "jsonData": "{\"h\": {\"g\": 4, \"f\": 5}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "h": { + "mapValue": { + "fields": { + "g": { + "integerValue": "4" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "h.g" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-nonleaf.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-nonleaf.json new file mode 100644 index 000000000000..d115e12c2abd --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-nonleaf.json @@ -0,0 +1,50 @@ +{ + "tests": [ + { + "description": "set-merge: Merge field is not a leaf", + "comment": "If a field path is in a merge option, the value at that path\nreplaces the stored value. That is true even if the value is complex.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "h" + ] + } + ] + }, + "jsonData": "{\"h\": {\"f\": 5, \"g\": 6}, \"e\": 7}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "h": { + "mapValue": { + "fields": { + "f": { + "integerValue": "5" + }, + "g": { + "integerValue": "6" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "h" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-prefix.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-prefix.json new file mode 100644 index 000000000000..a09e4db50985 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-prefix.json @@ -0,0 +1,28 @@ +{ + "tests": [ + { + "description": "set-merge: One merge path cannot be the prefix of another", + "comment": "The prefix would make the other path meaningless, so this is\nprobably a programming error.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "a", + "b" + ] + } + ] + }, + "jsonData": "{\"a\": {\"b\": 1}}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-present.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-present.json new file mode 100644 index 000000000000..b501b23d03f5 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge-present.json @@ -0,0 +1,27 @@ +{ + "tests": [ + { + "description": "set-merge: Merge fields must all be present in data", + "comment": "The client signals an error if a merge option mentions a path\nthat is not in the input data.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "b" + ] + }, + { + "field": [ + "a" + ] + } + ] + }, + "jsonData": "{\"a\": 1}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge.json new file mode 100644 index 000000000000..8ce730e840ad --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-merge.json @@ -0,0 +1,41 @@ +{ + "tests": [ + { + "description": "set-merge: Merge with a field", + "comment": "Fields in the input data but not in a merge option are pruned.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "a" + ] + } + ] + }, + "jsonData": "{\"a\": 1, \"b\": 2}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall-empty.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall-empty.json new file mode 100644 index 000000000000..e541ad8c9a7d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall-empty.json @@ -0,0 +1,29 @@ +{ + "tests": [ + { + "description": "set: MergeAll can be specified with empty data.", + "comment": "This is a valid call that can be used to ensure a document exists.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "all": true + }, + "jsonData": "{}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": {} + }, + "updateMask": { + "fieldPaths": [] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall-nested.json new file mode 100644 index 000000000000..c70ec691e29a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall-nested.json @@ -0,0 +1,45 @@ +{ + "tests": [ + { + "description": "set: MergeAll with nested fields", + "comment": "MergeAll with nested fields results in an update mask that\nincludes entries for all the leaf fields.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "all": true + }, + "jsonData": "{\"h\": { \"g\": 3, \"f\": 4 }}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "h": { + "mapValue": { + "fields": { + "f": { + "integerValue": "4" + }, + "g": { + "integerValue": "3" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "h.f", + "h.g" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall.json new file mode 100644 index 000000000000..55a2377cb51d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-mergeall.json @@ -0,0 +1,39 @@ +{ + "tests": [ + { + "description": "set: MergeAll", + "comment": "The MergeAll option with a simple piece of data.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "all": true + }, + "jsonData": "{\"a\": 1, \"b\": 2}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + }, + "b": { + "integerValue": "2" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-nodel.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-nodel.json new file mode 100644 index 000000000000..5580bc04f64c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-nodel.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: Delete cannot appear in data", + "comment": "The Delete sentinel cannot be used in Create, or in Set without a Merge option.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"Delete\"}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-nosplit.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-nosplit.json new file mode 100644 index 000000000000..3866027b9b58 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-nosplit.json @@ -0,0 +1,36 @@ +{ + "tests": [ + { + "description": "set: don’t split on dots", + "comment": "Create and Set treat their map keys literally. They do not split on dots.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{ \"a.b\": { \"c.d\": 1 }, \"e\": 2 }", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a.b": { + "mapValue": { + "fields": { + "c.d": { + "integerValue": "1" + } + } + } + }, + "e": { + "integerValue": "2" + } + } + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-special-chars.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-special-chars.json new file mode 100644 index 000000000000..865ffcd9dc76 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-special-chars.json @@ -0,0 +1,36 @@ +{ + "tests": [ + { + "description": "set: non-alpha characters in map keys", + "comment": "Create and Set treat their map keys literally. They do not escape special characters.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{ \"*\": { \".\": 1 }, \"~\": 2 }", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "*": { + "mapValue": { + "fields": { + ".": { + "integerValue": "1" + } + } + } + }, + "~": { + "integerValue": "2" + } + } + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-alone-mergeall.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-alone-mergeall.json new file mode 100644 index 000000000000..d95bf0973b79 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-alone-mergeall.json @@ -0,0 +1,31 @@ +{ + "tests": [ + { + "description": "set: ServerTimestamp alone with MergeAll", + "comment": "If the only values in the input are ServerTimestamps, then no\nupdate operation should be produced.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "all": true + }, + "jsonData": "{\"a\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-alone.json new file mode 100644 index 000000000000..3fe931394b0e --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-alone.json @@ -0,0 +1,34 @@ +{ + "tests": [ + { + "description": "set: ServerTimestamp alone", + "comment": "If the only values in the input are ServerTimestamps, then\nan update operation with an empty map should be produced.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": {} + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-both.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-both.json new file mode 100644 index 000000000000..a39ada55f738 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-both.json @@ -0,0 +1,57 @@ +{ + "tests": [ + { + "description": "set-merge: ServerTimestamp with Merge of both fields", + "comment": "Just as when no merge option is specified, ServerTimestamp\nsentinel values are removed from the data in the update operation and become\ntransforms.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ] + }, + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nonleaf-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nonleaf-alone.json new file mode 100644 index 000000000000..4193b00ea683 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nonleaf-alone.json @@ -0,0 +1,47 @@ +{ + "tests": [ + { + "description": "set-merge: non-leaf merge field with ServerTimestamp alone", + "comment": "If a field path is in a merge option, the value at that path\nreplaces the stored value. If the value has only ServerTimestamps, they become transforms\nand we clear the value by including the field path in the update mask.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "h" + ] + } + ] + }, + "jsonData": "{\"h\": {\"g\": \"ServerTimestamp\"}, \"e\": 7}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d" + }, + "updateMask": { + "fieldPaths": [ + "h" + ] + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "h.g", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nonleaf.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nonleaf.json new file mode 100644 index 000000000000..5e91d663b8c6 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nonleaf.json @@ -0,0 +1,58 @@ +{ + "tests": [ + { + "description": "set-merge: non-leaf merge field with ServerTimestamp", + "comment": "If a field path is in a merge option, the value at that path\nreplaces the stored value, and ServerTimestamps inside that value become transforms\nas usual.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "h" + ] + } + ] + }, + "jsonData": "{\"h\": {\"f\": 5, \"g\": \"ServerTimestamp\"}, \"e\": 7}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "h": { + "mapValue": { + "fields": { + "f": { + "integerValue": "5" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "h" + ] + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "h.g", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nowrite.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nowrite.json new file mode 100644 index 000000000000..08fa8b52f54b --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-merge-nowrite.json @@ -0,0 +1,37 @@ +{ + "tests": [ + { + "description": "set-merge: If no ordinary values in Merge, no write", + "comment": "If all the fields in the merge option have ServerTimestamp\nvalues, then no update operation is produced, only a transform.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "b" + ] + } + ] + }, + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-mergeall.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-mergeall.json new file mode 100644 index 000000000000..26883c03820d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-mergeall.json @@ -0,0 +1,46 @@ +{ + "tests": [ + { + "description": "set: ServerTimestamp with MergeAll", + "comment": "Just as when no merge option is specified, ServerTimestamp\nsentinel values are removed from the data in the update operation and become\ntransforms.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "all": true + }, + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-multi.json new file mode 100644 index 000000000000..23c06f4976f7 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-multi.json @@ -0,0 +1,42 @@ +{ + "tests": [ + { + "description": "set: multiple ServerTimestamp fields", + "comment": "A document can have more than one ServerTimestamp field.\nSince all the ServerTimestamp fields are removed, the only field in the update is \"a\".", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\", \"c\": {\"d\": \"ServerTimestamp\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + }, + { + "fieldPath": "c.d", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-nested.json new file mode 100644 index 000000000000..5c94c33f943d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-nested.json @@ -0,0 +1,38 @@ +{ + "tests": [ + { + "description": "set: nested ServerTimestamp field", + "comment": "A ServerTimestamp value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": {\"c\": \"ServerTimestamp\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-noarray-nested.json new file mode 100644 index 000000000000..5ad6a50897ba --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: ServerTimestamp cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ServerTimestamp sentinel. Firestore transforms don't support array indexing.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": \"ServerTimestamp\"}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-noarray.json new file mode 100644 index 000000000000..76a2881cb61b --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "set: ServerTimestamp cannot be in an array value", + "comment": "The ServerTimestamp sentinel must be the value of a field. Firestore\ntransforms don't support array indexing.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, \"ServerTimestamp\"]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-nomerge.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-nomerge.json new file mode 100644 index 000000000000..0523ed74fb44 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-nomerge.json @@ -0,0 +1,41 @@ +{ + "tests": [ + { + "description": "set-merge: If is ServerTimestamp not in Merge, no transform", + "comment": "If the ServerTimestamp value is not mentioned in a merge option,\nthen it is pruned from the data but does not result in a transform.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "option": { + "fields": [ + { + "field": [ + "a" + ] + } + ] + }, + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-with-empty-map.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-with-empty-map.json new file mode 100644 index 000000000000..063c94a0e6cd --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st-with-empty-map.json @@ -0,0 +1,46 @@ +{ + "tests": [ + { + "description": "set: ServerTimestamp beside an empty map", + "comment": "When a ServerTimestamp and a map both reside inside a map, the\nServerTimestamp should be stripped out but the empty map should remain.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": {\"b\": {}, \"c\": \"ServerTimestamp\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "mapValue": { + "fields": { + "b": { + "mapValue": { + "fields": {} + } + } + } + } + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st.json new file mode 100644 index 000000000000..42f2b14f1c7f --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/set-st.json @@ -0,0 +1,38 @@ +{ + "tests": [ + { + "description": "set: ServerTimestamp with data", + "comment": "A key with the special ServerTimestamp sentinel is removed from\nthe data in the update operation. Instead it appears in a separate Transform operation.\nNote that in these tests, the string \"ServerTimestamp\" should be replaced with the\nspecial ServerTimestamp value.", + "set": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-all-transforms.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-all-transforms.json new file mode 100644 index 000000000000..6f6a725df0fc --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-all-transforms.json @@ -0,0 +1,78 @@ +{ + "tests": [ + { + "description": "update: all transforms in a single call", + "comment": "A document can be created with any amount of transforms.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\", \"c\": [\"ArrayUnion\", 1, 2, 3], \"d\": [\"ArrayRemove\", 4, 5, 6]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + }, + { + "fieldPath": "c", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "d", + "removeAllFromArray": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-alone.json new file mode 100644 index 000000000000..86fc8802e52e --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-alone.json @@ -0,0 +1,43 @@ +{ + "tests": [ + { + "description": "update: ArrayRemove alone", + "comment": "If the only values in the input are ArrayRemove, then no\nupdate operation should be produced.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [\"ArrayRemove\", 1, 2, 3]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-multi.json new file mode 100644 index 000000000000..df880f6792b9 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-multi.json @@ -0,0 +1,75 @@ +{ + "tests": [ + { + "description": "update: multiple ArrayRemove fields", + "comment": "A document can have more than one ArrayRemove field.\nSince all the ArrayRemove fields are removed, the only field in the update is \"a\".", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayRemove\", 1, 2, 3], \"c\": {\"d\": [\"ArrayRemove\", 4, 5, 6]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "c" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "c.d", + "removeAllFromArray": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-nested.json new file mode 100644 index 000000000000..28d59aff661f --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-nested.json @@ -0,0 +1,59 @@ +{ + "tests": [ + { + "description": "update: nested ArrayRemove field", + "comment": "An ArrayRemove value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": {\"c\": [\"ArrayRemove\", 1, 2, 3]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-noarray-nested.json new file mode 100644 index 000000000000..842c5fe3240c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: ArrayRemove cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ArrayRemove. Firestore transforms don't support array indexing.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": [\"ArrayRemove\", 1, 2, 3]}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-noarray.json new file mode 100644 index 000000000000..0a371f055488 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: ArrayRemove cannot be in an array value", + "comment": "ArrayRemove must be the value of a field. Firestore\ntransforms don't support array indexing.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, [\"ArrayRemove\", 1, 2, 3]]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-with-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-with-st.json new file mode 100644 index 000000000000..9d110de9caea --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove-with-st.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: The ServerTimestamp sentinel cannot be in an ArrayUnion", + "comment": "The ServerTimestamp sentinel must be the value of a field. It may\nnot appear in an ArrayUnion.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [\"ArrayRemove\", 1, \"ServerTimestamp\", 3]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove.json new file mode 100644 index 000000000000..d925704db63b --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayremove.json @@ -0,0 +1,58 @@ +{ + "tests": [ + { + "description": "update: ArrayRemove with data", + "comment": "A key with ArrayRemove is removed from the data in the update \noperation. Instead it appears in a separate Transform operation.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayRemove\", 1, 2, 3]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-alone.json new file mode 100644 index 000000000000..757ea48c3b7f --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-alone.json @@ -0,0 +1,43 @@ +{ + "tests": [ + { + "description": "update: ArrayUnion alone", + "comment": "If the only values in the input are ArrayUnion, then no\nupdate operation should be produced.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [\"ArrayUnion\", 1, 2, 3]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-multi.json new file mode 100644 index 000000000000..3aafcd0f3545 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-multi.json @@ -0,0 +1,75 @@ +{ + "tests": [ + { + "description": "update: multiple ArrayUnion fields", + "comment": "A document can have more than one ArrayUnion field.\nSince all the ArrayUnion fields are removed, the only field in the update is \"a\".", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayUnion\", 1, 2, 3], \"c\": {\"d\": [\"ArrayUnion\", 4, 5, 6]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "c" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "c.d", + "appendMissingElements": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-nested.json new file mode 100644 index 000000000000..f2bf3770dc77 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-nested.json @@ -0,0 +1,59 @@ +{ + "tests": [ + { + "description": "update: nested ArrayUnion field", + "comment": "An ArrayUnion value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": {\"c\": [\"ArrayUnion\", 1, 2, 3]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-noarray-nested.json new file mode 100644 index 000000000000..08745a08b07b --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: ArrayUnion cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ArrayUnion. Firestore transforms don't support array indexing.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": [\"ArrayUnion\", 1, 2, 3]}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-noarray.json new file mode 100644 index 000000000000..284f42800eba --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: ArrayUnion cannot be in an array value", + "comment": "ArrayUnion must be the value of a field. Firestore\ntransforms don't support array indexing.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, [\"ArrayRemove\", 1, 2, 3]]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-with-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-with-st.json new file mode 100644 index 000000000000..1c47591e29bc --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion-with-st.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: The ServerTimestamp sentinel cannot be in an ArrayUnion", + "comment": "The ServerTimestamp sentinel must be the value of a field. It may\nnot appear in an ArrayUnion.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [\"ArrayUnion\", 1, \"ServerTimestamp\", 3]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion.json new file mode 100644 index 000000000000..60192c9f8c0b --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-arrayunion.json @@ -0,0 +1,58 @@ +{ + "tests": [ + { + "description": "update: ArrayUnion with data", + "comment": "A key with ArrayUnion is removed from the data in the update \noperation. Instead it appears in a separate Transform operation.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": [\"ArrayUnion\", 1, 2, 3]}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-badchar.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-badchar.json new file mode 100644 index 000000000000..7d5e6e4f07bc --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-badchar.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: invalid character", + "comment": "The keys of the data given to Update are interpreted, unlike those of Create and Set. They cannot contain special characters.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a~b\": 1}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-basic.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-basic.json new file mode 100644 index 000000000000..f864247427e8 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-basic.json @@ -0,0 +1,35 @@ +{ + "tests": [ + { + "description": "update: basic", + "comment": "A simple call, resulting in a single update operation.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-complex.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-complex.json new file mode 100644 index 000000000000..ddf8373367c4 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-complex.json @@ -0,0 +1,69 @@ +{ + "tests": [ + { + "description": "update: complex", + "comment": "A call to a write method with complicated input data.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2.5], \"b\": {\"c\": [\"three\", {\"d\": true}]}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "arrayValue": { + "values": [ + { + "integerValue": "1" + }, + { + "doubleValue": 2.5 + } + ] + } + }, + "b": { + "mapValue": { + "fields": { + "c": { + "arrayValue": { + "values": [ + { + "stringValue": "three" + }, + { + "mapValue": { + "fields": { + "d": { + "booleanValue": true + } + } + } + } + ] + } + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-alone.json new file mode 100644 index 000000000000..45598ab40220 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-alone.json @@ -0,0 +1,30 @@ +{ + "tests": [ + { + "description": "update: Delete alone", + "comment": "If the input data consists solely of Deletes, then the update\noperation has no map, just an update mask.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": \"Delete\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d" + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-dot.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-dot.json new file mode 100644 index 000000000000..44f36b0c3e85 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-dot.json @@ -0,0 +1,46 @@ +{ + "tests": [ + { + "description": "update: Delete with a dotted field", + "comment": "After expanding top-level dotted fields, fields with Delete\nvalues are pruned from the output data, but appear in the update mask.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b.c\": \"Delete\", \"b.d\": 2}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + }, + "b": { + "mapValue": { + "fields": { + "d": { + "integerValue": "2" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b.c", + "b.d" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-nested.json new file mode 100644 index 000000000000..18d08f3f004e --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: Delete cannot be nested", + "comment": "The Delete sentinel must be the value of a top-level key.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": {\"b\": \"Delete\"}}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-noarray-nested.json new file mode 100644 index 000000000000..025cbed0dfb3 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: Delete cannot be anywhere inside an array value", + "comment": "The Delete sentinel must be the value of a field. Deletes are implemented\nby turning the path to the Delete sentinel into a FieldPath, and FieldPaths do not support\narray indexing.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": \"Delete\"}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-noarray.json new file mode 100644 index 000000000000..dce3806f2c35 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: Delete cannot be in an array value", + "comment": "The Delete sentinel must be the value of a field. Deletes are\nimplemented by turning the path to the Delete sentinel into a FieldPath, and FieldPaths\ndo not support array indexing.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, \"Delete\"]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del.json new file mode 100644 index 000000000000..26a6a1bc7e43 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-del.json @@ -0,0 +1,36 @@ +{ + "tests": [ + { + "description": "update: Delete", + "comment": "If a field's value is the Delete sentinel, then it doesn't appear\nin the update data, but does in the mask.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"Delete\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-exists-precond.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-exists-precond.json new file mode 100644 index 000000000000..bdbe274b4c23 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-exists-precond.json @@ -0,0 +1,16 @@ +{ + "tests": [ + { + "description": "update: Exists precondition is invalid", + "comment": "The Update method does not support an explicit exists precondition.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "precondition": { + "exists": true + }, + "jsonData": "{\"a\": 1}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-fp-empty-component.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-fp-empty-component.json new file mode 100644 index 000000000000..50274e49ffe2 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-fp-empty-component.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: empty field path component", + "comment": "Empty fields are not allowed.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a..b\": 1}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-nested-transform-and-nested-value.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-nested-transform-and-nested-value.json new file mode 100644 index 000000000000..ff7bfc6ee944 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-nested-transform-and-nested-value.json @@ -0,0 +1,52 @@ +{ + "tests": [ + { + "description": "update: Nested transforms should not affect the field mask, even\nwhen there are other values that do. Transforms should only affect the\nDocumentTransform_FieldTransform list.", + "comment": "For updates, top-level paths in json-like map inputs\nare split on the dot. That is, an input {\"a.b.c\": 7} results in an update to\nfield c of object b of object a with value 7. In order to specify this behavior,\nthe update must use a fieldmask \"a.b.c\". However, fieldmasks are only used for\nconcrete values - transforms are separately encoded in a\nDocumentTransform_FieldTransform array.\n\nThis test exercises a bug found in python (https://github.com/googleapis/google-cloud-python/issues/7215)\nin which nested transforms ({\"a.c\": \"ServerTimestamp\"}) next to nested values\n({\"a.b\": 7}) incorrectly caused the fieldmask \"a\" to be set, which has the\neffect of wiping out all data in \"a\" other than what was specified in the\njson-like input.\n\nInstead, as this test specifies, transforms should not affect the fieldmask.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a.b\": 7, \"a.c\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "mapValue": { + "fields": { + "b": { + "integerValue": "7" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "a.b" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-no-paths.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-no-paths.json new file mode 100644 index 000000000000..6cfbc01dce20 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-no-paths.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: no paths", + "comment": "It is a client-side error to call Update with empty data.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-all-transforms.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-all-transforms.json new file mode 100644 index 000000000000..01a4c1143dc1 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-all-transforms.json @@ -0,0 +1,105 @@ +{ + "tests": [ + { + "description": "update-paths: all transforms in a single call", + "comment": "A document can be created with any amount of transforms.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + }, + { + "field": [ + "c" + ] + }, + { + "field": [ + "d" + ] + } + ], + "jsonValues": [ + "1", + "\"ServerTimestamp\"", + "[\"ArrayUnion\", 1, 2, 3]", + "[\"ArrayRemove\", 4, 5, 6]" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + }, + { + "fieldPath": "c", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "d", + "removeAllFromArray": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-alone.json new file mode 100644 index 000000000000..9bc8a1440137 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-alone.json @@ -0,0 +1,52 @@ +{ + "tests": [ + { + "description": "update-paths: ArrayRemove alone", + "comment": "If the only values in the input are ArrayRemove, then no\nupdate operation should be produced.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[\"ArrayRemove\", 1, 2, 3]" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-multi.json new file mode 100644 index 000000000000..9a8547120e3a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-multi.json @@ -0,0 +1,96 @@ +{ + "tests": [ + { + "description": "update-paths: multiple ArrayRemove fields", + "comment": "A document can have more than one ArrayRemove field.\nSince all the ArrayRemove fields are removed, the only field in the update is \"a\".", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + }, + { + "field": [ + "c" + ] + } + ], + "jsonValues": [ + "1", + "[\"ArrayRemove\", 1, 2, 3]", + "{\"d\": [\"ArrayRemove\", 4, 5, 6]}" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "c" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "c.d", + "removeAllFromArray": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-nested.json new file mode 100644 index 000000000000..e7f952ec3423 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-nested.json @@ -0,0 +1,74 @@ +{ + "tests": [ + { + "description": "update-paths: nested ArrayRemove field", + "comment": "An ArrayRemove value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ], + "jsonValues": [ + "1", + "{\"c\": [\"ArrayRemove\", 1, 2, 3]}" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-noarray-nested.json new file mode 100644 index 000000000000..b669e870cd31 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-noarray-nested.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: ArrayRemove cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ArrayRemove. Firestore transforms don't support array indexing.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[1, {\"b\": [\"ArrayRemove\", 1, 2, 3]}]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-noarray.json new file mode 100644 index 000000000000..ff50e11e4fb2 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-noarray.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: ArrayRemove cannot be in an array value", + "comment": "ArrayRemove must be the value of a field. Firestore\ntransforms don't support array indexing.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[1, 2, [\"ArrayRemove\", 1, 2, 3]]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-with-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-with-st.json new file mode 100644 index 000000000000..d27d26e44664 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove-with-st.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: The ServerTimestamp sentinel cannot be in an ArrayUnion", + "comment": "The ServerTimestamp sentinel must be the value of a field. It may\nnot appear in an ArrayUnion.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[\"ArrayRemove\", 1, \"ServerTimestamp\", 3]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove.json new file mode 100644 index 000000000000..673a2ca2c1af --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayremove.json @@ -0,0 +1,73 @@ +{ + "tests": [ + { + "description": "update-paths: ArrayRemove with data", + "comment": "A key with ArrayRemove is removed from the data in the update \noperation. Instead it appears in a separate Transform operation.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ], + "jsonValues": [ + "1", + "[\"ArrayRemove\", 1, 2, 3]" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "removeAllFromArray": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-alone.json new file mode 100644 index 000000000000..81e1e9771ab7 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-alone.json @@ -0,0 +1,52 @@ +{ + "tests": [ + { + "description": "update-paths: ArrayUnion alone", + "comment": "If the only values in the input are ArrayUnion, then no\nupdate operation should be produced.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[\"ArrayUnion\", 1, 2, 3]" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-multi.json new file mode 100644 index 000000000000..ef421bdad180 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-multi.json @@ -0,0 +1,96 @@ +{ + "tests": [ + { + "description": "update-paths: multiple ArrayUnion fields", + "comment": "A document can have more than one ArrayUnion field.\nSince all the ArrayUnion fields are removed, the only field in the update is \"a\".", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + }, + { + "field": [ + "c" + ] + } + ], + "jsonValues": [ + "1", + "[\"ArrayUnion\", 1, 2, 3]", + "{\"d\": [\"ArrayUnion\", 4, 5, 6]}" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "c" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + }, + { + "fieldPath": "c.d", + "appendMissingElements": { + "values": [ + { + "integerValue": "4" + }, + { + "integerValue": "5" + }, + { + "integerValue": "6" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-nested.json new file mode 100644 index 000000000000..2d73527a4048 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-nested.json @@ -0,0 +1,74 @@ +{ + "tests": [ + { + "description": "update-paths: nested ArrayUnion field", + "comment": "An ArrayUnion value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ], + "jsonValues": [ + "1", + "{\"c\": [\"ArrayUnion\", 1, 2, 3]}" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-noarray-nested.json new file mode 100644 index 000000000000..0e8a634a4417 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-noarray-nested.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: ArrayUnion cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ArrayUnion. Firestore transforms don't support array indexing.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[1, {\"b\": [\"ArrayUnion\", 1, 2, 3]}]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-noarray.json new file mode 100644 index 000000000000..ce45841888fa --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-noarray.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: ArrayUnion cannot be in an array value", + "comment": "ArrayUnion must be the value of a field. Firestore\ntransforms don't support array indexing.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[1, 2, [\"ArrayRemove\", 1, 2, 3]]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-with-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-with-st.json new file mode 100644 index 000000000000..c0a4204182cd --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion-with-st.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: The ServerTimestamp sentinel cannot be in an ArrayUnion", + "comment": "The ServerTimestamp sentinel must be the value of a field. It may\nnot appear in an ArrayUnion.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[\"ArrayUnion\", 1, \"ServerTimestamp\", 3]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion.json new file mode 100644 index 000000000000..1401993d059d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-arrayunion.json @@ -0,0 +1,73 @@ +{ + "tests": [ + { + "description": "update-paths: ArrayUnion with data", + "comment": "A key with ArrayUnion is removed from the data in the update \noperation. Instead it appears in a separate Transform operation.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ], + "jsonValues": [ + "1", + "[\"ArrayUnion\", 1, 2, 3]" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "appendMissingElements": { + "values": [ + { + "integerValue": "1" + }, + { + "integerValue": "2" + }, + { + "integerValue": "3" + } + ] + } + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-basic.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-basic.json new file mode 100644 index 000000000000..bf1164ac410d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-basic.json @@ -0,0 +1,44 @@ +{ + "tests": [ + { + "description": "update-paths: basic", + "comment": "A simple call, resulting in a single update operation.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "1" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-complex.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-complex.json new file mode 100644 index 000000000000..2f3faa7846c6 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-complex.json @@ -0,0 +1,84 @@ +{ + "tests": [ + { + "description": "update-paths: complex", + "comment": "A call to a write method with complicated input data.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ], + "jsonValues": [ + "[1, 2.5]", + "{\"c\": [\"three\", {\"d\": true}]}" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "arrayValue": { + "values": [ + { + "integerValue": "1" + }, + { + "doubleValue": 2.5 + } + ] + } + }, + "b": { + "mapValue": { + "fields": { + "c": { + "arrayValue": { + "values": [ + { + "stringValue": "three" + }, + { + "mapValue": { + "fields": { + "d": { + "booleanValue": true + } + } + } + } + ] + } + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-alone.json new file mode 100644 index 000000000000..e3368c86c376 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-alone.json @@ -0,0 +1,39 @@ +{ + "tests": [ + { + "description": "update-paths: Delete alone", + "comment": "If the input data consists solely of Deletes, then the update\noperation has no map, just an update mask.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "\"Delete\"" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d" + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-nested.json new file mode 100644 index 000000000000..07f9f405ea40 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-nested.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: Delete cannot be nested", + "comment": "The Delete sentinel must be the value of a top-level key.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "{\"b\": \"Delete\"}" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-noarray-nested.json new file mode 100644 index 000000000000..a74c0aeb570c --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-noarray-nested.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: Delete cannot be anywhere inside an array value", + "comment": "The Delete sentinel must be the value of a field. Deletes are implemented\nby turning the path to the Delete sentinel into a FieldPath, and FieldPaths do not support\narray indexing.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[1, {\"b\": \"Delete\"}]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-noarray.json new file mode 100644 index 000000000000..fb6d00b72400 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del-noarray.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: Delete cannot be in an array value", + "comment": "The Delete sentinel must be the value of a field. Deletes are\nimplemented by turning the path to the Delete sentinel into a FieldPath, and FieldPaths\ndo not support array indexing.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[1, 2, \"Delete\"]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del.json new file mode 100644 index 000000000000..cb5f6bedf41e --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-del.json @@ -0,0 +1,51 @@ +{ + "tests": [ + { + "description": "update-paths: Delete", + "comment": "If a field's value is the Delete sentinel, then it doesn't appear\nin the update data, but does in the mask.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ], + "jsonValues": [ + "1", + "\"Delete\"" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-exists-precond.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-exists-precond.json new file mode 100644 index 000000000000..d495db033010 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-exists-precond.json @@ -0,0 +1,25 @@ +{ + "tests": [ + { + "description": "update-paths: Exists precondition is invalid", + "comment": "The Update method does not support an explicit exists precondition.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "precondition": { + "exists": true + }, + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "1" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-del.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-del.json new file mode 100644 index 000000000000..95b787a91363 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-del.json @@ -0,0 +1,59 @@ +{ + "tests": [ + { + "description": "update-paths: field paths with delete", + "comment": "If one nested field is deleted, and another isn't, preserve the second.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "foo", + "bar" + ] + }, + { + "field": [ + "foo", + "delete" + ] + } + ], + "jsonValues": [ + "1", + "\"Delete\"" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "foo": { + "mapValue": { + "fields": { + "bar": { + "integerValue": "1" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "foo.bar", + "foo.delete" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-dup-transforms.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-dup-transforms.json new file mode 100644 index 000000000000..aff02a8d2036 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-dup-transforms.json @@ -0,0 +1,34 @@ +{ + "tests": [ + { + "description": "update-paths: duplicate field path with only transforms", + "comment": "The same field cannot occur more than once, even if all the operations are transforms.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + }, + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[\"ArrayUnion\", 1, 2, 3]", + "\"ServerTimestamp\"", + "[\"ArrayUnion\", 4, 5, 6]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-dup.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-dup.json new file mode 100644 index 000000000000..71bf4d54a2a4 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-dup.json @@ -0,0 +1,34 @@ +{ + "tests": [ + { + "description": "update-paths: duplicate field path", + "comment": "The same field cannot occur more than once.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + }, + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "1", + "2", + "3" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-empty-component.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-empty-component.json new file mode 100644 index 000000000000..161e9f6eff9e --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-empty-component.json @@ -0,0 +1,23 @@ +{ + "tests": [ + { + "description": "update-paths: empty field path component", + "comment": "Empty fields are not allowed.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "*", + "" + ] + } + ], + "jsonValues": [ + "1" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-empty.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-empty.json new file mode 100644 index 000000000000..9424da130565 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-empty.json @@ -0,0 +1,20 @@ +{ + "tests": [ + { + "description": "update-paths: empty field path", + "comment": "A FieldPath of length zero is invalid.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [] + } + ], + "jsonValues": [ + "1" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-multi.json new file mode 100644 index 000000000000..a0afd38b8f26 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-multi.json @@ -0,0 +1,51 @@ +{ + "tests": [ + { + "description": "update-paths: multiple-element field path", + "comment": "The UpdatePaths or equivalent method takes a list of FieldPaths.\nEach FieldPath is a sequence of uninterpreted path components.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a", + "b" + ] + } + ], + "jsonValues": [ + "1" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "mapValue": { + "fields": { + "b": { + "integerValue": "1" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "a.b" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-nosplit.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-nosplit.json new file mode 100644 index 000000000000..23e9ddc9d3ad --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-fp-nosplit.json @@ -0,0 +1,57 @@ +{ + "tests": [ + { + "description": "update-paths: FieldPath elements are not split on dots", + "comment": "FieldPath components are not split on dots.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a.b", + "f.g" + ] + } + ], + "jsonValues": [ + "{\"n.o\": 7}" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a.b": { + "mapValue": { + "fields": { + "f.g": { + "mapValue": { + "fields": { + "n.o": { + "integerValue": "7" + } + } + } + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "`a.b`.`f.g`" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-nested-transform-and-nested-value.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-nested-transform-and-nested-value.json new file mode 100644 index 000000000000..927d783aee46 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-nested-transform-and-nested-value.json @@ -0,0 +1,69 @@ +{ + "tests": [ + { + "description": "update-paths: Nested transforms should not affect the field mask, even\nwhen there are other values that do. Transforms should only affect the\nDocumentTransform_FieldTransform list.", + "comment": "For updates, top-level paths in json-like map inputs\nare split on the dot. That is, an input {\"a.b.c\": 7} results in an update to\nfield c of object b of object a with value 7. In order to specify this behavior,\nthe update must use a fieldmask \"a.b.c\". However, fieldmasks are only used for\nconcrete values - transforms are separately encoded in a\nDocumentTransform_FieldTransform array.\n\nThis test exercises a bug found in python (https://github.com/googleapis/google-cloud-python/issues/7215)\nin which nested transforms ({\"a.c\": \"ServerTimestamp\"}) next to nested values\n({\"a.b\": 7}) incorrectly caused the fieldmask \"a\" to be set, which has the\neffect of wiping out all data in \"a\" other than what was specified in the\njson-like input.\n\nInstead, as this test specifies, transforms should not affect the fieldmask.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a", + "b" + ] + }, + { + "field": [ + "a", + "c" + ] + } + ], + "jsonValues": [ + "7", + "\"ServerTimestamp\"" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "mapValue": { + "fields": { + "b": { + "integerValue": "7" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "a.b" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-no-paths.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-no-paths.json new file mode 100644 index 000000000000..e8ad035eaf13 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-no-paths.json @@ -0,0 +1,12 @@ +{ + "tests": [ + { + "description": "update-paths: no paths", + "comment": "It is a client-side error to call Update with empty data.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-1.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-1.json new file mode 100644 index 000000000000..0bc1c0e812de --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-1.json @@ -0,0 +1,29 @@ +{ + "tests": [ + { + "description": "update-paths: prefix #1", + "comment": "In the input data, one field cannot be a prefix of another.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a", + "b" + ] + }, + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "1", + "2" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-2.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-2.json new file mode 100644 index 000000000000..6f1d152a7077 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-2.json @@ -0,0 +1,29 @@ +{ + "tests": [ + { + "description": "update-paths: prefix #2", + "comment": "In the input data, one field cannot be a prefix of another.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "a", + "b" + ] + } + ], + "jsonValues": [ + "1", + "2" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-3.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-3.json new file mode 100644 index 000000000000..4fe17b292f6a --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-prefix-3.json @@ -0,0 +1,29 @@ +{ + "tests": [ + { + "description": "update-paths: prefix #3", + "comment": "In the input data, one field cannot be a prefix of another, even if the values could in principle be combined.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "a", + "d" + ] + } + ], + "jsonValues": [ + "{\"b\": 1}", + "2" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-special-chars.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-special-chars.json new file mode 100644 index 000000000000..83b27d8dbfde --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-special-chars.json @@ -0,0 +1,62 @@ +{ + "tests": [ + { + "description": "update-paths: special characters", + "comment": "FieldPaths can contain special characters.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "*", + "~" + ] + }, + { + "field": [ + "*", + "`" + ] + } + ], + "jsonValues": [ + "1", + "2" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "*": { + "mapValue": { + "fields": { + "`": { + "integerValue": "2" + }, + "~": { + "integerValue": "1" + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "`*`.`\\``", + "`*`.`~`" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-alone.json new file mode 100644 index 000000000000..085d04987713 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-alone.json @@ -0,0 +1,40 @@ +{ + "tests": [ + { + "description": "update-paths: ServerTimestamp alone", + "comment": "If the only values in the input are ServerTimestamps, then no\nupdate operation should be produced.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "\"ServerTimestamp\"" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a", + "setToServerValue": "REQUEST_TIME" + } + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-multi.json new file mode 100644 index 000000000000..2d813801ac33 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-multi.json @@ -0,0 +1,72 @@ +{ + "tests": [ + { + "description": "update-paths: multiple ServerTimestamp fields", + "comment": "A document can have more than one ServerTimestamp field.\nSince all the ServerTimestamp fields are removed, the only field in the update is \"a\".", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + }, + { + "field": [ + "c" + ] + } + ], + "jsonValues": [ + "1", + "\"ServerTimestamp\"", + "{\"d\": \"ServerTimestamp\"}" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "c" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + }, + { + "fieldPath": "c.d", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-nested.json new file mode 100644 index 000000000000..8bd35c9111b1 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-nested.json @@ -0,0 +1,62 @@ +{ + "tests": [ + { + "description": "update-paths: nested ServerTimestamp field", + "comment": "A ServerTimestamp value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ], + "jsonValues": [ + "1", + "{\"c\": \"ServerTimestamp\"}" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-noarray-nested.json new file mode 100644 index 000000000000..2dd1bcacc775 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-noarray-nested.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: ServerTimestamp cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ServerTimestamp sentinel. Firestore transforms don't support array indexing.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[1, {\"b\": \"ServerTimestamp\"}]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-noarray.json new file mode 100644 index 000000000000..5da60306bc25 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-noarray.json @@ -0,0 +1,22 @@ +{ + "tests": [ + { + "description": "update-paths: ServerTimestamp cannot be in an array value", + "comment": "The ServerTimestamp sentinel must be the value of a field. Firestore\ntransforms don't support array indexing.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "[1, 2, \"ServerTimestamp\"]" + ], + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-with-empty-map.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-with-empty-map.json new file mode 100644 index 000000000000..ac60b2771d37 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st-with-empty-map.json @@ -0,0 +1,63 @@ +{ + "tests": [ + { + "description": "update-paths: ServerTimestamp beside an empty map", + "comment": "When a ServerTimestamp and a map both reside inside a map, the\nServerTimestamp should be stripped out but the empty map should remain.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "{\"b\": {}, \"c\": \"ServerTimestamp\"}" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "mapValue": { + "fields": { + "b": { + "mapValue": { + "fields": {} + } + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st.json new file mode 100644 index 000000000000..011405b9bf7b --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-st.json @@ -0,0 +1,61 @@ +{ + "tests": [ + { + "description": "update-paths: ServerTimestamp with data", + "comment": "A key with the special ServerTimestamp sentinel is removed from\nthe data in the update operation. Instead it appears in a separate Transform operation.\nNote that in these tests, the string \"ServerTimestamp\" should be replaced with the\nspecial ServerTimestamp value.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "fieldPaths": [ + { + "field": [ + "a" + ] + }, + { + "field": [ + "b" + ] + } + ], + "jsonValues": [ + "1", + "\"ServerTimestamp\"" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-uptime.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-uptime.json new file mode 100644 index 000000000000..96801a0cd8e7 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-paths-uptime.json @@ -0,0 +1,47 @@ +{ + "tests": [ + { + "description": "update-paths: last-update-time precondition", + "comment": "The Update call supports a last-update-time precondition.", + "updatePaths": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "precondition": { + "updateTime": "1970-01-01T00:00:42Z" + }, + "fieldPaths": [ + { + "field": [ + "a" + ] + } + ], + "jsonValues": [ + "1" + ], + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "updateTime": "1970-01-01T00:00:42Z" + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-1.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-1.json new file mode 100644 index 000000000000..faad69d140bc --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-1.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: prefix #1", + "comment": "In the input data, one field cannot be a prefix of another.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a.b\": 1, \"a\": 2}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-2.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-2.json new file mode 100644 index 000000000000..96545c134867 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-2.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: prefix #2", + "comment": "In the input data, one field cannot be a prefix of another.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"a.b\": 2}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-3.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-3.json new file mode 100644 index 000000000000..95f7024966c7 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-prefix-3.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: prefix #3", + "comment": "In the input data, one field cannot be a prefix of another, even if the values could in principle be combined.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": {\"b\": 1}, \"a.d\": 2}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-quoting.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-quoting.json new file mode 100644 index 000000000000..10e3c35c22ca --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-quoting.json @@ -0,0 +1,47 @@ +{ + "tests": [ + { + "description": "update: non-letter starting chars are quoted, except underscore", + "comment": "In a field path, any component beginning with a non-letter or underscore is quoted.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"_0.1.+2\": 1}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "_0": { + "mapValue": { + "fields": { + "1": { + "mapValue": { + "fields": { + "+2": { + "integerValue": "1" + } + } + } + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "_0.`1`.`+2`" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-split-top-level.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-split-top-level.json new file mode 100644 index 000000000000..eddf360d3731 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-split-top-level.json @@ -0,0 +1,47 @@ +{ + "tests": [ + { + "description": "update: Split on dots for top-level keys only", + "comment": "The Update method splits only top-level keys at dots. Keys at\nother levels are taken literally.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"h.g\": {\"j.k\": 6}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "h": { + "mapValue": { + "fields": { + "g": { + "mapValue": { + "fields": { + "j.k": { + "integerValue": "6" + } + } + } + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "h.g" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-split.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-split.json new file mode 100644 index 000000000000..e18c78bf6e61 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-split.json @@ -0,0 +1,47 @@ +{ + "tests": [ + { + "description": "update: split on dots", + "comment": "The Update method splits top-level keys at dots.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a.b.c\": 1}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "mapValue": { + "fields": { + "b": { + "mapValue": { + "fields": { + "c": { + "integerValue": "1" + } + } + } + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "a.b.c" + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-alone.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-alone.json new file mode 100644 index 000000000000..1a333f30cbb6 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-alone.json @@ -0,0 +1,31 @@ +{ + "tests": [ + { + "description": "update: ServerTimestamp alone", + "comment": "If the only values in the input are ServerTimestamps, then no\nupdate operation should be produced.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a", + "setToServerValue": "REQUEST_TIME" + } + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-dot.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-dot.json new file mode 100644 index 000000000000..83422ca5271f --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-dot.json @@ -0,0 +1,31 @@ +{ + "tests": [ + { + "description": "update: ServerTimestamp with dotted field", + "comment": "Like other uses of ServerTimestamp, the data is pruned and the\nfield does not appear in the update mask, because it is in the transform. In this case\nAn update operation is produced just to hold the precondition.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a.b.c\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a.b.c", + "setToServerValue": "REQUEST_TIME" + } + ] + }, + "currentDocument": { + "exists": true + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-multi.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-multi.json new file mode 100644 index 000000000000..8105ec27f543 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-multi.json @@ -0,0 +1,51 @@ +{ + "tests": [ + { + "description": "update: multiple ServerTimestamp fields", + "comment": "A document can have more than one ServerTimestamp field.\nSince all the ServerTimestamp fields are removed, the only field in the update is \"a\".", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\", \"c\": {\"d\": \"ServerTimestamp\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "c" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + }, + { + "fieldPath": "c.d", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-nested.json new file mode 100644 index 000000000000..5a8e73237c34 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-nested.json @@ -0,0 +1,47 @@ +{ + "tests": [ + { + "description": "update: nested ServerTimestamp field", + "comment": "A ServerTimestamp value can occur at any depth. In this case,\nthe transform applies to the field path \"b.c\". Since \"c\" is removed from the update,\n\"b\" becomes empty, so it is also removed from the update.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": {\"c\": \"ServerTimestamp\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a", + "b" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-noarray-nested.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-noarray-nested.json new file mode 100644 index 000000000000..9f94501aa7fb --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-noarray-nested.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: ServerTimestamp cannot be anywhere inside an array value", + "comment": "There cannot be an array value anywhere on the path from the document\nroot to the ServerTimestamp sentinel. Firestore transforms don't support array indexing.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, {\"b\": \"ServerTimestamp\"}]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-noarray.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-noarray.json new file mode 100644 index 000000000000..02615bd3ceb2 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-noarray.json @@ -0,0 +1,13 @@ +{ + "tests": [ + { + "description": "update: ServerTimestamp cannot be in an array value", + "comment": "The ServerTimestamp sentinel must be the value of a field. Firestore\ntransforms don't support array indexing.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": [1, 2, \"ServerTimestamp\"]}", + "isError": true + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-with-empty-map.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-with-empty-map.json new file mode 100644 index 000000000000..abeceb03ea8e --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st-with-empty-map.json @@ -0,0 +1,54 @@ +{ + "tests": [ + { + "description": "update: ServerTimestamp beside an empty map", + "comment": "When a ServerTimestamp and a map both reside inside a map, the\nServerTimestamp should be stripped out but the empty map should remain.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": {\"b\": {}, \"c\": \"ServerTimestamp\"}}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "mapValue": { + "fields": { + "b": { + "mapValue": { + "fields": {} + } + } + } + } + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "a.c", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st.json new file mode 100644 index 000000000000..6249d8bda90d --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-st.json @@ -0,0 +1,46 @@ +{ + "tests": [ + { + "description": "update: ServerTimestamp with data", + "comment": "A key with the special ServerTimestamp sentinel is removed from\nthe data in the update operation. Instead it appears in a separate Transform operation.\nNote that in these tests, the string \"ServerTimestamp\" should be replaced with the\nspecial ServerTimestamp value.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "jsonData": "{\"a\": 1, \"b\": \"ServerTimestamp\"}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "exists": true + } + }, + { + "transform": { + "document": "projects/projectID/databases/(default)/documents/C/d", + "fieldTransforms": [ + { + "fieldPath": "b", + "setToServerValue": "REQUEST_TIME" + } + ] + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-uptime.json b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-uptime.json new file mode 100644 index 000000000000..9210a2cf0328 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/main/resources/com/google/cloud/conformance/firestore/v1/update-uptime.json @@ -0,0 +1,38 @@ +{ + "tests": [ + { + "description": "update: last-update-time precondition", + "comment": "The Update call supports a last-update-time precondition.", + "update": { + "docRefPath": "projects/projectID/databases/(default)/documents/C/d", + "precondition": { + "updateTime": "1970-01-01T00:00:42Z" + }, + "jsonData": "{\"a\": 1}", + "request": { + "database": "projects/projectID/databases/(default)", + "writes": [ + { + "update": { + "name": "projects/projectID/databases/(default)/documents/C/d", + "fields": { + "a": { + "integerValue": "1" + } + } + }, + "updateMask": { + "fieldPaths": [ + "a" + ] + }, + "currentDocument": { + "updateTime": "1970-01-01T00:00:42Z" + } + } + ] + } + } + } + ] +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/test/java/com/google/cloud/conformance/ConformanceTestLocatorTest.java b/google-cloud-testing/google-cloud-conformance-tests/src/test/java/com/google/cloud/conformance/ConformanceTestLocatorTest.java new file mode 100644 index 000000000000..d9bc997a1139 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/test/java/com/google/cloud/conformance/ConformanceTestLocatorTest.java @@ -0,0 +1,115 @@ +/* + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.conformance; + +import static com.google.cloud.conformance.ConformanceTestLocator.newMatchPattern; +import static com.google.common.collect.Lists.newArrayList; +import static com.google.common.collect.Sets.newHashSet; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertEquals; + +import com.google.cloud.conformance.ConformanceTestLocator.MatchPattern; +import com.google.common.base.Joiner; +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import org.junit.Test; + +public class ConformanceTestLocatorTest { + + @Test + public void load_all__org_junit_validator() throws IOException, URISyntaxException { + doTest(newMatchPattern("org/junit/validator", ".class"), ALL_RESOURCES_ORG_JUNIT_VALIDATOR); + } + + @Test + public void load_all__load_across_dir_and_jars() throws IOException, URISyntaxException { + doTest(newMatchPattern("junit", ".gif"), ALL_RESOURCES_JUNIT_RUNNER_GIF); + } + + @Test + public void newMatchPattern__validation_suffix__null() { + try { + newMatchPattern("something", null); + } catch (IllegalArgumentException e) { + assertThat(e).hasMessageThat().isEqualTo("suffix must be non-null and non-empty"); + } + } + + @Test + public void newMatchPattern__validation_suffix__empty() { + try { + newMatchPattern("something", ""); + } catch (IllegalArgumentException e) { + assertThat(e).hasMessageThat().isEqualTo("suffix must be non-null and non-empty"); + } + } + + @Test + public void newMatchPattern__validation_baseResourcePath__null() { + try { + newMatchPattern(null, "*.class"); + } catch (IllegalArgumentException e) { + assertThat(e).hasMessageThat().isEqualTo("baseResourcePath must be non-null"); + } + } + + @Test + public void newMatchPattern__ensure_no_leading_slash() { + final MatchPattern matchPattern = newMatchPattern("/something", ".class"); + assertThat(matchPattern.getBaseResourcePath()).isEqualTo("something"); + } + + private void doTest(final MatchPattern mp, Collection expectedResources) + throws IOException, URISyntaxException { + final List expected = newArrayList(expectedResources); + + final List actual = ConformanceTestLocator.findAllResourcePaths(mp); + + Collections.sort(expected); + Collections.sort(actual); + + final Joiner joiner = Joiner.on("\n"); + final String expectedS = joiner.join(expected); + final String actualS = joiner.join(actual); + assertEquals(expectedS, actualS); + } + + private static final Set ALL_RESOURCES_ORG_JUNIT_VALIDATOR = + newHashSet( + "org/junit/validator/AnnotationsValidator.class", + "org/junit/validator/AnnotationsValidator$1.class", + "org/junit/validator/AnnotationsValidator$AnnotatableValidator.class", + "org/junit/validator/AnnotationsValidator$ClassValidator.class", + "org/junit/validator/AnnotationsValidator$FieldValidator.class", + "org/junit/validator/AnnotationsValidator$MethodValidator.class", + "org/junit/validator/AnnotationValidator.class", + "org/junit/validator/AnnotationValidatorFactory.class", + "org/junit/validator/PublicClassValidator.class", + "org/junit/validator/TestClassValidator.class", + "org/junit/validator/ValidateWith.class"); + + private static final Set ALL_RESOURCES_JUNIT_RUNNER_GIF = + newHashSet( + "junit/runner/smalllogo.gif", // in junit:junit:4.12 + "junit/runner/logo.gif", // in junit:junit:4.12 + "junit/runner/next-2019-hashtag.gif" // in ../src/test/resources + ); +} diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/test/resources/junit/runner/next-2019-hashtag.gif b/google-cloud-testing/google-cloud-conformance-tests/src/test/resources/junit/runner/next-2019-hashtag.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c7f70b439a964fc63ce8f72c9f763da8c719299 GIT binary patch literal 318560 zcmV)JK)b(3Nk%w1VITv-0rvng0RI3boIWa{N-(8QG^kTGsZ=<9@I0(qK7#T>h4e#) z^hJmCOtWWAjrCiW_FTGkX`c6Qz=U+eiFU<|cg2i&#*KNX_j|;Md&iJ~t@wnn_=U=s zhp{t|xA~LNqnF5mo4@&?*RQC@_NlZdtI77O+PALD_pZzLvBIpf&G)p<`M2J_zT(Kg zxhlWb`oPxr#llO+m~qJ5`pf9k%;eq9-}=t#*3RnI&`>VW;rh|x`qAS2(&PNn*D40esuu^;MWU+VJx>h|sHYGv$jZ0&b) z?R|Ofgn;h%@$ZR+?~I4Q`QzgH($D(S&id2P`qa_-*Ub9Z)%x1l z`rh37>caZ#>H7Ts`@91CyafBa1pB=S`@$Rh&{X@<&imBS`_|L@*w*{s-TUXo`~Cd; z{{8&OF#OFz{LxeV(PRA5SNzgg{MBIm)n)wK*!<+;{N&^O<>UP5=ltrs{OrK|?8E%* z#Qf~Z{Os!d^6~uk^!?d!{osrJ=cfJa>izA-{q4s6?#2D@%Kh-~{qfTM@$mig^8NPX z{r2|#`R)Dr`2GI={r>;{*wy~=)Bf_%{_@!V_22&Y=l=Qg{`~v?{rmp?{r>*`|NHa* z`}Y6+_W%F?A^!_bMO0HmK~P09E-(WD0000X`2+<60000i00000AOpey00{p8k^K`$ zaG=402oEYu$Z(;HD`&Cr_U}cLx0_6sXanNQo*P%Jk?`r%jVaeJT~I)v8#jYMsjU>Q=8^ zvxfaD7OdH_XvwM_%l7PAw{6qLeJdBP-MV<`>YdB??q0ur^9KGa7%*U*HxnaXthh1b z$BrXIo-DaC<;#{cW8SQ}b4$XY2a7gbxO8aJr%jJmje2$J*REr?p3S;8Y}&VN%hrv1 zckbU|IScnpe7N!A$d4;e&V0G^=Fp!@ci6i+@9V&=XUFclyLRu~zl;A5Pky_3@aM;; zFOOdI^!L%@!=Ep|KK=Xl^W)#I-{boK?Wq?adjb|n;DG=dm>_}!F6dx`5Goj9ZTwZ( zpM@A+s9}a2Zs=i$Ai5;shzyeWpotTnSmKH*wwU6JD8|Slj57ii;*B5Xh~thr_Q>Op zJ_ebQi!u^f)tNu!cQF6m^GP$K!Hlve?1rI1)&sb!X2Zs}#08b!$@m1K@-=9FiO ziRPMWwpk{dGkz&2m~+-i=bd)uiKk6zzUgM4fWjH*pMn-j=%Iclx}ctn?%C+0jz$XU zr1>E_sG^2qYH6mIcFO6en}+%(rKCz~YN@E6s%ok!c`B-_n#TVM>#U&4S}U!u-WnCF ztM+rxbTuIZn^W;8!x^0+WVlp?e@#>zy1cCs=WCYOz^?@BCK!13@@w` zzz_>8al{l)tf9jOH=HrX3UBOj#~`m+@yHgFY;wscGZr$(8n66u%P_Mn^UKzqY;(#u z->h@a)Y0s-%RtBcv(Q1$9P-Xc^PKe3N~2r!&_)w2b<|WtZFRCtXWg{cTyG6#)lY{# z_0?mG4R+ZtcCEJ8Yq!mIeP)w=_S|yU9rxX6pXK)6Z}b1{ci)ZCjkn-=+g3^XaggF8k=T zqi(y3uD7mx?!1G3`|Q8h9=q_s53gJA$nUOv^1K@FeDTl|FMaUTlg0e<*k7-GuhT!@ zee~6X@BQ!Fm!JLl=JPoI`r^0${rln1oId*W&u{<5@#oJz{QK+ge#Z9;VEqOtz~l7q zfd4}v{}RYRHx-b85PYBn1Lwa5TCjo`RA2^07Qqfq@Pi(#R0B77K@FO4geRm82v-t0?36e%pndzm_i%M(1$eaVGsXzsKX)>@qR)4p%9hG#3VXVDn~S; z6r*^(B|g!LK+GZ*pGL(gda;YEyJ8cyIL0lOk%?gZq8ii4I5UdzjbwzQ8wEnZXQFJNz-tYEtu>*32e0x2er;a`T(s4CglQ5l#FYQ-R2U z$1d)oPIw?wa65sm(w52e8sZ3)^ z)0x^drpmaJLmdhcPYfXyo*3Xm2pT<4=b3!0u7LA0ubQT1tg%epXDrP4FJ`u zLI4C%knBe2K~`1#qP4H>g==9;TiO4{cDA;yEpB&v+urKdx48{2S#ug9o*D!XGYEkP zBJh9%9AE$g2!H?r5P=~qb_hvGh1R~>y?1z(6fUs90;0-U1t=f^=iO|25wPC#p4YPp zATI<&@Q0oVgqSN6$XLy4R6zyJ*g0JV@;0<4or{+j#*Bfa(G|@Q0nO^PMjn>w+EJ;6WQ2 z!G|t1q8BY&WpL^p6y`}XY~X|srJngAZYGzOAjViTX()K>^9U=`V7 z;p+v`PWDW_L7CY+g>;sKE|aq0}62EE_?XdT#oj$ zy}SYI&R__o#`blmkPLx9`EA?{-hKaIfv0-5y>do(oz-n;b;H>J5U2r9-T`Q4?L^Ru z&Nrd=ooIeD+TQ|(u%GVx4?vXQ0R+hOhd&HzhJX6u3{N-)N_=85pZel)aHty#S3L4;G@3+|hJ@y7Wx<~@q z2@4{i;Z8gJ?Vg5v!{dHw2~gbB7SB6lZGeaShLwFBZwxd40D(4>eB_8f{Eau;fFAgg z*D{a1uV?;p$=}x4@?pUPG`#Shd*0`s_i_bJt?i-{z4S?lgF(K1F0Ri`AW)F8o7qi! ztJj|D?agxnT(FO=AvuAq}hadso()#wsZbhh5yH8qDOi~2M7rj2X|L`U|4EX;8?Bqd+#F< ze;|7mczYJuhHS`&G7wf8_$NED3}p3zc<6z87=nc+aQ~5ZEWiL9)`Ennf`wRp18{v6 zcVc+p6UhI72Pmd@+9zg6;0YtNgDt@cg$IP3D1vX)$An8Lf2f#*DOGcf z;ZTOK0Sb48vS@`rCjbH{W?SfO1Mv=5fNfz&bc=NbD<&;TH#!>7W^0&?6u69Tm~MII z0Hm;L49Ff{*IInIhai}Zc{qaG0a*VKi2L_^D>#maNRBUffQzMiJ5dy=5C@THgOWG} zp0E=~MLsEqAu8~Lp4f@}D01`IV*^mbqnrkFf$G){_vKmJu0%189*E0fk6lfE8J4aS&9cQjD1+5Gi1C zDcP4O`Il@sUK-GnN@9mJDU&sMnES?!vTm4^Cwm8yxAIA#DmKt<+Ykg^Gu2Pt_8856D;0RrHV5!st*nT2zC zksRR(ahYw#IdnDv2&~6FW*9#DpbsEmcqZwW(+QXpxLFW@mkv^gcZiLM`JLVwb~pby z8xC~^&G(a)nVyung4RcIL}?IXQIG#%2uR?Wi+Ejea8U3mKU}FFe}HGK8KA25Haj2nZS}+F3aQ z(R5EoohMnHE*f>}2La7FCWaZFig}|o$(V*A5G;^_>WQA~>64dfYMJR1bwO}|;GUBR zk2637fbe(nDK(|(5q|)I0(zwbs$(^lsG6k>fCc?25ZCa25BjCD zI)7wIrjF`tYMQGUx}nDTrY(^QfN-1~DWWz|r(bfSMza$^0B3&sqRo1e<0S(6;EjX{ zA%>Zl*ovsxx|pNUsE_)ikQ%Pw%7R0BYMRL!_k|2;z?71RVk+hnQTi;TdJ)l?rS_Vt zPnDf3gbiUDtNz-cV``dZ3SDTLp$4m=6Dg-|${3yy2gW(4Hc*LILa6ql52m`Jf10t* zspj`)w zCCF+uddjC9`>bZ`hJiY$cxoUctF3NpqbG}CI$9P2F$G%ovXVNkL0YcqsJ7K{U!ITz zxVWU4IRmLCudNCl4wV6?DzuI(ga+UMoN$lV;H61Bt4oWJ5?T?4V4(;5xw^`xB6_uu zVF-l9p~9+d+!i7syDh0;s(H4tvfHAxTW4^F1=Xq^BO8-&`?e-4lPTL3_obV83$w<1 zh%)=0AUhzCP@ndBY9^Kj4keAX;bkGq-(u#zRZJ>mZVtC>5#O6#CayAc}@ z08tCN>%#CCuoIC4?OVfYD!TAH9LD8^2RN)f44NKdz{nyH(Rp5Fd&B`;o#SNzxf>qJkXF4L z#lI__5w;eoP-P!>ym-6CF`I}=YN^XRBFF#;G)TDEcWoC*y-`BK3(<5Z{Ki3u01gmM z4i&zad&lJaa_8F+4pjkzXv2Vvu(#N&@39YQ@P(;cYN`LXdT`Uk`SlMO;B-k`yGTsC z&nUucOCD`2#S1*e{no%kArKIp#S|>TTx^aO41;~UjxO?d?TDFXjAGpvuTsLs2w?%K ziNbJfexT^J_7e`4o5y(k!bm2=1>sO>u)b5f%xjvk!HH}Gkqo`)!@xKL2?#ftY&KL$ z$&(DgYlr|1a0!0v$b+%Fp4`dk+=o@n6=6lZT5QVj4715waWrcvp0KWa_ra8ygGOS@ z2Z77GtjnJGS)6b`b_~PAjL;E!5u+T)4lT%Sxv(3O3L2TnL^lNrxE%UhHn@zj-CW7u z%y^R<#^mf4?|{GxoYI{9wxAqVhVWeCSjz7_(;@$s%IH|6tXwEadAj<1fJgudPU6o5 z0nh>+(7e0=$neX=EX+(To5uXL7yy~fJk_6z!ySqtsZg8{TWWTS96}r~I}yo7{Ly61 z&2r{c4lunN4HxhL3{ZT|Dh=1Iwa!K%5H>IXF@4H1UCQ$e#)AS`Jz=_?8Oy6&N{QC9~^+8qB9rv_*U2ISgcqpW4E+5sG`(@Ng8u@Ar? zeCfQ>@-22LD-aPJ>Vd| zlRe!{?OW&Tih`)!+5MZg7}4JCBf(0nGtkw;LD~nS51W|Ut9{;cwgC0D!6rTx`0(Dc z9oO+aXpH%s_wA$k-QyF?w>Zr$0^zWWXkx;>F9v>p|Il;_-sH9hZ{K@I&rRVIUg5eG zuvd)T8ouQmPLbVhB_VE{;_cP!9W>8r+_9_TEdIaC{oiHI7x@4TH9p@r{$O<7s8XHV zKCb5x=f#!k-z42BJ3-`_8LEaY)c^m01y;J?PELf|<4_S!<lfY}?)3RUV0=>95L=N+l=07uIAt@&N)5mMd1!KPUkir>v}kXfW-o~z2ExH=XAH*7(C7Z z{ttwHaYvpuNv<3waNJIw+z243QLZ}R5X@B`?UO!SjLdeKe(mnd-J=WUK0M|n{^kw% z4c`J)$*nad_ zsO>r2C1E~h-Y)7R4>WqommOdAN^Agw`PDqp4{~1TvX1g|Efi7h^7dZu{aw${0~jkuCI;uJB~(2?qf2e$U~9Y_;4j;-StNtWGe1W!w?y@mBAQ z2Eg2DC&c&g>R?~_Im)AWUG`+}<1p{*&NA~wo}4!C_Ct;AjDD3?H3>ft?Rc;7P3?rR z`0z*%$W}e^OyBL}efTlsfQ-N9Q8!*DP{2_i7hKPvUVrk(KVSl9-7K%`n(zFdcJ}(d zENWlq1y1^38=Y~ly$1ha0p^qNtsnk(Y=1ML<+K0yNgw!2zatgDScTsiy1y`C1rLSi z(dFLwah7Kd;A0|h;s9|En5tg9dJ!~;@L<7(2^lJc_)wxliVZDBtcdaA#Els_s#3Nu zgn$AB2n;BBG9^lrELFB#858Ermo;79lxZ_3$^rr;5Sd{ksL(k7^cnrP52@0lOp`8! z+BE7@sa2_7b($3_vVU=g+7N03&{VBf%VH(Fl z%WBWOF2D3LOfbh3lQa+vz%0$o)MRr_$u@(aOfu(`v(7F*1BaL2_9U*);rZXfk{#YmQ__-C3aW<1u9NP9dT4PM`xRbmf4Gz8Hs=* zk;GO>ZLi%n$(VX#GAyEy3bxpC;j$8}u*N#~R8TX8_g#78rPnVDWNkBFH}$=2vj+Z{ zH{f~)ZcjDV3?H zquDl{zGRH*zyJnu<{9>$abC~>2!0hhb<$7Y9rgLz83=0Or5?WN;-faGg|4~QdU@xy z1{WxCXDI4b-><)qt8}kq7km9Q2OsqC$M=#11UAz<{k$7PAOm>FhhKa-4OYB<#23fk z{={P&L8Zwh2jKs-!yWH%N<8uV(#Sq$GR=99ce;b%110D{0=)ws`lx{eT(4k1(WW*m z1yMc-lphk6n8ZnB00DPXUlbdY0NV*6iC0{rXg>3erR~p)`MaO~z(}YW`Y(WI6d)R# zQ@KiEE{mw)9LYY{zzL$TjwQ6C5wZ7 zO$%W-$*EORk`Qqm^LA)MO?EPRB=b)780kIjH7O|F%VSpFxJoRx(ruFffe6;u}cu9KB)1DV$4RkoU&m4C0NIh(l z*r0UHq7Cs%LdnuQcezk!HWW-&06_zuh`w27=7|l+Ko7X`8HRRLe%l}>FheTLFY50g zeL!YPlesZAUhaSnB~2VXB~60XbeiwHsZE`tO?^y41r`utITw={Kw_wmTFq=&@}5?uWIc_y8s+hGll}B6kv=&+QBL(-r3~9Cqv}z%!nCb+`GW~G z(14)2&UKAZ(D}-#R0K4@0wOR1T(tStli|ZW?vS514p!2UHkPrEHC+EMTA)(Ou5^GN z3y&M!8X9P>N19U2X=p(^+C{F@D7$!q3P6wn2+)+WEP}jN!sV;V}Tixwum%G{p?{~%P zUGjF2~?40U710rm(ZFL7ED-x1Aqk#2Tp8OFOwLs zfcpkM1jE4!e*o}Oyig>i57`8A5E~-(D zbew~@crom}xTp#}b(zaw_HvlPJZ3SMnapQ4bDGh-W;M5&%)A&u#VR{z%dSxXlWOBj z{TmmVdXA=|?d?A%K>`twz|e&j!5{G3s-x(j(1bp;3jlqTC)A(@JGgYFF}-O`cbe0m zwsfd1-2)y7K?p`T^{IEjX-k9J)t-j6t9QF-02$UP`f$fN#9<6+%wia{AE>*up-xlclT+b{JMFwoctOoB<4OciY?F26wo{J#KQB+uY|ycey!m zwfMeQzU~&QPo$@|vQFA%XjPY5b-L&Fkb(p%AVCWL9dQ4ra#Y7|F@gvHzHkw^V0>1n zfe|8}1Bn}f;uEj<#Vww3j$=IHAMZg8LLPF7licGQKe@(L-f@(pd=k4vEL*&B4qhMG z6v9{ql98-roiDlPKVLG>kGu+D-24>9xP>^lp%1oXxlS?9$36UUkEl<*>Qt9H)~%lP ze0U=t>%hh}!ajDfm!0fqH+$OAzIL^@o$YUTyV}d~0Xf&1&Xir|$280Dwsdv|4D_45 zNjr%Yn7{-iF#O^Fun*>vc1m0kf(R0ycu7z72|U;V4|33h%x}K)oYy?)Jst3@Hc@|0TD1jr}D3aJ3s?$xQ7!tkdwfYo4^R9 zzzej%3^ch7tUwOLKo8VF34A%X(g$v+23IILpi@DgW5E@4!4~v6qca9rV27q_D0?7> zTqp+}E!5##{9~8nMB*Gyy!XiY%Bm6;fFbBHJq`R}bWNN98$()1hi$0s9z@s&r znuNnkJj62rMeDz_`3D^U!!wjL(0YO$a6SLjV?8%~y*Px!Ic&o^e8U{zfms_vr$~os zcm%C!<25WGKrf9rC+lO|@1??M$Y|unb)P_y$ z#8CW1PXxtL6va|RMN(A7Q(Q$;bj4K6!TGD9ce_7YY`3wZx0!J~VZk@;VhZ7%&`@jx_#%Gkq5S&I3w8m(xfe|Dhr(*|kc!gOog%^B5q0>E_ z8-|<9Iiu4(afHF2GrDQe1-OX0E5gA{%ms6>M|{jdeZ0qf^v8Yt$9@FJffUGsy zNQ5Lvd>n@+tUD-#NXf~&%+j-ClnejA1H8D|Lw6!P!vjObW4tX)5y+Fg$uoh<1GLMN zLpxl_J9NpGgh@K&yx0@G##0Al(7je*1wm{?WP3j0d$wQ;#8)7OA;X2Ej528$vR9ym zM+`P+3&ccZL__R7VY3BsK&&lnhirgFuGB%VEC;X@%W?QhvJ6YJ9Lus)%d=d|v}DV- z1j|>HKl+2WTC7VP(m!INUP23(Ma zRyap<3{4d@1!8~&eBcVF)13c$L`ZYkhIuH?<226XM9$?@&gNv!=XB2KgwE$ANG9}v zhm69AoSZ3arUAslKjX_$>cWo%Lop0b-zvj1^vE>CsWQj`)tdxT7=>LJ1^J{;`>fCT z%+LGOPyF=H{sd6|6wv)7(Ek)r_k_>hN{3qrHbm^nom4hqYXxG!1#38mYO6kcPzP~< z1!*ugqI1Nl^u1F!wrOC8q^QJe;)hlohkGyz<$6(TgHZ#K(Hf1>8>LYkozWe&(H!;B z8O?|6Ge!Bk&XTajBfZOa!^Ke2MN5p5UR;-76imYqM#XGEV|=S*JiuifAIHSN_c=_r z_=5`EOwge@qa(+5ygC0@mwyA; zDv?Byqkx0VJH6eaCR<|%Tv)b6Og>kL1)?K{X|S@a*azz?8|T^wZx9Dupal?}1zHV6 zoty=6u(q7SK3H^7RF#r^7zb38zZGyVyVO?vtBJgH68<|+SMke(S{tdFQqmyIVN?MH z3{wWQ(gzeD$K1di*o6Tc(~670GIbkvum;c+$D4bFYTyRC0M3(n)0w*kJ4R7Ty-JF^@roYLRPxkRX+_(Ah`dil$#xRe(koR?6_!=yfmWrU zR}qI}b;SQd{54j11xYko+vU}!PzPL?1?T%+s$5=aPzNJ=)>VvF;|&mfsMb}q2dhca z?iE`e8UV1-OK?5g<{H=i3QW-@z<_hxb+ue~bwIiW9C-yfdbQV&qrko;6U1VNX&_A( zG=*ZYhQn>EdF+O1@K@0!h5-)Lh^^c`J5+zyEy^+=Ot zU2!$T5N26>d)d#6*%3w&nzh-_!`ad~2PHe!<2zR2CEk$qU{i_JR>-+Qgiuz%h2`4R zn5o)VyxQ^=5v_H_Y~Y6tSXA!?TPel~vZbD>-C?arTd|N*^+nhAEk@61SA|nXcx}uI z#9RM<+gp><-#USXbrj8EFb3abO)q|nGkrl}cm>0ylgTB>2hQ6FCdhoaPGj=i3%)F7 z(qKs?UC%OIC5E8X{leAF;;nGqlAOHQb*I@S)dD-+DZyRc9UXkY1y%rJ2R#L2h+Y;h zsNOZ@LtMVc-JR(T#p?ZJ|G?f<)CPZ0R4Vr6`}0=&s^s80UjR&Bwk?cwwNiG?(!`A4 zF4aK$Ro}hM-#KB2KWtoAIETnZX10hqeUMeg)y-;%(>j4z2?k`sieQBFhaouRcivb$ zbE!zRTn^U4VZI&^#?+H#WvftG6DEO{4XqRoy%omivvA>?6`gZXwx$h4U>o9FMxp<6 zCI*;Sb1fAG~UIbu{y;(o3VCN4#7Xa{8Y+FzbxyR_nZljyYAVpOW8Zcb(}P64=O zE4k&;ctzv;#lSWu4{-=hV%SZGwd2$1-<*R%p_T@3sN*j2!K3 zX=1Kv05(QEvUJdBmg#6x{OHSW3Xvv7#&+k(wr|KTfR)DL>wf7jmT9}FQqQ(&V8m%N zuG^iSW-@IL{}tS3dj)s+?=rClIR3eu!)-t%jHl+us4n0^r4*SQFUuiM(ns|)wyOF?&e9V6k>cBZ_x7VBOAmc>xT74mBI$a z!w&Kn&E8OCY<-x3DE{6m$II}g>~FQ~>$aZE2F%TlZ~$jtb!Fzb4ekG&K4a46X$kb{ z!mx(jgh64z1=xNU#Oj84SnZ!XatyzV-S$TgKgM3mk#2lXaBNijcjt2 zVQvv#@qfnDfJWi>gxMSKkL(V;7(Nke=vg3+g=x@qCyi5EAaX)XvJ)Nb`e<)Wd~YsK z3i;MV#@+`cs6WZRZ+;a_RUbHcKTGZvZ<$CB!+xi9G`w`xvu==g3QpfV zPcIN#hy`1v%2ucbu9w+3Ee3}7y;Tqgv(}GS|HN45dRqU)DE|jY$RsP@_#M)3h`;Rq zCia|{ivWLHF>YptL-Pa2z|!`wHU7An#|vDbZ5EXCl8+n2@&+SYL3J1maL>V^XDD*F z$D{uT32-lUhe&o`^e~;&M@D#2p?7;P^%$o-eeYzchl>Ay&%A&)Uu#%C?}l2mXJy0k z2B1B@-YeROf5nL>eyXr|Q;c%POM3j~`)l!d@*QuH|8kNi{JJ>#e=BokSNYMdU&jyA z)0X+a=mr;j1#5#u+oP}EejiB#G(but}??*xhh*bX!F%VE-z`=wF7b}0Idb&a!GrE7xNpnuZL2pboE$sq-t95zFFyZitYWd6)rxVfSMK=!rEJ;n<-VFL z`^ERq8mq>S8#A^RlrO(*ejj22^G0P0D%Go2p}9@oVal0 z#*-g!&iwiE=*p)%m+riP00~4ocH|i6wCvjAX(JUGr@IY~HUNze&v&QJ`0(e;uMd+H z2^Atz}0s&hAp!AqDsaHVVh2_PAp%{Geom z00&U?q(xCeIi-{iVN^kSGie#pkU|D2Q%(O`8sepf?wL8;ne9O}NeWtJb=4pH>_c9f zbiO5$5F)(!=2~{DnN%4&*hSZ1oYZ+Jnw!C4S7CM?wwF4KiN;uo;`n(fqJLtVXjHd^ z<``qMup*6Td-21XYr4UEU4# zr>rU))OlHE$zHOqk~wXc^5Msye%Ss;Ew?Kjm~DRyR=XmEA5NIVh2yHbVuun+NMVTa zy)sLUrx0VxG~MdEF2D1+(+Y|wnj#K-?eJ)%jzIRiFnmQGd2o^?2^7Kr!BKf}l^AO* z5k?xRx8=Sep9H3sHi^vBveByCs#X76U6oZ=uF8z&S!rpt*2-3k3}cF(6WGb;9TuBzY8B_4%112~o_g+SLZ8x87AVn$YX3b{i}KJY506eI%_&OH z;tDIU+&%sB;KToyJH<$ctTH(4bCppcn&ULKyPUCAx@3y-E}hr?tdj4?B|UcDOKyAuM7l5l93Eu)8Vdu8J4Q$VRyH5ia%c zMI;N;O_W%Y3&yXELE*&9oEI}QTF@sx$&>R)fHN|}B``e03mx0o6rmA@E{E}oK8O(u ztUcxw>R@9B6NyNm7~?Tl1EMwDlA5vQ#%p;5pV(%_nz9Y$RWrcV1K}3R1&WewbKA}a zzvD(l&TnrMRFB_SSrq>m>YxTP*ugDxiOXH;vX{L4r7we7gAtDK1w9BRFq4VQWh%3o z%)Dg{T#&+SA?TUTyrwl}U@mh}PK^D!oVjRN5^K<_bJgggH@m2hAkqjQMQq}a(3zpw z9g%h{i9nO6s81_qtarrQqCC4aJTZMxmS)ip2}GdKgf3K}B4Fr49SYHjO0=R4Rp^^s zMgodnG@>2ls7FHz(vezJqz-*(8ehgxl76(LEH$YJUSNdo^}tYzyd+S>M?Ui*#T~@B zUm=@@)1m5dk>W@n))+Glu=I~>r`J@9&Ny@EeRae786)?@G+V<+ZPP{cBwVtJlH$Rj`F6EViaO z&BHPlu!uD*e`G)x7j`qC0+J!-#5odikf>g>s75+NYgv;dhMmOlhD(gt#3YWkVLED} zJzWw-i}7=xwzU!#KL$|I_Unt>3FGUCN<9}~MWY!#uJclA+~h7-xyW@cbD!JX=}Nb{ z(Y-EovrApIaN~E5PmQKT)9}h9H8~DT z7L|;d^dBd^Vgs#qwZNl{+bOw|B~`|^l^NvQdKx@S-m2g#g;Q)|GrU&}Z&OkxzTII*{soP;XNTXuOUb18uZrD|k~bF_BGp}j>pYt#yTq-1rn z%LQwF>>zp?DYh)ZKt5|L<=b8nOaBC(lE*dBj~Fkw@MVfVq-kC4j(NLe=5CqOjOI0; zxy@#N^O$8yQ=3ZoX*%T@Pyc}rVjwkCqv|i9#VfT)J+c+80PRwmN=c}G8EjLfWL1+Q zk}KTKzyv-prjPU0V%b2ff|i+C(fTYw!_Wn8g)FKctLnpsxUs2r^{O2UYgT)B*0R2J zU?scF7iO8p?#e7ms@A#u^}5(AGzL3|s1nt(4#_>H4-=d1Q zuag~AqLsmcHlr&i*f(;+(3UTd!Oe4y^PTIw=RE(p&x0<54hy~LKtHw$SemEYI7u8+aJ*jjBF?==)wJWRx-(&TTDnJ`A|9RrJm&u$ zf2OLb?=d$bilS%5=)%|O(X)!QSLRd!gQOhgt~czp;ve&mErKPAzI7~EZg2a?~8 z?&jxRZncQz?yn@=GXSnPNgwfK{G(;aU8DRtQ?oeEG4ng?BY5Q>rW~9fnFKe`SE$6o zWYnGjY945;S1b$zJ`{z0wq`~y-((?Ow2h;EEOF4 z1qtC`*x^v0PAraoEXWE)4(7yI3!cQ*fe1+;TfpGU4i2Gx-~%fRoBjwy+O_`<5xU*% z49ElkN8O#@#oXQRc-s*2U6;k*-*ueeX%zIF;Ga~_^MP9^%PKN9=_a?b)H3gc|Op)$Yll zzWClW0blnGp9+cA@tuo|bszK9K)mQe*`<#T5g{tZ#}5TjE9`?vFdM|I9VNEiYe`#! zFv%3=Vil%ex1}O7xF7sgP8|xD{i)F(9?JfuksN*6{}Bzr4dZ1HVA1FU9$H*AI3hMe z<4@qjEL5Ch$l*^^U?pAPnS9)CxQCpCfI%Q42qq$OkYLN1AUWR2?aBXKgq@%-ZpaH} zSPW(&f-p|;jSdcS6DszgC?dl?u+uPnPCho|NlZg$p-A@q!xAEiEb^WcI#Gi}VfpEz zM=pdFg3K(=hZg#sHr~`1W>gr?qgaq3;+>(OFdm&9hh(IJkM^fQOZkukcA6&i! zFc#ENW?nI-5&k7+Y$T&vFymYR;4?ZVnh@Yk+JZM4n*LZNOD6wjHG;}1h{HbIgHyf6 zXUc{-Zc>_v1PfdnJ3giB!Q+C-qi52i2B{#;6{eT$;|TR5Z_*%wG|mmym=5yhN*E+5 zxI^a*!;r;gT;kXf(#R~}0!6};vms|mWMufkhd`9TwE-p-hGgDp=g5={L5(Cwq!l( zCO*oji})hjQhJ(5MiZf;HSjIW${5IkN42$XT^lnMW7FIKCO1{bO7k&?npzOu!WUPb>I zR5SJrw0_0GMaUiK#pc*IE$!HJe04xO2jQg0(M>`SaK(| zSev{~k*5-A3znpMo-C`FDhaG4#2yf<@`5uMbe;$<=p|lS>JhmswFv*j3>3s)eq=xKqDZ3Ry~f|#{>{E}Me1S@ zTJT?#Ql{7%g*3(jTJpUoyNT=rlPH0LQwF8QX!ISkt^3~gRgszxr1KzIU_35V!v z%+mUz(|XzL{)yC5ZHCGx){3Ehde82PMH>dedWi}y=x+W>4LcAL5J^Khq^+$?XSB|4;=?bF)FU#sOY1RJgGIrs>;?WZCkzn+Z6FBfG z=%GH~!#+%)7lZK^ckvj9F&T?78lSNmn=u=gu^Xpx8^iG%ukjqmF&)b>9^bJZ+i@G~ z0~}%vE7-!tS|9~GMe&l=JM2R$Y(RK&aO*Yi^A>Ws-Kq3O6%AK!hhZ;VYH#5_&Y&LW z5cXgUC)+DX!z;u?DW7sGqp~TpvMRUoD#tP`&+;qRvMb-REZcG}<1#JtvM%@XE(bF( z5A!eUG7jM|`w}hN8Lbkr00RWT{8~i)+H0ux-P2a_%Iq(y4zT}b1$_cu0OKb%{{!Ul zz#UAiXhOz+0+Bkm^J1(sJiGrhJHN9$$1^?O^E~IXJ?nEl_cK24GeG+@KmW5pTa6ai zLa;7y+X|OR7y=_F>#~ZH2hU#K7V_S5=phFjfzJlw{j;pb0fENA2)O__j5~kbT@Z( zPq%ebw{~YYcVoAAUw3q~0zyl$LR;|ZNt{6J!xUfub_|CjdzIaCT2+eeMNeyoBDPL& zv`6b5;dU!!eXF}v_9_U&4VeOg4}*ah_<<)lf-ks(D>#HVc!V=Jg+I82UwDO2xP@mp zhHtosYdDB^c!+a2i61yC=(IA=Vo#TL=pfDzU_ffGc90tNrxq#R{T5=ZJlRr6}y=8Em!4fUDVrG`b3>GspGs|KIi74n3*iLm|>%PUy_$fDye#@@8@n!^=$8Se|@I=oD`{!6eXTit&UVfo;1sj zGzXsKHz3h>(QA_$TbvQnWP^W-1JFj0q7>q`@SM4Mw)gn0lm{Lr0U1a%H#YHAaSPCP^w)L)Z1kaQ z4pWc0H-TuFK}saq_#r7qgpLV z9_$}&6_9-r&~;rW0*2Zy(ijdTkoO�vplo9yNU*vE(0f=pGCA9gF85PktZE?;cO@ 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 +Gop!c?iBm*|xO&!BRFP^w9NM+>6v(K|G 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�JWIR+i@ewnoTU1@xp2)D` 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/google-cloud-testing/google-cloud-conformance-tests/src/test/resources/junit/runner/next-2019-hashtag_readme.md b/google-cloud-testing/google-cloud-conformance-tests/src/test/resources/junit/runner/next-2019-hashtag_readme.md new file mode 100644 index 000000000000..eb34c75d11c1 --- /dev/null +++ b/google-cloud-testing/google-cloud-conformance-tests/src/test/resources/junit/runner/next-2019-hashtag_readme.md @@ -0,0 +1,7 @@ +The resource `junit/runner/next-2019-hashtag.gif` is a resource used in the tests of +`ConformanceTestLoader`. It is specifically defined here in `test/resources` to verify that +all resources matching the pattern `junit/runner/*.gif` are returned from multiple classpath +elements. + +Found on: https://events.google.com/io/ (2019-06-05 1555 EDT) +Downloaded url: https://storage.googleapis.com/io-19-assets/images/global/hashtag.gif diff --git a/google-cloud-testing/pom.xml b/google-cloud-testing/pom.xml index 817178c5c6c6..1e4e0745b635 100644 --- a/google-cloud-testing/pom.xml +++ b/google-cloud-testing/pom.xml @@ -26,6 +26,7 @@ google-cloud-managedtest google-cloud-gcloud-maven-plugin google-cloud-bigtable-emulator + google-cloud-conformance-tests