From 566e69a8255693e3a9e3751d874e18205012b152 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 14 Jul 2017 11:29:11 +0200 Subject: [PATCH] DATAMONGO-1703 - Polishing. Use lombok's Value for ObjectPathItem. Make methods accessible in DefaultDbRefResolver before calling. Use class.cast to avoid warnings. Update Javadoc. Original pull request: #478. --- .../core/convert/DefaultDbRefResolver.java | 2 + .../data/mongodb/core/convert/ObjectPath.java | 42 +++++-------------- 2 files changed, 12 insertions(+), 32 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultDbRefResolver.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultDbRefResolver.java index e74bfddf9..3379470cd 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultDbRefResolver.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultDbRefResolver.java @@ -326,6 +326,8 @@ public class DefaultDbRefResolver implements DbRefResolver { return null; } + ReflectionUtils.makeAccessible(method); + return method.invoke(target, args); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ObjectPath.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ObjectPath.java index f08a736e7..e64beb6ff 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ObjectPath.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ObjectPath.java @@ -15,6 +15,8 @@ */ package org.springframework.data.mongodb.core.convert; +import lombok.Value; + import java.util.ArrayList; import java.util.List; @@ -29,8 +31,8 @@ import org.springframework.util.StringUtils; * when resolving more nested objects. This allows to avoid re-resolving object instances that are logically equivalent * to already resolved ones. *

- * An immutable ordered set of target objects for {@link Document} to {@link Object} conversions. Object paths can be - * constructed by the {@link #toObjectPath(Object)} method and extended via {@link #push(Object)}. + * An immutable ordered set of target objects for {@link org.bson.Document} to {@link Object} conversions. Object paths + * can be extended via {@link #push(Object, MongoPersistentEntity, Object)}. * * @author Thomas Darimont * @author Oliver Gierke @@ -138,7 +140,7 @@ class ObjectPath { if (collection.equals(item.getCollection()) && id.equals(item.getIdValue()) && ClassUtils.isAssignable(type, object.getClass())) { - return (T) object; + return type.cast(object); } } @@ -179,37 +181,13 @@ class ObjectPath { * * @author Thomas Darimont * @author Oliver Gierke + * @author Mark Paluch */ + @Value private static class ObjectPathItem { - private final Object object; - private final Object idValue; - private final String collection; - - /** - * Creates a new {@link ObjectPathItem}. - * - * @param object - * @param idValue - * @param collection - */ - ObjectPathItem(Object object, Object idValue, String collection) { - - this.object = object; - this.idValue = idValue; - this.collection = collection; - } - - Object getObject() { - return object; - } - - Object getIdValue() { - return idValue; - } - - String getCollection() { - return collection; - } + Object object; + Object idValue; + String collection; } }