From 8f55850118e14ae29e18b7e05fc4714ccf073fdc Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 7 May 2020 14:12:27 +0200 Subject: [PATCH] #146 - Replace EntityCallback lambdas in MongoDB benchmarks. Use a dedicated class instead of a lambda expression because we cannot capture the entity type when using the latter which leads to false results when callbacks that should not be called get invoked due to their Object type signature. closes: #146 --- .../mongodb/AfterConvertCallbacksBenchmark.java | 10 ++++++++-- .../microbenchmark/mongodb/CallbacksBenchmark.java | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/benchmark/mongodb/src/main/java/org/springframework/data/microbenchmark/mongodb/AfterConvertCallbacksBenchmark.java b/benchmark/mongodb/src/main/java/org/springframework/data/microbenchmark/mongodb/AfterConvertCallbacksBenchmark.java index 60a31c1..4285dd1 100644 --- a/benchmark/mongodb/src/main/java/org/springframework/data/microbenchmark/mongodb/AfterConvertCallbacksBenchmark.java +++ b/benchmark/mongodb/src/main/java/org/springframework/data/microbenchmark/mongodb/AfterConvertCallbacksBenchmark.java @@ -99,7 +99,13 @@ public class AfterConvertCallbacksBenchmark extends AbstractMicrobenchmark { @Bean AfterConvertCallback afterConvertCallback() { - return (it, document, collection) -> { + return new PersonAfterConvertCallback(); + } + + private static class PersonAfterConvertCallback implements AfterConvertCallback { + + @Override + public Person onAfterConvert(Person it, Document document, String collection) { Person target = new Person(); target.id = it.id; @@ -108,7 +114,7 @@ public class AfterConvertCallbacksBenchmark extends AbstractMicrobenchmark { target.address = it.address; return target; - }; + } } } diff --git a/benchmark/mongodb/src/main/java/org/springframework/data/microbenchmark/mongodb/CallbacksBenchmark.java b/benchmark/mongodb/src/main/java/org/springframework/data/microbenchmark/mongodb/CallbacksBenchmark.java index 02962cb..5f408be 100644 --- a/benchmark/mongodb/src/main/java/org/springframework/data/microbenchmark/mongodb/CallbacksBenchmark.java +++ b/benchmark/mongodb/src/main/java/org/springframework/data/microbenchmark/mongodb/CallbacksBenchmark.java @@ -100,7 +100,13 @@ public class CallbacksBenchmark extends AbstractMicrobenchmark { @Bean BeforeConvertCallback convertCallback() { - return (it, document) -> { + return new PersonBeforeConvertCallback(); + } + + private static class PersonBeforeConvertCallback implements BeforeConvertCallback { + + @Override + public Person onBeforeConvert(Person it, String document) { Person target = new Person(); target.id = it.id; @@ -109,7 +115,7 @@ public class CallbacksBenchmark extends AbstractMicrobenchmark { target.address = it.address; return target; - }; + } } } }