Commit Graph
450 Commits
Author SHA1 Message Date
Chris Beams c61a0aeb83 Consolidate annotation processing constants
Consolidating internal bean name and aspect class name constats within
AnnotationConfigUtils to allow access from both the context.config
and context.annotation packages without creating a relationship between
the two of them (they are unrelated leaf nodes in the packaging
currently).

The .transaction module does not have a similar utils class and already
has a relationship from transaction.config -> transaction.annotation,
so placing the constants in .annotation.TransactionManagementCapability
to be referenced by .config.AnnotationDrivenBeanDefinitionParser

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4261 50f2f4bb-b051-0410-bef5-90022cba6387
2011-05-06 19:06:37 +00:00
Chris Beams 7ef92dccfa Introduce ImportAware interface
@Configuration classes may implement ImportAware in order to be injected
with the AnnotationMetadata of their @Import'ing class.

Includes the introduction of a new PriorityOrdered
ImportAwareBeanPostProcessor that handles injection of the
importing class metadata.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4259 50f2f4bb-b051-0410-bef5-90022cba6387
2011-05-06 19:05:42 +00:00
Chris Beams 56b5ea610c Process all meta and local @Import declarations
Includes the introduction of AnnotationUtils#findAllAnnotationAttributes
to support iterating through all annotations declared on a given type
and interrogating each for the presence of a meta-annotation. See tests
for details.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4258 50f2f4bb-b051-0410-bef5-90022cba6387
2011-05-06 19:05:15 +00:00
Chris Beams 0fa00811d7 Provide dedicated @ComponentScan processing
@ComponentScan is now checked for explicitly and handled immediately
when parsing @Configuration classes.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4257 50f2f4bb-b051-0410-bef5-90022cba6387
2011-05-06 19:04:35 +00:00
Chris Beams c892028705 Remove "Feature" support introduced in 3.1 M1
Feature-related support such as @Feature, @FeatureConfiguration,
and FeatureSpecification types will be replaced by framework-provided
@Configuration classes and convenience annotations such as
@ComponentScan (already exists), @EnableAsync, @EnableScheduling,
@EnableTransactionManagement and others.

Issue: SPR-8012,SPR-8034,SPR-8039,SPR-8188,SPR-8206,SPR-8223,
SPR-8225,SPR-8226,SPR-8227

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4255 50f2f4bb-b051-0410-bef5-90022cba6387
2011-05-06 19:03:52 +00:00
Chris Beams e21da602b7 Polish Javadoc
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4250 50f2f4bb-b051-0410-bef5-90022cba6387
2011-05-06 19:00:38 +00:00
Chris Beams 0b1f42ef66 Update MockEnvironment / MockPropertySource types
Reflecting signature changes in getProperty() methods

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4245 50f2f4bb-b051-0410-bef5-90022cba6387
2011-05-06 18:57:41 +00:00
Costin Leau f42da75682 SPR-8238
+ add NPE test

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4231 50f2f4bb-b051-0410-bef5-90022cba6387
2011-04-21 08:07:12 +00:00
Micha Kiener fb40ff59ab SPR-6416, adding basic conversation object tests, improving the access time of the conversation object
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4222 50f2f4bb-b051-0410-bef5-90022cba6387
2011-04-12 19:51:50 +00:00
Micha Kiener c3db0f1abc SPR-6416, adding repository timeout setting tests
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4221 50f2f4bb-b051-0410-bef5-90022cba6387
2011-04-12 18:11:18 +00:00
Micha Kiener 41045f3b19 SPR-6416, adding conversation manager test
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4220 50f2f4bb-b051-0410-bef5-90022cba6387
2011-04-12 16:02:46 +00:00
Micha Kiener 57e7223cde SPR-6416, reshaping removal of hierarchical conversations and adding repository test
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4219 50f2f4bb-b051-0410-bef5-90022cba6387
2011-04-12 14:53:09 +00:00
Sam Brannen 2bee329d1e [SPR-8089] Added TODOs.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4126 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-28 19:01:33 +00:00
Sam Brannen 956905a88d [SPR-8089] re-ignoring JMX tests that require the presence of jmxremote_optional.jar.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4124 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-28 18:38:34 +00:00
Sam Brannen 607d73b161 [SPR-8089] re-ignoring JMX tests that require the presence of jmxremote_optional.jar.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4123 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-28 18:26:30 +00:00
Sam Brannen 6a134d83f3 [SPR-8091] developer notes
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4121 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-28 18:09:14 +00:00
Sam Brannen 18b5440a9e [SPR-8089] cleaning up ignored and broken JMX tests; suppressing warnings; using generics where feasible; documented the jmxremote_optional.jar requirement in AbstractMBeanServerTests.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4119 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-28 17:57:01 +00:00
Costin Leau a653a50be8 SPR-8007
SPR-7832
+ expose the invocation params through the cache root object
+ update javadocs


