37
37
import org .springframework .data .couchbase .domain .User ;
38
38
import org .springframework .data .couchbase .domain .UserRepository ;
39
39
import org .springframework .data .mapping .context .MappingContext ;
40
+ import org .springframework .data .projection .SpelAwareProxyProjectionFactory ;
41
+ import org .springframework .data .repository .core .support .DefaultRepositoryMetadata ;
40
42
import org .springframework .data .repository .query .DefaultParameters ;
41
43
import org .springframework .data .repository .query .ParameterAccessor ;
42
44
import org .springframework .data .repository .query .Parameters ;
43
45
import org .springframework .data .repository .query .ParametersParameterAccessor ;
46
+ import org .springframework .data .repository .query .QueryMethod ;
44
47
import org .springframework .data .repository .query .parser .PartTree ;
45
48
46
49
import com .couchbase .client .java .json .JsonArray ;
@@ -69,9 +72,10 @@ void createsQueryCorrectly() throws Exception {
69
72
String input = "findByFirstname" ;
70
73
PartTree tree = new PartTree (input , User .class );
71
74
Method method = UserRepository .class .getMethod (input , String .class );
72
-
73
- N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), "Oliver" ), null , converter ,
74
- bucketName );
75
+ QueryMethod queryMethod = new QueryMethod (method , new DefaultRepositoryMetadata (UserRepository .class ),
76
+ new SpelAwareProxyProjectionFactory ());
77
+ N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), "Oliver" ), queryMethod ,
78
+ converter , bucketName );
75
79
Query query = creator .createQuery ();
76
80
77
81
assertEquals (query .export (), " WHERE " + where (i ("firstname" )).is ("Oliver" ).export ());
@@ -82,9 +86,10 @@ void createsQueryFieldAnnotationCorrectly() throws Exception {
82
86
String input = "findByMiddlename" ;
83
87
PartTree tree = new PartTree (input , Person .class );
84
88
Method method = PersonRepository .class .getMethod (input , String .class );
85
-
86
- N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), "Oliver" ), null , converter ,
87
- bucketName );
89
+ QueryMethod queryMethod = new QueryMethod (method , new DefaultRepositoryMetadata (UserRepository .class ),
90
+ new SpelAwareProxyProjectionFactory ());
91
+ N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), "Oliver" ), queryMethod ,
92
+ converter , bucketName );
88
93
Query query = creator .createQuery ();
89
94
90
95
assertEquals (query .export (), " WHERE " + where (i ("nickname" )).is ("Oliver" ).export ());
@@ -95,10 +100,12 @@ void queryParametersArray() throws Exception {
95
100
String input = "findByFirstnameIn" ;
96
101
PartTree tree = new PartTree (input , User .class );
97
102
Method method = UserRepository .class .getMethod (input , String [].class );
103
+ QueryMethod queryMethod = new QueryMethod (method , new DefaultRepositoryMetadata (UserRepository .class ),
104
+ new SpelAwareProxyProjectionFactory ());
98
105
Query expected = (new Query ()).addCriteria (where (i ("firstname" )).in ("Oliver" , "Charles" ));
99
106
N1qlQueryCreator creator = new N1qlQueryCreator (tree ,
100
- getAccessor (getParameters (method ), new Object [] { new Object [] { "Oliver" , "Charles" } }), null , converter ,
101
- bucketName );
107
+ getAccessor (getParameters (method ), new Object [] { new Object [] { "Oliver" , "Charles" } }), queryMethod ,
108
+ converter , bucketName );
102
109
Query query = creator .createQuery ();
103
110
104
111
// Query expected = (new Query()).addCriteria(where("firstname").in("Oliver", "Charles"));
@@ -115,11 +122,12 @@ void queryParametersJsonArray() throws Exception {
115
122
String input = "findByFirstnameIn" ;
116
123
PartTree tree = new PartTree (input , User .class );
117
124
Method method = UserRepository .class .getMethod (input , JsonArray .class );
118
-
125
+ QueryMethod queryMethod = new QueryMethod (method , new DefaultRepositoryMetadata (UserRepository .class ),
126
+ new SpelAwareProxyProjectionFactory ());
119
127
JsonArray jsonArray = JsonArray .create ();
120
128
jsonArray .add ("Oliver" );
121
129
jsonArray .add ("Charles" );
122
- N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), jsonArray ), null ,
130
+ N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), jsonArray ), queryMethod ,
123
131
converter , bucketName );
124
132
Query query = creator .createQuery ();
125
133
@@ -137,11 +145,13 @@ void queryParametersList() throws Exception {
137
145
String input = "findByFirstnameIn" ;
138
146
PartTree tree = new PartTree (input , User .class );
139
147
Method method = UserRepository .class .getMethod (input , String [].class );
148
+ QueryMethod queryMethod = new QueryMethod (method , new DefaultRepositoryMetadata (UserRepository .class ),
149
+ new SpelAwareProxyProjectionFactory ());
140
150
List <String > list = new LinkedList <>();
141
151
list .add ("Oliver" );
142
152
list .add ("Charles" );
143
153
N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), new Object [] { list }),
144
- null , converter , bucketName );
154
+ queryMethod , converter , bucketName );
145
155
Query query = creator .createQuery ();
146
156
147
157
Query expected = (new Query ()).addCriteria (where (i ("firstname" )).in ("Oliver" , "Charles" ));
@@ -159,8 +169,10 @@ void createsAndQueryCorrectly() throws Exception {
159
169
String input = "findByFirstnameAndLastname" ;
160
170
PartTree tree = new PartTree (input , User .class );
161
171
Method method = UserRepository .class .getMethod (input , String .class , String .class );
162
- N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), "John" , "Doe" ), null ,
163
- converter , bucketName );
172
+ QueryMethod queryMethod = new QueryMethod (method , new DefaultRepositoryMetadata (UserRepository .class ),
173
+ new SpelAwareProxyProjectionFactory ());
174
+ N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), "John" , "Doe" ),
175
+ queryMethod , converter , bucketName );
164
176
Query query = creator .createQuery ();
165
177
166
178
assertEquals (" WHERE " + where (i ("firstname" )).is ("John" ).and (i ("lastname" )).is ("Doe" ).export (), query .export ());
@@ -171,9 +183,10 @@ void createsQueryFindByIdIsNotNullAndFirstname() throws Exception {
171
183
String input = "findByIdIsNotNullAndFirstnameEquals" ;
172
184
PartTree tree = new PartTree (input , User .class );
173
185
Method method = UserRepository .class .getMethod (input , String .class );
174
-
175
- N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), "Oliver" ), null , converter ,
176
- bucketName );
186
+ QueryMethod queryMethod = new QueryMethod (method , new DefaultRepositoryMetadata (UserRepository .class ),
187
+ new SpelAwareProxyProjectionFactory ());
188
+ N1qlQueryCreator creator = new N1qlQueryCreator (tree , getAccessor (getParameters (method ), "Oliver" ), queryMethod ,
189
+ converter , bucketName );
177
190
Query query = creator .createQuery ();
178
191
179
192
assertEquals (query .export (),
@@ -185,9 +198,10 @@ void createsQueryFindByVersionEqualsAndAndFirstname() throws Exception {
185
198
String input = "findByVersionEqualsAndFirstnameEquals" ;
186
199
PartTree tree = new PartTree (input , User .class );
187
200
Method method = UserRepository .class .getMethod (input , Long .class , String .class );
188
-
201
+ QueryMethod queryMethod = new QueryMethod (method , new DefaultRepositoryMetadata (UserRepository .class ),
202
+ new SpelAwareProxyProjectionFactory ());
189
203
N1qlQueryCreator creator = new N1qlQueryCreator (tree ,
190
- getAccessor (getParameters (method ), 1611287177404088320L , "Oliver" ), null , converter , bucketName );
204
+ getAccessor (getParameters (method ), 1611287177404088320L , "Oliver" ), queryMethod , converter , bucketName );
191
205
Query query = creator .createQuery ();
192
206
193
207
assertEquals (query .export (), " WHERE " + where (x ("META(`" + bucketName + "`).`cas`" )).is (1611287177404088320L )
0 commit comments