- 28 10月, 2013 1 次提交
-
-
由 Sam Brannen 提交于
Spring 3.0 already allows component stereotypes to be used in a meta-annotation fashion, for example by creating a custom @TransactionalService stereotype annotation which combines @Transactional and @Service in a single, reusable, application-specific annotation. However, the Spring TestContext Framework (TCF) currently does not provide any support for test-related annotations to be used as meta-annotations. This commit overhauls the TCF with regard to how annotations are retrieved and adds explicit support for the following annotations to be used as meta-annotations in conjunction with the TCF. - @ContextConfiguration - @ContextHierarchy - @ActiveProfiles - @DirtiesContext - @IfProfileValue - @ProfileValueSourceConfiguration - @BeforeTransaction - @AfterTransaction - @TransactionConfiguration - @Rollback - @TestExecutionListeners - @Repeat - @Timed - @WebAppConfiguration Note that meta-annotation support for @Transactional was already available prior to this commit. The following is a summary of the major changes included in this commit. - Now using AnnotationUtils.getAnnotation() instead of Class.getAnnotation() where appropriate in the TestContext Framework. - Now using AnnotationUtils.findAnnotation() instead of Class.isAnnotationPresent() where appropriate in the TestContext Framework. - Introduced findAnnotationPrefersInteracesOverLocalMetaAnnotations() in AnnotationUtilsTests in order to verify the status quo. - AnnotationUtils.findAnnotationDeclaringClass() and AnnotationUtils.findAnnotationDeclaringClassForTypes() now support meta annotations. - Introduced MetaAnnotationUtils and AnnotationDescriptor in the spring-test module. - Introduced UntypedAnnotationDescriptor in MetaAnnotationUtils. - Introduced findAnnotationDescriptorForTypes() in MetaAnnotationUtils. - ContextLoaderUtils now uses MetaAnnotationUtils for looking up @ActiveProfiles as a potential meta-annotation. - TestContextManager now uses MetaAnnotationUtils for looking up @TestExecutionListeners as a potential meta-annotation. - DirtiesContextTestExecutionListener now uses AnnotationUtils for looking up @DirtiesContext as a potential meta-annotation. - Introduced DirtiesContextTestExecutionListenerTests. - ProfileValueUtils now uses AnnotationUtils for looking up @IfProfileValue and @ProfileValueSourceConfiguration as potential meta-annotations. - @BeforeTransaction and @AfterTransaction now support ANNOTATION_TYPE as a target, allowing them to be used as meta-annotations. - TransactionalTestExecutionListener now uses AnnotationUtils for looking up @BeforeTransaction, @AfterTransaction, @Rollback, and @TransactionConfiguration as potential meta-annotations. - Introduced TransactionalTestExecutionListenerTests. - @Repeat and @Timed now support ANNOTATION_TYPE as a target, allowing them to be used as meta-annotations. - SpringJUnit4ClassRunner now uses AnnotationUtils for looking up @Repeat and @Timed as potential meta-annotations. - Moved all remaining logic for building the MergedContextConfiguration from the DefaultTestContext constructor to ContextLoaderUtils.buildMergedContextConfiguration(). - Verified meta-annotation support for @WebAppConfiguration and @ContextConfiguration. Issue: SPR-7827
-
- 27 10月, 2013 1 次提交
-
-
由 Phillip Webb 提交于
Issue: SPR-11034
-
- 26 10月, 2013 6 次提交
-
-
由 Juergen Hoeller 提交于
Issue: SPR-11034
-
由 Juergen Hoeller 提交于
(cherry picked from commit 6021822c)
-
由 Juergen Hoeller 提交于
Issue: SPR-10995 (cherry picked from commit 045f78e6)
-
由 Phillip Webb 提交于
Fix off-by-one error in StringUtils.parseLocaleString() Issue: SPR-10364
-
由 Phillip Webb 提交于
Add getSource() method to ResolvableType and TypeDescriptor allowing access to the underlying source field or method parameter when possible. Primarily added to provide access to additional type information or meta-data that alternative JVM languages may provide. Issue: SPR-10887
-
由 Phillip Webb 提交于
Restore prior behavior of GenericTypeResolver.resolveTypeArguments to never include null elements in the returned array. Issue: SPR-11030
-
- 25 10月, 2013 2 次提交
-
-
由 Juergen Hoeller 提交于
DefaultListableBeanFactory performs a fallback check for autowire candidates now, which GenericTypeAwareAutowireCandidateResolver implements to accept raw type matches if the target class has unresolvable type variables. Full generic matches are still preferred; the BeanFactory will only start looking for fallback matches if the first pass led to an empty result. Issue: SPR-10993 Issue: SPR-11004
-
由 Juergen Hoeller 提交于
-
- 23 10月, 2013 1 次提交
-
-
由 Phillip Webb 提交于
Support repeatable @PropertySource annotations in Java 8 and add @PropertySources container annotation for Java 6/7. Also add an ignoreResourceNotFound attribute to @PropertySource allowing missing property resources to be silently ignored. This commit also introduces some generally useful methods to AnnotationUtils for working with @Repeatable annotations. Issue: SPR-8371
-
- 22 10月, 2013 2 次提交
-
-
由 Rossen Stoyanchev 提交于
The key contract is MvcUrls. An instance is automatically created with the Spring MVC namespace and the MVC Java config but can also be easily created in any configuration. Some example tests can be found in DefaultMvcUrlsTests. Issue: SPR-10665, SPR-8826
-
由 Oliver Gierke 提交于
MvcUriComponentsBuilder allows creating URIs that point to Spring MVC controller methods annotated with @RequestMapping. It builds them by exposing a mock method invocation API similar to Mockito, records the method invocations and thus builds up the URI by inspecting the mapping annotations and the parameters handed into the method invocations. Introduced a new SPI UriComponentsContributor that should be implemented by HandlerMethodArgumentResolvers that actually contribute path segments or query parameters to a URI. While the newly introduced MvcUriComponentsBuilder looks up those UriComponentsContributor instances from the MVC configuration. The MvcUriComponentsBuilderFactory (name to be discussed - MvcUris maybe?) prevents the multiple lookups by keeping the UriComponentsBuilder instances in an instance variable. So an instance of the factory could be exposed as Spring bean or through a HandlerMethodArgumentResolver to be injected into Controller methods. Issue: SPR-10665, SPR-8826
-
- 19 10月, 2013 1 次提交
-
-
由 Phillip Webb 提交于
Restore the ability to create a TypeDescriptor for a collection or map where the generics may be null. Issue: SPR-11006
-
- 18 10月, 2013 2 次提交
-
-
由 Phillip Webb 提交于
Refactor TypeDescriptor to use ResolvableType in order to retain full generic type information, in the process fixing MultiValueMap support in MapToMapConverter. Issue: SPR-9499
-
由 Phillip Webb 提交于
Fix 'missing serialVersionUID' warnings, support for void.class types and refine resolve() algorithm to support narrowed types. Issue: SPR-10973
-
- 17 10月, 2013 1 次提交
-
-
由 Phillip Webb 提交于
- Support for serialization - Allow programmatic creation of an array from a given component type - Allow programmatic creation with given generics - Extract generics from Class types using Class.getTypeParameters() - Move TypeVariableResolver to an inner class (and make method private) - Refine 'resolve()' algorithm Issue: SPR-10973
-
- 15 10月, 2013 5 次提交
-
-
由 Sam Brannen 提交于
-
由 Sam Brannen 提交于
- Now avoiding NullPointerExceptions in GenericTypeResolver's resolveReturnTypeForGenericMethod() in case the supplied ClassLoader is null. - AutowireUtils.resolveReturnTypeForFactoryMethod() now properly asserts that the supplied ClassLoader is not null. - Fixed copy-n-paste errors in Javadoc for AutowireUtils.resolveReturnTypeForFactoryMethod(). Issue: SPR-10411
-
由 Sam Brannen 提交于
SPR-10411
-
由 Juergen Hoeller 提交于
Includes revisions of MethodParameter and DependencyDescriptor (in particular towards a reference to the containing class). Also refines several ResolvableType method signatures. Issue: SPR-9965
-
由 Juergen Hoeller 提交于
We're consistently resolving class names now, and the entire algorithm moved from GenericTypeResolver to the internal AutowireUtils helper in the bean factory package. Issue: SPR-10411
-
- 14 10月, 2013 1 次提交
-
-
由 Sam Brannen 提交于
-
- 11 10月, 2013 2 次提交
-
-
由 Phillip Webb 提交于
Issue: SPR-10973
-
由 Phillip Webb 提交于
Fix ResolvableType.isAssignableFrom to correctly deal with <?> style generics. Issue: SPR-10973
-
- 10 10月, 2013 4 次提交
-
-
由 Phillip Webb 提交于
Refactor AbstractMessageConverterMethodArgumentResolver and BridgeMethodResolver to use ResolvableType in preference to deprecated GenericTypeResolver calls. Issue: SPR-10980
-
由 Phillip Webb 提交于
Refactor GenericCollectionTypeResolver to make use of ResolvableType for generic resolution. Issue: SPR-10977
-
由 Phillip Webb 提交于
Refactor GenericTypeResolver to make use of ResolvableType for generic resolution. Issue: SPR-10978
-
由 Phillip Webb 提交于
Add a new ResolvableType Class which encapsulates java.lang.reflect.Type, providing access to supertypes, interfaces and generic parameters along with the ability to ultimately resolve to a java.lang.Class. ResolvableTypes may be obtained from fields, method parameters, method returns, classes or directly from a java.lang.reflect.Type. Most methods will themselves return ResolvableTypes, allowing easy navigation. For example: private HashMap<Integer, List<String>> myMap; public void example() { ResolvableType t = ResolvableType.forField( getClass().getDeclaredField("myMap")); t.getSuperType(); // AbstractMap<Integer, List<String>>; t.asMap(); // Map<Integer, List<String>> t.getGeneric(0).resolve(); // Integer t.getGeneric(1).resolve(); // List t.getGeneric(1); // List<String> t.resolveGeneric(1, 0); // String } Issue: SPR-10973
-
- 05 10月, 2013 2 次提交
-
-
由 Juergen Hoeller 提交于
Comprehensive update to the framework's TimeZone handling, including a new TimeZoneAwareLocaleContext and a LocaleContextResolver for Spring MVC A few noteworthy minor changes: LocaleContext.getLocale() may return null in special cases (not by default), which our own accessing classes are able to handle now. If there is a non-null TimeZone user setting, we're exposing it to all collaborating libraries, in particular to JSTL, Velocity and JasperReports. Our JSR-310 and Joda-Time support falls back to checking the general LocaleContext TimeZone now, adapting it to their time zone types, if no more specific setting has been provided. Our DefaultConversionService has TimeZone<->ZoneId converters registered. And finally, we're using a custom parseTimeZoneString method now that doesn't accept the TimeZone.getTimeZone(String) GMT fallback for an invalid time zone id anymore. Issue: SPR-1528
-
由 Juergen Hoeller 提交于
-
- 28 9月, 2013 1 次提交
-
-
由 Phillip Webb 提交于
Fix ASM AnnotationAttributesReadingVisitor to correctly deal with subclasses enums. Issue: SPR-10914
-
- 14 9月, 2013 1 次提交
-
-
由 Rob Winch 提交于
Added test to StandardReflectionParameterNameDiscoverer that demonstrates discovering of parameter names on an interface. Issue: SPR-9643
-
- 12 9月, 2013 1 次提交
-
-
由 Sam Brannen 提交于
-
- 04 9月, 2013 1 次提交
-
-
由 Arjen Poutsma 提交于
Added extension to Future with capabilities for registering callbacks when the future is complete. - Added ListenableFuture, ListenableFutureCallback, ListenableFutureCallbackRegistry, and ListenableFutureTask. - Using ListenableFuture in AsyncRestOperations/AsyncRestTemplate. - Added AsyncListenableTaskExecutor, implemented in SimpleAsyncTaskExecutor. - Added FutureAdapter and ListenableFutureAdapter.
-
- 30 8月, 2013 2 次提交
-
-
由 Juergen Hoeller 提交于
-
由 Juergen Hoeller 提交于
Issue: SPR-1528
-
- 29 8月, 2013 3 次提交
-
-
由 Antonio Marrero 提交于
Update AntPathMatcher Comparator to treat `/**` in the same way as `null` paths. Prior to this commit the pattern `/**` would be picked in preference to patterns with 3 or more PathVariable (e.g. `/matches/{matchId}/ periods/{periodId}/teams/{teamId}/results`). Issue: SPR-10550
-
由 Phillip Webb 提交于
Refine AntPathMatcher.combine rules to allow direct concatenation of patterns when pattern1 does not contain '*.'. Prior to this commit direct concatenation was allowed when pattern1 did not contain '.', this prevented calls of the form: pathMatcher.combine("/1.0", "/foo/test") from working as expected. This commit also applies some general cleanup to the `combine` method. Issue: SPR-10554
-
由 Juergen Hoeller 提交于
-