Commit Graph

3687 Commits

Author SHA1 Message Date
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
Sam Brannen 924b8e11ea [SPR-7850][SPR-7851] Upgraded to JUnit 4.8.1 and TestNG 5.12.1; added changelog entries for 3.1.0.M1.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3838 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-30 08:00:58 +00:00
Sam Brannen 3be55ad10b [SPR-7849] work in progress: revising the testing chapter based on internal review.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3837 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-30 06:19:58 +00:00
Sam Brannen 5f6d5e55d1 [SPR-7849] work in progress: revising the testing chapter based on internal review.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3836 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-30 05:47:23 +00:00
Sam Brannen f78d0a4afc [SPR-7848] Improved readability, grammar, and formatting of the Container Extension Points section of the reference manual.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3835 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-30 02:07:22 +00:00
Oliver Gierke 27d390c221 SPR-2946 - Corrected documentation for lazy-init behaviour on Bean(Factory)PostProcessors.
Changed the documentation to correctly state that B(F)PP are instantiated eagerly no matter if they are explicitly marked as to be lazy initialized or the default-lazy-init attribute is used at a <beans /> element.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3834 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-28 10:06:00 +00:00
Oliver Gierke 5e40c020fb SPR-7674 - Documented value defaulting in Spring EL
Added short note of how to use the Elvis operator for defaulting values in the Spring expression language sections.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3833 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-28 09:42:58 +00:00
Costin Leau 4e90c0a81f SPR-7308
+ wrapping up cache documentation
+ plug in cache docs

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3832 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-27 18:36:57 +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
Arjen Poutsma a32894ca31 Removed JDK 1.6 usage
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3830 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-22 10:23:34 +00:00
Costin Leau c84ffae75c SPR-7308
+ draft cache documentation

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3829 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-21 17:13:17 +00:00
Costin Leau 09ed0d0835 SPR-7308
+ fix initialization problem for root object (inside SpEL eval context)
+ add integration tests for root object expressions


git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3828 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-21 15:47:22 +00:00
Costin Leau a010a7f63a SPR-7308
+ add check for null key


git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3827 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-21 15:46:37 +00:00
Arjen Poutsma a3583fd5c4 SPR-7789 - FormHttpMessageConverter does not honor the charset in the content type when writing a form and uses a wrong default charset
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3826 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-20 16:56:14 +00:00
Arjen Poutsma bc235c5b03 SPR-7789 - FormHttpMessageConverter does not honor the charset in the content type when writing a form and uses a wrong default charset
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3825 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-20 16:50:44 +00:00
Arjen Poutsma cbdec821c4 SPR-7706 - 304 responses should not have non-0 Content-Length
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3824 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-20 16:32:58 +00:00
Costin Leau f4f287050f SPR-7308
SPR-7736
+ clarify storage of null values



git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3823 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-17 10:15:50 +00:00
Costin Leau 637ce79d9e SPR-7308
+ optimize updating of multiple caches



git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3822 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-17 09:14:09 +00:00
Costin Leau 4c8186f2a9 SPR-7308
+ update AJ caching test


git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3821 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-16 21:25:12 +00:00
Costin Leau 49c8df65d7 SPR-7308
+ add missing package javadocs

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3820 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-16 13:19:34 +00:00
Costin Leau a118023af6 SPR-7308
+ add support for multiple cache names
+ require each annotation to specify a cache name
+ add method support in Key generator interface
+ add bug fix for embedded JDK concurrent declaration

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3819 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-16 13:19:01 +00:00
Costin Leau 2c7f153336 SPR-7308
+ remove unnecessary methods for EhCacheCache

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3818 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-16 11:13:43 +00:00
Costin Leau 1c78f37462 +SPR-7470
+ minor adjustments


