Skip to content

Commit 8ece395

Browse files
committed
JAVA-2325: Handle normalization field in collation document in legacy API
1 parent c5fe552 commit 8ece395

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

driver/src/main/com/mongodb/DBObjectCollationHelper.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
package com.mongodb;
1818

19+
import com.mongodb.client.model.Collation;
1920
import com.mongodb.client.model.CollationAlternate;
2021
import com.mongodb.client.model.CollationCaseFirst;
2122
import com.mongodb.client.model.CollationMaxVariable;
22-
import com.mongodb.client.model.Collation;
2323
import com.mongodb.client.model.CollationStrength;
2424

2525
final class DBObjectCollationHelper {
@@ -91,6 +91,14 @@ static Collation createCollationFromOptions(final DBObject options) {
9191
builder.collationMaxVariable(CollationMaxVariable.fromString((String) maxVariable));
9292
}
9393
}
94+
if (collation.get("normalization") != null) {
95+
Object normalization = collation.get("normalization");
96+
if (!(normalization instanceof Boolean)) {
97+
throw new IllegalArgumentException("collation 'normalization' should be a Boolean");
98+
} else {
99+
builder.normalization((Boolean) normalization);
100+
}
101+
}
94102
if (collation.get("backwards") != null) {
95103
Object backwards = collation.get("backwards");
96104
if (!(backwards instanceof Boolean)) {

driver/src/test/unit/com/mongodb/DBObjectCollationHelperSpecification.groovy

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
package com.mongodb
1818

19+
import com.mongodb.client.model.Collation
1920
import com.mongodb.client.model.CollationAlternate
2021
import com.mongodb.client.model.CollationCaseFirst
2122
import com.mongodb.client.model.CollationMaxVariable
22-
import com.mongodb.client.model.Collation
2323
import com.mongodb.client.model.CollationStrength
2424
import spock.lang.Specification
2525

@@ -40,10 +40,11 @@ class DBObjectCollationHelperSpecification extends Specification {
4040
.numericOrdering(true)
4141
.collationAlternate(CollationAlternate.SHIFTED)
4242
.collationMaxVariable(CollationMaxVariable.SPACE)
43+
.normalization(true)
4344
.backwards(true)
4445
.build() | '''{locale: "en", caseLevel: true, caseFirst: "off", strength: 5,
4546
numericOrdering: true, alternate: "shifted",
46-
maxVariable: "space", backwards: true}'''
47+
maxVariable: "space", normalization: true, backwards: true}'''
4748
}
4849

4950
def 'should return null if no options are set'() {
@@ -66,6 +67,7 @@ class DBObjectCollationHelperSpecification extends Specification {
6667
'{ locale: "en", numericOrdering: 1}',
6768
'{ locale: "en", alternate: true}',
6869
'{ locale: "en", maxVariable: true}',
70+
'{ locale: "en", normalization: 1}',
6971
'{ locale: "en", backwards: 1}']
7072
}
7173
}

0 commit comments

Comments
 (0)