git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4114 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-28 11:36:05 +00:00
Chris Beams 01ecc6600b @Feature methods accept @Value-annotated params
Previously errors were being raised when trying to inject @Value
annotated paramaters such as:

@Feature
public FeatureSpec feature(@Value("#{environment['foo']}") String foo) {
    return new FeatureSpec(foo);
}

This is not so much because dependency resolution of @Value-annotated
types was failing, but rather because the 'early bean reference'
proxying mechanism was throwing an exception if any final type was
detected as a parameter. This is of course because final types are
non-subclassable by CGLIB.  On review, however, it's obvious that
certain final types must be allowed for injection.  @Value injection
is an obvious one, but the rarer case of a Spring bean of type String
or int is another.

The explicit guard against final types as parameters to @Feature methods
has been removed. Final types are still checked for, however, and if
found, no proxing is attempted.  The dependency is immediately resolved
against the current BeanFactory and injected into the @Feature method.

This means that @Value injection, @Qualifier injection, etc all work
as expected, but does mean that premature bean instantiation may occur
if a user unwittingly injects non-String, non-primitive final bean types
as @Feature method parameters.

Issue: SPR-7974

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4094 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-15 07:09:49 +00:00
Chris Beams 807a960709 Deregister @Configuration CGLIB callbacks
CGLIB-enhanced @Configuration subclasses now implement DisposableBean
such that Enhancer.registerStaticCallbacks(subclass, null) is invoked
on container shutdown. This ensures that garbage collection can work
properly and avoids memory consumption issues for applications that
create and destroy many application contexts within the same JVM.

Issue: SPR-7901

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4090 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-14 09:20:19 +00:00
Chris Beams 8b98044d03 Test injection of Environment on @Feature methods
Issue: SPR-7975

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4084 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-12 12:24:20 +00:00
Chris Beams 6b616956fc Test injection of special types on @Feature methods
Prove that injection of special container types such as ResourceLoader,
BeanFactory, etc already works with the current implementation of
@Feature methods.

Issue: SPR-7975

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4082 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-11 12:40:51 +00:00
Costin Leau 1eb54b700d SPR-8015
+ update default key generator strategy to improve compatibility for implicit declaration on one arg method
+ updated docs


git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4066 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-06 17:13:24 +00:00
Costin Leau fbc4c37946 + update copyright headers
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4063 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-06 11:53:12 +00:00
Costin Leau 8062b4ad59 SPR-8008
SPR-8023
+ fix bug in Ehcache cache that considered expired entries for key checks

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4061 50f2f4bb-b051-0410-bef5-90022cba6387
2011-03-06 11:36:36 +00:00
Juergen Hoeller 41245cd566 fixed scheduling tests
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3995 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-10 23:04:40 +00:00
Juergen Hoeller 637117c51a exceptions thrown by @Scheduled methods will be propagated to a registered ErrorHandler (SPR-7723)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3994 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-10 22:50:16 +00:00
Juergen Hoeller 27766b7fab renamed AbstractPropertyPlaceholderConfigurer to PlaceholderConfigurerSupport
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3987 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-10 02:01:02 +00:00
Juergen Hoeller c16e01cb14 removed ConversionService/TypeConverter convenience methods in order to restore 3.0's SPI (for backwards compatibility with implementers)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3984 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-10 01:36:57 +00:00
Arjen Poutsma 000346972b Fixing compilation error with javac.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3970 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-09 09:39:29 +00:00
Chris Beams 8fcce02cde Add FeatureMethodErrorTests
Capture common mistakes with @Feature method declarations and ensure
that useful error messages are produced.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3966 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-09 06:54:02 +00:00
Chris Beams f8a4dfa5da Rename ExecutorContext => SpecificationContext
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3961 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-08 19:08:41 +00:00
Chris Beams 9fd86f589f Extract ProblemCollector interface
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3959 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-08 19:07:03 +00:00
Chris Beams dc22760978 Introduce FeatureSpecification support
Introduce FeatureSpecification interface and implementations

    FeatureSpecification objects decouple the configuration of
    spring container features from the concern of parsing XML
    namespaces, allowing for reuse in code-based configuration
    (see @Feature* annotations below).

    * ComponentScanSpec
    * TxAnnotationDriven
    * MvcAnnotationDriven
    * MvcDefaultServletHandler
    * MvcResources
    * MvcViewControllers

