1. 08 5月, 2019 5 次提交
    • P
      Add SimpleAnnotationMeta classes and readers · 7fbf3f97
      Phillip Webb 提交于
      Replace the existing ASM based readers with new implementations that
      also support MergedAnnotations. The meta-data classes themselves are
      now immutable, and constructed via separate reader classes.
      
      The `SimpleMetadataReader` class has been updated to return the new
      classes, however the old ones remain since some of them are public
      and might be being used directly.
      
      Closes gh-22884
      7fbf3f97
    • P
      Add MergedAnnotations support to meta-data classes · 8c2ccfe6
      Phillip Webb 提交于
      Add `AnnotatedTypeMetaData.getAnnotations()` that can be used to access
      annotation details using the `MergedAnnotations` interface.
      
      Where possible, the existing annotation methods have been migrated to
      call `getAnnotation()`, rather than needing their own implementation.
      
      The existing ASM based meta-data implementations have not been updated
      since they will be deprecated and replaced in a subsequent commit.
      
      See gh-22884
      8c2ccfe6
    • P
      Add additional class/method meta-data tests · f592c1f2
      Phillip Webb 提交于
      Add some additional tests to provide more coverage of class and method
      meta-data support.
      
      See gh-22884
      f592c1f2
    • P
      Skip java.lang.annotations when reading metadata · 1fa59378
      Phillip Webb 提交于
      Update `StandardAnnotationMetadata` and `AnnotationMetadataReadingVisitor`
      so that `java.lang.annotation` annotations are consistently skipped.
      
      Closes gh-22885
      1fa59378
    • P
      Don't expose RetentionPolicy.CLASS annotations · 8a293f51
      Phillip Webb 提交于
      Update ASM based metadata readers so that only RetentionPolicy.RUNTIME
      annotations are exposed. This aligned behavior with the reflection based
      implementation.
      
      Closes gh-22886
      8a293f51
  2. 06 5月, 2019 1 次提交
  3. 09 4月, 2019 1 次提交
  4. 08 4月, 2019 2 次提交
  5. 23 3月, 2019 1 次提交
  6. 22 3月, 2019 1 次提交
  7. 19 11月, 2018 2 次提交
  8. 10 10月, 2018 1 次提交
  9. 30 3月, 2018 1 次提交
  10. 14 2月, 2018 1 次提交
  11. 11 2月, 2018 1 次提交
  12. 01 9月, 2016 1 次提交
    • S
      Support for candidate components index · dcade06f
      Stephane Nicoll 提交于
      This commit adds a "spring-context-indexer" module that can be added to
      any project in order to generate an index of candidate components defined
      in the project.
      
      `CandidateComponentsIndexer` is a standard annotation processor that
      looks for source files with target annotations (typically `@Component`)
      and references them in a `META-INF/spring.components` generated file.
      
      Each entry in the index is the fully qualified name of a candidate
      component and the comma-separated list of stereotypes that apply to that
      candidate. A typical example of a stereotype is `@Component`. If a
      project has a `com.example.FooService` annotated with `@Component` the
      following `META-INF/spring.components` file is generated at compile time:
      
      ```
      com.example.FooService=org.springframework.stereotype.Component
      ```
      
      A new `@Indexed` annotation can be added on any annotation to instructs
      the scanner to include a source file that contains that annotation. For
      instance, `@Component` is meta-annotated with `@Indexed` now and adding
      `@Indexed` to more annotation types will transparently improve the index
      with additional information. This also works for interaces or parent
      classes: adding `@Indexed` on a `Repository` base interface means that
      the indexed can be queried for its implementation by using the fully
      qualified name of the `Repository` interface.
      
      The indexer also adds any class or interface that has a type-level
      annotation from the `javax` package. This includes obviously JPA
      (`@Entity` and related) but also CDI (`@Named`, `@ManagedBean`) and
      servlet annotations (i.e. `@WebFilter`). These are meant to handle
      cases where a component needs to identify candidates and use classpath
      scanning currently.
      
      If a `package-info.java` file exists, the package is registered using
      a "package-info" stereotype.
      
      Such files can later be reused by the `ApplicationContext` to avoid
      using component scan. A global `CandidateComponentsIndex` can be easily
      loaded from the current classpath using `CandidateComponentsIndexLoader`.
      
      The core framework uses such infrastructure in two areas: to retrieve
      the candidate `@Component`s and to build a default `PersistenceUnitInfo`.
      Rather than scanning the classpath and using ASM to identify candidates,
      the index is used if present.
      
      As long as the include filters refer to an annotation that is directly
      annotated with `@Indexed` or an assignable type that is directly
      annotated with `@Indexed`, the index can be used since a dedicated entry
      wil be present for that type. If any other unsupported include filter is
      specified, we fallback on classpath scanning.
      
      In case the index is incomplete or cannot be used, The
      `spring.index.ignore` system property can be set to `true` or,
      alternatively, in a "spring.properties" at the root of the classpath.
      
      Issue: SPR-11890
      dcade06f
  13. 15 7月, 2016 1 次提交
  14. 05 7月, 2016 1 次提交
  15. 25 3月, 2016 1 次提交
  16. 05 11月, 2015 1 次提交
  17. 28 9月, 2015 1 次提交
    • S
      Migrate JUnit 3 tests to JUnit 4 · d5ee787e
      Sam Brannen 提交于
      This commit migrates all remaining tests from JUnit 3 to JUnit 4, with
      the exception of Spring's legacy JUnit 3.8 based testing framework that
      is still in use in the spring-orm module.
      
      Issue: SPR-13514
      d5ee787e
  18. 20 8月, 2015 1 次提交
  19. 06 5月, 2015 1 次提交
    • S
      Eliminate inspection of annotations on core Java annotations · 5d67219a
      Sam Brannen 提交于
      This commit picks up where SPR-11483 left off, with the goal of
      eliminating all unnecessary inspection of core JDK annotations in
      Spring's annotation search algorithms in AnnotatedElementUtils and
      AnnotationMetadataReadingVisitor.
      
      Issue: SPR-12989
      5d67219a
  20. 26 11月, 2014 1 次提交
  21. 21 10月, 2014 1 次提交
  22. 31 5月, 2014 1 次提交
  23. 01 5月, 2014 1 次提交
  24. 22 4月, 2014 1 次提交
    • S
      Don't mutate annotation metadata when merging attrs · e1720d89
      Sam Brannen 提交于
      Prior to this commit, invoking the getMergedAnnotationAttributes()
      method in AnnotationReadingVisitorUtils resulted in mutation of the
      internal state of the ASM-based annotation metadata supplied to the
      method.
      
      This commit fixes this issue by making a copy of the original
      AnnotationAttributes for the target annotation before merging attribute
      values from the meta-annotation hierarchy.
      
      This commit also introduces a slight performance improvement by
      avoiding duplicate processing of the attributes of the target
      annotation.
      
      Issue: SPR-11710
      e1720d89
  25. 06 4月, 2014 1 次提交
  26. 26 3月, 2014 1 次提交
    • S
      Don't detect annotations on superclass in StAnMeta · a2f1169e
      Sam Brannen 提交于
      Changes introduced in conjunction with issue SPR-11475 altered the
      behavior of StandardAnnotationMetadata such that annotations could be
      detected on superclasses, specifically in the case where the
      AnnotatedElementUtils.getAllAnnotationAttributes() method is invoked to
      obtain multiple annotations of the same type (on the lowest level in the
      class hierarchy), as is the case for @Profile and @Conditional.
      
      This commit partially reverts these changes as follows:
      
       - All methods in AnnotatedElementUtils now set the
         traverseClassHierarchy to false, thereby effectively reverting the
         changes made in commit 1d30bf83.
         Note, however, that the changes made to AnnotationUtils remain in
         place.
      
       - Introduced tests in AnnotationMetadataTests that verify behavior
         present in Spring Framework 4.0.2 and earlier.
      
       - Updated tests in AnnotatedElementUtilsTests so that they pass against
         the reverted changes (i.e., align with the behavior present in Spring
         Framework 4.0.2 and earlier).
      
       - Refined Javadoc in AnnotationMetadata with regard to annotations
         being "present" vs. "defined".
      
       - Refined Javadoc in AnnotatedTypeMetadata.
      
      Issue: SPR-11475, SPR-11595
      a2f1169e
  27. 20 3月, 2014 1 次提交
    • S
      Support meta-annotation overrides in ASM processing · 99cd2f60
      Sam Brannen 提交于
      Prior to this commit, Spring supported meta-annotation attribute
      overrides in custom composed annotations with reflection-based
      annotation processing but not with ASM-based annotation processing.
      
      This commit ensures that meta-annotation attribute overrides are
      supported in AnnotationMetadataReadingVisitor.getAnnotationAttributes().
      
      Issue: SPR-11574
      99cd2f60
  28. 09 2月, 2014 1 次提交
  29. 04 2月, 2014 1 次提交
    • S
      Ensure all tests are executed in the Gradle build · b8ed2f49
      Sam Brannen 提交于
      Prior to this commit several test classes named "*Test" were not
      recognized as tests by the Gradle build. This is due to the configured
      inclusion of '**/*Tests.*' which follows Spring's naming convention for
      test classes.
      
      This commit addresses this issue by:
      
       - Renaming real test classes consistently to "*Tests".
       - Renaming internal test classes to "*TestCase".
       - Renaming @WebTest to @WebTestStereotype.
       - Disabling broken tests in AnnoDrivenStaticEntityMockingControlTest.
       - Modifying the Gradle build configuration so that classes ending in
         either "*Tests" or "*Test" are considered test classes.
      
      Issue: SPR-11384
      b8ed2f49
  30. 28 9月, 2013 1 次提交
  31. 09 5月, 2013 1 次提交
    • P
      Extend AnnotationMetadata and MethodMetadata · 8e445f3a
      Phillip Webb 提交于
      Update AnnotationMetadata and MethodMetadata to extend from a new
      AnnotatedTypeMetadata base interface containing the methods that are
      common to both. Also introduce new getAllAnnotationAttributes methods
      providing MultiValueMap access to both annotation and meta-annotation
      attributes.
      
      Existing classreading and standard implementations have been
      refactored to support the new interface.
      8e445f3a
  32. 26 1月, 2013 2 次提交
  33. 04 1月, 2013 1 次提交