|
47 | 47 | *
|
48 | 48 | * @author Oliver Gierke
|
49 | 49 | * @author Thomas Darimont
|
| 50 | + * @author Mark Paluch |
50 | 51 | */
|
51 | 52 | class DefaultRepositoryInformation implements RepositoryInformation {
|
52 | 53 |
|
53 |
| - @SuppressWarnings("rawtypes") private static final TypeVariable<Class<Repository>>[] PARAMETERS = Repository.class |
54 |
| - .getTypeParameters(); |
| 54 | + @SuppressWarnings("rawtypes") // |
| 55 | + private static final TypeVariable<Class<Repository>>[] PARAMETERS = Repository.class.getTypeParameters(); |
55 | 56 | private static final String DOMAIN_TYPE_NAME = PARAMETERS[0].getName();
|
56 | 57 | private static final String ID_TYPE_NAME = PARAMETERS[1].getName();
|
57 | 58 |
|
@@ -334,42 +335,13 @@ public Set<Class<?>> getAlternativeDomainTypes() {
|
334 | 335 | return metadata.getAlternativeDomainTypes();
|
335 | 336 | }
|
336 | 337 |
|
337 |
| - /** |
338 |
| - * Checks the given method's parameters to match the ones of the given base class method. Matches generic arguments |
339 |
| - * against the ones bound in the given repository interface. |
340 |
| - * |
341 |
| - * @param method |
342 |
| - * @param baseClassMethod |
343 |
| - * @return |
| 338 | + /* |
| 339 | + * (non-Javadoc) |
| 340 | + * @see org.springframework.data.repository.core.RepositoryMetadata#isReactiveRepository() |
344 | 341 | */
|
345 |
| - private boolean parametersMatch(Method method, Method baseClassMethod) { |
346 |
| - |
347 |
| - Class<?>[] methodParameterTypes = method.getParameterTypes(); |
348 |
| - Type[] genericTypes = baseClassMethod.getGenericParameterTypes(); |
349 |
| - Class<?>[] types = baseClassMethod.getParameterTypes(); |
350 |
| - |
351 |
| - for (int i = 0; i < genericTypes.length; i++) { |
352 |
| - |
353 |
| - Type genericType = genericTypes[i]; |
354 |
| - Class<?> type = types[i]; |
355 |
| - MethodParameter parameter = new MethodParameter(method, i); |
356 |
| - Class<?> parameterType = resolveParameterType(parameter, metadata.getRepositoryInterface()); |
357 |
| - |
358 |
| - if (genericType instanceof TypeVariable<?>) { |
359 |
| - |
360 |
| - if (!matchesGenericType((TypeVariable<?>) genericType, ResolvableType.forMethodParameter(parameter))) { |
361 |
| - return false; |
362 |
| - } |
363 |
| - |
364 |
| - continue; |
365 |
| - } |
366 |
| - |
367 |
| - if (!type.isAssignableFrom(parameterType) || !type.equals(methodParameterTypes[i])) { |
368 |
| - return false; |
369 |
| - } |
370 |
| - } |
371 |
| - |
372 |
| - return true; |
| 342 | + @Override |
| 343 | + public boolean isReactiveRepository() { |
| 344 | + return metadata.isReactiveRepository(); |
373 | 345 | }
|
374 | 346 |
|
375 | 347 | /**
|
@@ -408,4 +380,42 @@ protected boolean matchesGenericType(TypeVariable<?> variable, ResolvableType pa
|
408 | 380 |
|
409 | 381 | return false;
|
410 | 382 | }
|
| 383 | + |
| 384 | + /** |
| 385 | + * Checks the given method's parameters to match the ones of the given base class method. Matches generic arguments |
| 386 | + * against the ones bound in the given repository interface. |
| 387 | + * |
| 388 | + * @param method |
| 389 | + * @param baseClassMethod |
| 390 | + * @return |
| 391 | + */ |
| 392 | + private boolean parametersMatch(Method method, Method baseClassMethod) { |
| 393 | + |
| 394 | + Class<?>[] methodParameterTypes = method.getParameterTypes(); |
| 395 | + Type[] genericTypes = baseClassMethod.getGenericParameterTypes(); |
| 396 | + Class<?>[] types = baseClassMethod.getParameterTypes(); |
| 397 | + |
| 398 | + for (int i = 0; i < genericTypes.length; i++) { |
| 399 | + |
| 400 | + Type genericType = genericTypes[i]; |
| 401 | + Class<?> type = types[i]; |
| 402 | + MethodParameter parameter = new MethodParameter(method, i); |
| 403 | + Class<?> parameterType = resolveParameterType(parameter, metadata.getRepositoryInterface()); |
| 404 | + |
| 405 | + if (genericType instanceof TypeVariable<?>) { |
| 406 | + |
| 407 | + if (!matchesGenericType((TypeVariable<?>) genericType, ResolvableType.forMethodParameter(parameter))) { |
| 408 | + return false; |
| 409 | + } |
| 410 | + |
| 411 | + continue; |
| 412 | + } |
| 413 | + |
| 414 | + if (!type.isAssignableFrom(parameterType) || !type.equals(methodParameterTypes[i])) { |
| 415 | + return false; |
| 416 | + } |
| 417 | + } |
| 418 | + |
| 419 | + return true; |
| 420 | + } |
411 | 421 | }
|
0 commit comments