git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3817 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-16 10:28:56 +00:00
Chris Beams 5898259f1e Fix breaking logic around getFilename() call
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3816 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-15 17:34:31 +00:00
Chris Beams e78ced16b1 Improved fix for detecting non-file based Resources in PropertiesLoaderSupport (SPR-7547, SPR-7552)
Use instanceof check against AbstractFileResolvingResource instead of
try/catch around resource.getFilename() call.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3815 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-15 17:09:31 +00:00
Costin Leau 1feb389e27 SPR-7470
+ add basic documentation for c: namespace

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3814 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-15 16:12:54 +00:00
Costin Leau 0e94956e1e fixed mistake in jmx docs (SPR-977)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3813 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-15 15:13:23 +00:00
Thomas Risberg 35cf6226de updated license and notice files
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3812 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-09 19:55:41 +00:00
Chris Beams 008fa66cee Eliminate PropertySourceAggregator interface
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3811 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-08 07:59:55 +00:00
Chris Beams 7d3a3e872f Expose Environment ConfigurationService
AbstractEnvironment delegates to an underlying ConfigurationService when
processing methods such as getProperty(String name, Class<?> targetType)

Accessor methods have been added to the ConfigurableEnvironment
interface that allow this service to be updated or replaced.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3810 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-08 07:59:41 +00:00
Chris Beams 2a4e1c98da Eliminate reserved 'default' profile (SPR-7778)
There is no longer a reserved default profile named 'default'. Rather,
users must explicitly specify a default profile or profiles via

    ConfigurableEnvironment.setDefaultProfiles(String...)
        - or -
    spring.profile.default="pD1,pD2"

Per above, the setDefaultProfile(String) method now accepts a variable
number of profile names (one or more).  This is symmetrical with the
existing setActiveProfiles(String...) method.

A typical scenario might involve setting both a default profile as a
servlet context property in web.xml and then setting an active profile
when deploying to production.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3809 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-08 07:59:25 +00:00
Chris Beams d469bf1387 Polish JavaDoc
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3808 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-08 07:58:47 +00:00
Chris Beams 7daf7da08b Add Hamcrest 1.1 as test-time dependency for .context
Provides a richer set of Matcher implementations than JUnit's hamcrest
package.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3807 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-07 06:56:55 +00:00
Chris Beams c2996bebcd Use dot notation rather than camel case for profile props (SPR-7508)
Before this change, the following properties could be used to manipulate
Spring profile behavior:

    -DspringProfiles=p1,p2
    -DdefaultSpringProfile=pD

These properties have been renamed to follow usual Java conventions for
property naming:

    -Dspring.profile.active=p1,p2
    -Dspring.profile.default=pD



git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3806 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-05 20:14:26 +00:00
Chris Beams f455b1e89a Support default profile (SPR-7508, SPR-7778)
'default' is now a reserved profile name, indicating
that any beans defined within that profile will be registered
unless another profile or profiles have been activated.

Examples below are expressed in XML, but apply equally when
using the @Profile annotation.

EXAMPLE 1:

        <beans>
            <beans profile="default">
                <bean id="foo" class="com.acme.EmbeddedFooImpl"/>
            </beans>
            <beans profile="production">
                <bean id="foo" class="com.acme.ProdFooImpl"/>
            </beans>
        </beans>

    In the case above, the EmbeddedFooImpl 'foo' bean will be
    registered if:
        a) no profile is active
        b) the 'default' profile has explicitly been made active

    The ProdFooImpl 'foo' bean will be registered if the 'production'
    profile is active.

EXAMPLE 2:

        <beans profile="default,xyz">
            <bean id="foo" class="java.lang.String"/>
        </beans>

    Bean 'foo' will be registered if any of the following are true:
        a) no profile is active
        b) 'xyz' profile is active
        c) 'default' profile has explicitly been made active
        d) both (b) and (c) are true

Note that the default profile is not to be confused with specifying no
profile at all.  When the default profile is specified, beans are
registered only if no other profiles are active; whereas when no profile
is specified, bean definitions are always registered regardless of which
profiles are active.

The default profile may be configured programmatically:

    environmnent.setDefaultProfile("embedded");

or declaratively through any registered PropertySource, e.g. system properties:

    -DdefaultSpringProfile=embedded

