DATACOUCH-181 - Adapted to API changes in Spring Data Commons.

Related ticket: DATACMNS-89.
This commit is contained in:
Oliver Gierke
2015-12-14 20:53:55 +01:00
parent 9a26c5cb57
commit 9fa51744d7
2 changed files with 21 additions and 22 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2013, 2014 the original author or authors.
* Copyright 2013-2015 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.
@@ -16,15 +16,13 @@
package org.springframework.data.couchbase.repository.query;
import org.springframework.data.couchbase.core.mapping.CouchbasePersistentEntity;
import org.springframework.data.couchbase.core.mapping.CouchbasePersistentProperty;
import java.lang.reflect.Method;
import org.springframework.data.couchbase.core.view.View;
import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.projection.ProjectionFactory;
import org.springframework.data.repository.core.RepositoryMetadata;
import org.springframework.data.repository.query.QueryMethod;
import java.lang.reflect.Method;
/**
* Represents a query method with couchbase extensions.
*
@@ -32,15 +30,11 @@ import java.lang.reflect.Method;
*/
public class CouchbaseQueryMethod extends QueryMethod {
private final Method method;
private final MappingContext<? extends CouchbasePersistentEntity<?>, CouchbasePersistentProperty> mappingContext;
private final View viewAnnotation;
public CouchbaseQueryMethod(Method method, RepositoryMetadata metadata,
MappingContext<? extends CouchbasePersistentEntity<?>, CouchbasePersistentProperty> mappingContext) {
super(method, metadata);
this.method = method;
this.mappingContext = mappingContext;
public CouchbaseQueryMethod(Method method, RepositoryMetadata metadata, ProjectionFactory factory) {
super(method, metadata, factory);
this.viewAnnotation = method.getAnnotation(View.class);
}
/**
@@ -53,14 +47,11 @@ public class CouchbaseQueryMethod extends QueryMethod {
}
/**
* Returns the @View annoation if set, null otherwise.
* Returns the @View annotation if set, null otherwise.
*
* @return the view annotation of present.
*/
public View getViewAnnotation() {
return method.getAnnotation(View.class);
return viewAnnotation;
}
}

View File

@@ -24,6 +24,7 @@ import org.springframework.data.couchbase.repository.query.CouchbaseQueryMethod;
import org.springframework.data.couchbase.repository.query.ViewBasedCouchbaseQuery;
import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.mapping.model.MappingException;
import org.springframework.data.projection.ProjectionFactory;
import org.springframework.data.repository.core.NamedQueries;
import org.springframework.data.repository.core.RepositoryInformation;
import org.springframework.data.repository.core.RepositoryMetadata;
@@ -128,9 +129,16 @@ public class CouchbaseRepositoryFactory extends RepositoryFactorySupport {
* Currently, only views are supported. N1QL support to be added.
*/
private class CouchbaseQueryLookupStrategy implements QueryLookupStrategy {
@Override
public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, NamedQueries namedQueries) {
CouchbaseQueryMethod queryMethod = new CouchbaseQueryMethod(method, metadata, mappingContext);
/*
* (non-Javadoc)
* @see org.springframework.data.repository.query.QueryLookupStrategy#resolveQuery(java.lang.reflect.Method, org.springframework.data.repository.core.RepositoryMetadata, org.springframework.data.projection.ProjectionFactory, org.springframework.data.repository.core.NamedQueries)
*/
@Override
public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory,
NamedQueries namedQueries) {
CouchbaseQueryMethod queryMethod = new CouchbaseQueryMethod(method, metadata, factory);
return new ViewBasedCouchbaseQuery(queryMethod, couchbaseOperations);
}
}