Refactor associated BeanDefinitionParsers to delegate to new impls above

    The following BeanDefinitionParser implementations now deal only
    with the concern of XML parsing.  Validation is handled by their
    corresponding FeatureSpecification object.  Bean definition creation
    and registration is handled by their corresponding
    FeatureSpecificationExecutor type.

    * ComponentScanBeanDefinitionParser
    * AnnotationDrivenBeanDefinitionParser (tx)
    * AnnotationDrivenBeanDefinitionParser (mvc)
    * DefaultServletHandlerBeanDefinitionParser
    * ResourcesBeanDefinitionParser
    * ViewControllerBeanDefinitionParser

Update AopNamespaceUtils to decouple from XML (DOM API)

    Methods necessary for executing TxAnnotationDriven specification
    (and eventually, the AspectJAutoProxy specification) have been
    added that accept boolean arguments for whether to proxy
    target classes and whether to expose the proxy via threadlocal.

    Methods that accepted and introspected DOM Element objects still
    exist but have been deprecated.

Introduce @FeatureConfiguration classes and @Feature methods

    Allow for creation and configuration of FeatureSpecification objects
    at the user level.  A companion for @Configuration classes allowing
    for completely code-driven configuration of the Spring container.

    See changes in ConfigurationClassPostProcessor for implementation
    details.

    See Feature*Tests for usage examples.

    FeatureTestSuite in .integration-tests is a JUnit test suite designed
    to aggregate all BDP and Feature* related tests for a convenient way
    to confirm that Feature-related changes don't break anything.
    Uncomment this test and execute from Eclipse / IDEA. Due to classpath
    issues, this cannot be compiled by Ant/Ivy at the command line.

Introduce @FeatureAnnotation meta-annotation and @ComponentScan impl

    @FeatureAnnotation provides an alternate mechanism for creating
    and executing FeatureSpecification objects.  See @ComponentScan
    and its corresponding ComponentScanAnnotationParser implementation
    for details.  See ComponentScanAnnotationIntegrationTests for usage
    examples

Introduce Default[Formatting]ConversionService implementations

    Allows for convenient instantiation of ConversionService objects
    containing defaults appropriate for most environments.  Replaces
    similar support originally in ConversionServiceFactory (which is now
    deprecated). This change was justified by the need to avoid use
    of FactoryBeans in @Configuration classes (such as
    FormattingConversionServiceFactoryBean). It is strongly preferred
    that users simply instantiate and configure the objects that underlie
    our FactoryBeans. In the case of the ConversionService types, the
    easiest way to do this is to create Default* subtypes. This also
    follows convention with the rest of the framework.

Minor updates to util classes

    All in service of changes above. See diffs for self-explanatory
    details.

    * BeanUtils
    * ObjectUtils
    * ReflectionUtils

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3954 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-08 14:42:33 +00:00
Costin Leau 1f92a12c1e moved cache abstraction from context.support to context
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3947 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-07 17:41:25 +00:00
Keith Donald ded88e3a7b added support for Instant and MutableDateTime binding to JodaTime formatting system; allow for use of @DateTimeFormat on any ReadableInstant field
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3941 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-04 20:17:52 +00:00
Rossen Stoyanchev 26c92551dd SPR-7912 Add tests for FormattingConversionServiceFactoryBean, update reference docs, and remove mvc:formatters
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3928 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-27 11:26:19 +00:00
Rossen Stoyanchev 27df774e38 SPR-7912 Introduce FormatterRegistrar interface and FormattingConversionServiceFactoryBean enhancements.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3927 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-26 22:20:49 +00:00
Juergen Hoeller 7512a85355 added tests with error in BindingResult (SPR-7809)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3909 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-18 21:39:08 +00:00
Keith Donald 7d9e728c55 array autogrow on set e.g. array[0]=foo
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3887 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 17:28:18 +00:00
Keith Donald 97033d66fb switched to better encapsulated convert(Object, TypeDescriptor) where possible
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3880 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 05:57:25 +00:00
Keith Donald d3d7951265 added forNestedType(MethodParameter) for resolution of nested parameter types for collection, array, and map parameter types
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3875 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 21:59:34 +00:00
Keith Donald 66814f1235 forNestedType usage clarification
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3873 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 18:33:50 +00:00
Keith Donald 6756901e84 temp added ignore on 2 new failing tests until time to investigate
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3871 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 12:00:51 +00:00
Keith Donald 14f1bb5e67 temp added ignore on 2 new failing tests until time to investigate
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3870 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 11:41:30 +00:00
Chris Beams 3aaa6cf23a Refactor PropertyPlaceholderConfigurer hierarchy
PropertySourcesPlaceholderConfigurer accommodates recent changes in
Environment and PropertySource APIs, e.g. no longer assuming enumerability
of property names.

