Skip to content

Commit 4d23cfa

Browse files
committed
Include a trailing /documents on root resource paths
This is required for v1 and accepted in v1beta1. Port of firebase/firebase-js-sdk@4cec9b1.
1 parent aa19fc6 commit 4d23cfa

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

firebase-firestore/src/main/java/com/google/firebase/firestore/remote/RemoteSerializer.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,17 +174,15 @@ public DocumentKey decodeKey(String name) {
174174
}
175175

176176
private String encodeQueryPath(ResourcePath path) {
177-
if (path.length() == 0) {
178-
// If the path is empty, the backend requires we leave off the /documents at the end.
179-
return databaseName;
180-
}
181177
return encodeResourceName(databaseId, path);
182178
}
183179

184180
private ResourcePath decodeQueryPath(String name) {
185181
ResourcePath resource = decodeResourceName(name);
186182
if (resource.length() == 4) {
187-
// Path missing the trailing documents path segment, indicating an empty path.
183+
// In v1beta1 queries for collections at the root did not have a trailing "/documents". In v1
184+
// all resource paths contain "/documents". Preserve the ability to read the v1beta1 form for
185+
// compatibility with queries persisted in the local query cache.
188186
return ResourcePath.EMPTY;
189187
} else {
190188
return extractLocalPathFromResourceName(resource);

firebase-firestore/src/test/java/com/google/firebase/firestore/remote/RemoteSerializerTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ public void testEncodesFirstLevelAncestorQueries() {
498498
.addOrderBy(defaultKeyOrder());
499499
QueryTarget.Builder queryBuilder =
500500
QueryTarget.newBuilder()
501-
.setParent("projects/p/databases/d")
501+
.setParent("projects/p/databases/d/documents")
502502
.setStructuredQuery(structuredQueryBuilder);
503503
Target expected =
504504
Target.newBuilder()
@@ -558,7 +558,7 @@ public void testEncodesSingleFilterAtFirstLevelCollections() {
558558
.addOrderBy(defaultKeyOrder());
559559
QueryTarget.Builder queryBuilder =
560560
QueryTarget.newBuilder()
561-
.setParent("projects/p/databases/d")
561+
.setParent("projects/p/databases/d/documents")
562562
.setStructuredQuery(structuredQueryBuilder);
563563
Target expected =
564564
Target.newBuilder()
@@ -664,7 +664,7 @@ private void unaryFilterTest(Object equalityValue, UnaryFilter.Operator unaryOpe
664664
.addOrderBy(defaultKeyOrder());
665665
QueryTarget.Builder queryBuilder =
666666
QueryTarget.newBuilder()
667-
.setParent("projects/p/databases/d")
667+
.setParent("projects/p/databases/d/documents")
668668
.setStructuredQuery(structuredQueryBuilder);
669669
Target expected =
670670
Target.newBuilder()
@@ -692,7 +692,7 @@ public void testEncodesSortOrders() {
692692
.addOrderBy(defaultKeyOrder());
693693
QueryTarget.Builder queryBuilder =
694694
QueryTarget.newBuilder()
695-
.setParent("projects/p/databases/d")
695+
.setParent("projects/p/databases/d/documents")
696696
.setStructuredQuery(structuredQueryBuilder);
697697
Target expected =
698698
Target.newBuilder()
@@ -751,7 +751,7 @@ public void testEncodesLimits() {
751751
.setLimit(Int32Value.newBuilder().setValue(26));
752752
QueryTarget.Builder queryBuilder =
753753
QueryTarget.newBuilder()
754-
.setParent("projects/p/databases/d")
754+
.setParent("projects/p/databases/d/documents")
755755
.setStructuredQuery(structuredQueryBuilder);
756756
Target expected =
757757
Target.newBuilder()
@@ -791,7 +791,7 @@ public void testEncodesBounds() {
791791

792792
QueryTarget.Builder queryBuilder =
793793
QueryTarget.newBuilder()
794-
.setParent("projects/p/databases/d")
794+
.setParent("projects/p/databases/d/documents")
795795
.setStructuredQuery(structuredQueryBuilder);
796796
Target expected =
797797
Target.newBuilder()
@@ -819,7 +819,7 @@ public void testEncodesResumeTokens() {
819819

820820
QueryTarget.Builder queryBuilder =
821821
QueryTarget.newBuilder()
822-
.setParent("projects/p/databases/d")
822+
.setParent("projects/p/databases/d/documents")
823823
.setStructuredQuery(structuredQueryBuilder);
824824
Target expected =
825825
Target.newBuilder()

0 commit comments

Comments
 (0)