1. 28 10月, 2013 1 次提交
    • S
      Provide meta-annotation support in the TCF · 5e7021f3
      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
      5e7021f3
  2. 27 10月, 2013 1 次提交
  3. 26 10月, 2013 6 次提交
  4. 25 10月, 2013 2 次提交
    • J
      Accept non-generic type match as a fallback · 08517667
      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
      08517667
    • J
      Upgraded to ASM 4.2 · 833d76ba
      Juergen Hoeller 提交于
      833d76ba
  5. 23 10月, 2013 1 次提交
    • P
      Add @PropertySources and ignoreResourceNotFound · e95bd9e2
      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
      e95bd9e2
  6. 22 10月, 2013 2 次提交
    • R
      Integrate suggested support for creating MVC URLs · bafc73f1
      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
      bafc73f1
    • O
      Introduced MvcUriComponentsBuilder to create URIs pointing to controller methods. · 4fd27b12
      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
      4fd27b12
  7. 19 10月, 2013 1 次提交
  8. 18 10月, 2013 2 次提交
  9. 17 10月, 2013 1 次提交
    • P
      Refine ResolvableType class · 3337fd32
      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
      3337fd32
  10. 15 10月, 2013 5 次提交
  11. 14 10月, 2013 1 次提交
  12. 11 10月, 2013 2 次提交
  13. 10 10月, 2013 4 次提交
    • P
      Refactor from deprecated GenericTypeResolver calls · 501a1cbb
      Phillip Webb 提交于
      Refactor AbstractMessageConverterMethodArgumentResolver and
      BridgeMethodResolver to use ResolvableType in preference to deprecated
      GenericTypeResolver calls.
      
      Issue: SPR-10980
      501a1cbb
    • P
      Use ResolvableType in GenericCollectnTypeResolver · fdf0ef40
      Phillip Webb 提交于
      Refactor GenericCollectionTypeResolver to make use of ResolvableType
      for generic resolution.
      
      Issue: SPR-10977
      fdf0ef40
    • P
      Use ResolvableType in GenericTypeResolver · 595efe9a
      Phillip Webb 提交于
      Refactor GenericTypeResolver to make use of ResolvableType
      for generic resolution.
      
      Issue: SPR-10978
      595efe9a
    • P
      Introduce ResolvableType Class · 6a18b004
      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
      6a18b004
  14. 05 10月, 2013 2 次提交
    • J
      Comprehensive update to the framework's TimeZone handling, including a new... · 4574528a
      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
      4574528a
    • J
      bd4c64af
  15. 28 9月, 2013 1 次提交
  16. 14 9月, 2013 1 次提交
  17. 12 9月, 2013 1 次提交
  18. 04 9月, 2013 1 次提交
    • A
      Added ListenableFuture interface · d0aa158a
      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.
      d0aa158a
  19. 30 8月, 2013 2 次提交
  20. 29 8月, 2013 3 次提交
    • A
      Assign lowest priority to `/**` pattern · 57f7b14b
      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
      57f7b14b
    • P
      Refine AntPathMatcher.combine when p1 contains '.' · c1dafed8
      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
      c1dafed8
    • J
      Javadoc fixes · 465e6292
      Juergen Hoeller 提交于
      465e6292