PSPC reuses as much functionality as possible from
AbstractPropertyPlaceholderConfigurer, but overrides
postProcessBeanFactory() and defines its own variation on
processProperties() in order to accept a PropertyResolver rather than
a PropertySource.

AbstractPropertyPlaceholderConfigurer introduces doProcessProperties()
method to encapsulate that which is actually common, such as the
visiting of each bean definition once a StringValueResolver has been
created in the subclass.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3863 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 22:24:37 +00:00
Chris Beams 835a3f8d64 Refactor Environment and PropertySource
* Environment now extends PropertyResolver
* Environment no longer exposes resolver and sources
* PropertySource is String,Object instead of String,String
* PropertySource no longer assumes enumerability of property names
* Introduced EnumerablePropertySource for those that do have enumerable property names

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3862 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 22:24:14 +00:00
Keith Donald ddc3cab014 spr7816
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3848 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 06:23:04 +00:00
Chris Beams 1ac7b56caf M1 cut of environment, profiles and property work (SPR-7508)
Decomposed Environment interface into PropertySources, PropertyResolver
objects

    Environment interface and implementations are still present, but
    simpler.

    PropertySources container aggregates PropertySource objects;
    PropertyResolver provides search, conversion, placeholder
    replacement. Single implementation for now is
    PropertySourcesPlaceholderResolver

Renamed EnvironmentAwarePropertyPlaceholderConfigurer to
PropertySourcesPlaceholderConfigurer

    <context:property-placeholder/> now registers PSPC by default, else
    PPC if systemPropertiesMode* settings are involved

Refined configuration and behavior of default profiles

    See Environment interface Javadoc for details

Added Portlet implementations of relevant interfaces:

    * DefaultPortletEnvironment
    * PortletConfigPropertySource, PortletContextPropertySource
    * Integrated each appropriately throughout Portlet app contexts

Added protected 'createEnvironment()' method to AbstractApplicationContext

    Subclasses can override at will to supply a custom Environment
    implementation.  In practice throughout the framework, this is how
    Web- and Portlet-related ApplicationContexts override use of the
    DefaultEnvironment and swap in DefaultWebEnvironment or
    DefaultPortletEnvironment as appropriate.

Introduced "stub-and-replace" behavior for Servlet- and Portlet-based
PropertySource implementations

    Allows for early registration and ordering of the stub, then
    replacement with actual backing object at refresh() time.

    Added AbstractApplicationContext.initPropertySources() method to
    support stub-and-replace behavior. Called from within existing
    prepareRefresh() method so as to avoid impact with
    ApplicationContext implementations that copy and modify AAC's
    refresh() method (e.g.: Spring DM).

    Added methods to WebApplicationContextUtils and
    PortletApplicationContextUtils to support stub-and-replace behavior

Added comprehensive Javadoc for all new or modified types and members

Added XSD documentation for all new or modified elements and attributes

    Including nested <beans>, <beans profile="..."/>, and changes for
    certain attributes type from xsd:IDREF to xsd:string

Improved fix for detecting non-file based Resources in
PropertiesLoaderSupport (SPR-7547, SPR-7552)

    Technically unrelated to environment work, but grouped in with
    this changeset for convenience.

Deprecated (removed) context:property-placeholder
'system-properties-mode' attribute from spring-context-3.1.xsd

    Functionality is preserved for those using schemas up to and including
    spring-context-3.0.  For 3.1, system-properties-mode is no longer
    supported as it conflicts with the idea of managing a set of property
    sources within the context's Environment object. See Javadoc in
    PropertyPlaceholderConfigurer, AbstractPropertyPlaceholderConfigurer
    and PropertySourcesPlaceholderConfigurer for details.

Introduced CollectionUtils.toArray(Enumeration<E>, A[])

Work items remaining for 3.1 M2:

    Consider repackaging PropertySource* types; eliminate internal use
    of SystemPropertyUtils and deprecate

    Further work on composition of Environment interface; consider
    repurposing existing PlaceholderResolver interface to obviate need
    for resolve[Required]Placeholder() methods currently in Environment.

    Ensure configurability of placeholder prefix, suffix, and value
    separator when working against an AbstractPropertyResolver

    Add JNDI-based Environment / PropertySource implementatinos

    Consider support for @Profile at the @Bean level

    Provide consistent logging for the entire property resolution
    lifecycle; consider issuing all such messages against a dedicated
    logger with a single category.

    Add reference documentation to cover the featureset.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3839 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-03 09:04:34 +00:00
Chris Beams 7ac69dff5f Normalize indentation of Apache license URL
In accordance with recommendations at
http://www.apache.org/licenses/LICENSE-2.0.html.

A number of classes had strayed from this format, now all
are the same.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3831 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-22 21:40:19 +00:00