diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java index 7e45832b4..3c48f35af 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java @@ -1,5 +1,5 @@ /* - * Copyright 2011 the original author or authors. + * Copyright 2011-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import org.springframework.core.MethodParameter; import org.springframework.data.mongodb.core.geo.Distance; import org.springframework.data.mongodb.core.geo.Point; import org.springframework.data.mongodb.repository.Near; +import org.springframework.data.mongodb.repository.query.MongoParameters.MongoParameter; import org.springframework.data.repository.query.Parameter; import org.springframework.data.repository.query.Parameters; @@ -31,7 +32,7 @@ import org.springframework.data.repository.query.Parameters; * * @author Oliver Gierke */ -public class MongoParameters extends Parameters { +public class MongoParameters extends Parameters { private final Integer distanceIndex; private Integer nearIndex; @@ -55,6 +56,14 @@ public class MongoParameters extends Parameters { } } + private MongoParameters(List parameters, Integer distanceIndex, Integer nearIndex) { + + super(parameters); + + this.distanceIndex = distanceIndex; + this.nearIndex = nearIndex; + } + @SuppressWarnings("unchecked") private final int getNearIndex(List> parameterTypes) { @@ -81,7 +90,7 @@ public class MongoParameters extends Parameters { * @see org.springframework.data.repository.query.Parameters#createParameter(org.springframework.core.MethodParameter) */ @Override - protected Parameter createParameter(MethodParameter parameter) { + protected MongoParameter createParameter(MethodParameter parameter) { MongoParameter mongoParameter = new MongoParameter(parameter); @@ -114,6 +123,15 @@ public class MongoParameters extends Parameters { return nearIndex; } + /* + * (non-Javadoc) + * @see org.springframework.data.repository.query.Parameters#createFrom(java.util.List) + */ + @Override + protected MongoParameters createFrom(List parameters) { + return new MongoParameters(parameters, this.distanceIndex, this.nearIndex); + } + /** * Custom {@link Parameter} implementation adding parameters of type {@link Distance} to the special ones. * diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryMethod.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryMethod.java index 034261078..0f30413bc 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryMethod.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryMethod.java @@ -28,7 +28,6 @@ import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty; import org.springframework.data.mongodb.repository.Query; import org.springframework.data.repository.core.RepositoryMetadata; -import org.springframework.data.repository.query.Parameters; import org.springframework.data.repository.query.QueryMethod; import org.springframework.data.util.ClassTypeInformation; import org.springframework.data.util.TypeInformation; @@ -42,9 +41,8 @@ import org.springframework.util.StringUtils; */ public class MongoQueryMethod extends QueryMethod { - @SuppressWarnings("unchecked") - private static final List> GEO_NEAR_RESULTS = Arrays - .asList(GeoResult.class, GeoResults.class, GeoPage.class); + @SuppressWarnings("unchecked") private static final List> GEO_NEAR_RESULTS = Arrays.asList(GeoResult.class, + GeoResults.class, GeoPage.class); private final Method method; private final MappingContext, MongoPersistentProperty> mappingContext; @@ -72,7 +70,7 @@ public class MongoQueryMethod extends QueryMethod { * @see org.springframework.data.repository.query.QueryMethod#getParameters(java.lang.reflect.Method) */ @Override - protected Parameters createParameters(Method method) { + protected MongoParameters createParameters(Method method) { return new MongoParameters(method, isGeoNearQuery(method)); }