Assuming either of the above, example 1 could be rewritten as follows:

        <beans>
            <beans profile="embedded">
                <bean id="foo" class="com.acme.EmbeddedFooImpl"/>
            </beans>
            <beans profile="production">
                <bean id="foo" class="com.acme.ProdFooImpl"/>
            </beans>
        </beans>

It is unlikely that use of the default profile will make sense in
conjunction with a statically specified 'springProfiles' property.
For example, if 'springProfiles' is specified as a web.xml context
param, that profile will always be active for that application,
negating the possibility of default profile bean definitions ever
being registered.

The default profile is most useful for ensuring that a valid set of
bean definitions will always be registered without forcing users
to explictly specify active profiles.  In the embedded vs. production
examples above, it is assumed that the application JVM will be started
with -DspringProfiles=production when the application is in fact in
a production environment.  Otherwise, the embedded/default profile bean
definitions will always be registered.


git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3804 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-01 09:01:58 +00:00
Chris Beams 839cb85688 Rename EnvironmentBeansTests* -> ProfileXmlBeanDefinitionTests*
Earlier naming reflected initial conception of 'environment-specific
bean definitions'. This notion has evolved into bean definitions
specific to particular profiles, and the new naming more clearly
expresses it.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3803 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-01 08:36:29 +00:00
Chris Beams e5fb701466 Remove obsolete ConfigurationClassPostProcessor.getOrder()
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3802 50f2f4bb-b051-0410-bef5-90022cba6387
2010-12-01 08:36:12 +00:00
David Syer 1a4fac31d9 SPR-7705: re-order rules and befores
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3801 50f2f4bb-b051-0410-bef5-90022cba6387
2010-11-17 17:27:03 +00:00
David Syer d92fc78366 Add hamcrest to beans pom in the right place to make tests compile
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3800 50f2f4bb-b051-0410-bef5-90022cba6387
2010-11-16 17:12:32 +00:00
Chris Beams 258a40a209 Fix .integration-tests build path errors
Add .expression as a build path dependency to satisfy imports in
Spr7538Tests.java

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3799 50f2f4bb-b051-0410-bef5-90022cba6387
2010-11-15 19:15:29 +00:00
David Syer 65d303feaa Add missing JPA dependency
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3798 50f2f4bb-b051-0410-bef5-90022cba6387
2010-11-15 16:54:12 +00:00
David Syer eaccafcf30 Add missing Hamcrest dependency
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3797 50f2f4bb-b051-0410-bef5-90022cba6387
2010-11-15 16:50:59 +00:00
David Syer 8b0abd5b72 Re-order deps to allow Hamcrest to come before JUnit
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3796 50f2f4bb-b051-0410-bef5-90022cba6387
2010-11-15 16:50:01 +00:00
David Syer 22f501457e Add missing ROME dep
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3795 50f2f4bb-b051-0410-bef5-90022cba6387
2010-11-15 16:49:17 +00:00
Arjen Poutsma 3e2aaec911 Using random port for HTTP integration tests
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3794 50f2f4bb-b051-0410-bef5-90022cba6387
2010-11-09 10:40:51 +00:00
Arjen Poutsma bcad0df063 SPR-7707 - Unexpected behavior with class-level @RequestMappings
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3793 50f2f4bb-b051-0410-bef5-90022cba6387
2010-11-08 14:56:35 +00:00
Costin Leau 810bb4a441 SPR-7703
- minor performance improvements to servlet and portlet handlers


git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3792 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-31 17:46:15 +00:00
Costin Leau 1237c3ab36 SPR-7308
+ add updated IDE classpath
+ add updated OSGi manifest

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3791 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-29 17:17:38 +00:00
Costin Leau f2ce1f0a22 SPR-7308
+ add updated IDE classpath
+ add updated OSGi manifest

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3790 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-29 17:17:10 +00:00
Costin Leau 5c534c3757 SPR-7308
+ initial commit of caching abstraction
+ main API
+ Spring AOP and AspectJ support
+ annotation driven, declarative support
+ initial namespace draft

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3789 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-29 17:00:08 +00:00