From 030f12023c5d5e49a8da94f698ab02cbc881c000 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 20 Jan 2022 16:15:16 +0100 Subject: [PATCH] Support aggregation operators $acos and $acosh via expression method reference. This commit registers the acos(...) and acosh(...) methods for transformation via SpEL. Original Pull Request: #3858 --- .../data/mongodb/core/spel/MethodReferenceNode.java | 2 ++ .../SpelExpressionTransformerUnitTests.java | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/MethodReferenceNode.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/MethodReferenceNode.java index dc7a3cc98..2f260192b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/MethodReferenceNode.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/MethodReferenceNode.java @@ -99,6 +99,8 @@ public class MethodReferenceNode extends ExpressionNode { map.put("asinh", singleArgRef().forOperator("$asinh")); map.put("cos", singleArgRef().forOperator("$cos")); map.put("cosh", singleArgRef().forOperator("$cosh")); + map.put("acos", singleArgRef().forOperator("$acos")); + map.put("acosh", singleArgRef().forOperator("$acosh")); map.put("tan", singleArgRef().forOperator("$tan")); map.put("tanh", singleArgRef().forOperator("$tanh")); map.put("rand", emptyRef().forOperator("$rand")); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformerUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformerUnitTests.java index 899e02a17..e01ee9cbb 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformerUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformerUnitTests.java @@ -1099,6 +1099,16 @@ public class SpelExpressionTransformerUnitTests { assertThat(transform("cosh(angle)")).isEqualTo("{ \"$cosh\" : \"$angle\"}"); } + @Test // GH-3707 + void shouldRenderACos() { + assertThat(transform("acos(angle)")).isEqualTo("{ \"$acos\" : \"$angle\"}"); + } + + @Test // GH-3707 + void shouldRenderACosh() { + assertThat(transform("acosh(angle)")).isEqualTo("{ \"$acosh\" : \"$angle\"}"); + } + @Test // GH-3730 void shouldRenderTan() { assertThat(transform("tan(angle)")).isEqualTo("{ \"$tan\" : \"$angle\"}");