Commit Graph
211 Commits
Author SHA1 Message Date
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 1e2a8083a1 TypeDescriptor cleanup and general polishing; fixed a number of bugs related to TypeDescriptor usage in client code across beans and spel packages
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3846 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 05:49:33 +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
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
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 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 45e5b46fc2 Merge 3.1.0 development branch into trunk
Branch in question is 'env' branch from git://git.springsource.org/sandbox/cbeams.git; merged into
git-svn repository with:

    git merge -s recursive -Xtheirs --no-commit env

No merge conflicts, but did need to

    git rm spring-build

prior to committing.

With this change, Spring 3.1.0 development is now happening on SVN
trunk. Further commits to the 3.0.x line will happen in an as-yet
uncreated SVN branch.  3.1.0 snapshots will be available
per the usual nightly CI build from trunk.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3782 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-25 19:48:20 +00:00
Juergen Hoeller 7fc788a676 revised initial cut of serializer package; moved Converter adapters to sub-package 'support'
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3740 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-11 21:15:12 +00:00
Mark Fisher 759d182e4e SPR-7627 added Serializer and Deserializer strategies, Converter adapters, and default implementations
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3735 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-11 17:36:18 +00:00
Juergen Hoeller 0ae66ec741 fixed detection of element type in case of nested collections (SPR-7569)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3731 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-10 21:09:43 +00:00
Juergen Hoeller a2aea5054d revised "ClassUtils.isAssignable" semantics to cover primitives vs wrappers in both directions (SPR-7610)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3704 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-01 21:50:25 +00:00
Arjen Poutsma 4904769bd8 Added XMLEventStreamWriter
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3656 50f2f4bb-b051-0410-bef5-90022cba6387
2010-09-08 12:52:23 +00:00
Arjen Poutsma 1a62ecb846 Added createCustomStaxSource/Result, because JAXP 1.4 kills babies in their sleep.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3619 50f2f4bb-b051-0410-bef5-90022cba6387
2010-08-31 09:51:59 +00:00
Arjen Poutsma 030fdef887 Various StAX improvements.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3616 50f2f4bb-b051-0410-bef5-90022cba6387
2010-08-27 11:35:27 +00:00
Juergen Hoeller e8bef9d800 added testStringArrayToResourceArray
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3591 50f2f4bb-b051-0410-bef5-90022cba6387
2010-08-15 23:00:46 +00:00
Juergen Hoeller 2c62aedd12 refined exception messages; added unit tests for custom array types
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3577 50f2f4bb-b051-0410-bef5-90022cba6387
2010-08-14 19:42:29 +00:00
Juergen Hoeller 1ba330c276 GenericTypeResolver works for nested parameterized types and for generic superclasses as well (SPR-7389)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3499 50f2f4bb-b051-0410-bef5-90022cba6387
2010-07-22 15:57:55 +00:00
Juergen Hoeller 568f84f25e fixed test failures with respect to null handling and PropertyTypeDescriptor usage for collection elements
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3448 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-23 19:31:51 +00:00
Juergen Hoeller 7fb245167e ConversionService is able to deal with empty collections and nested collections (fixed regression; SPR-7289, SPR-7293); ConversionService properly handles nested Resource arrays in Map values (fixed regression; SPR-7295); ConversionService does not accidentally use copy constructor for same type (SPR-7304)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3447 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-23 17:29:34 +00:00
Oliver Gierke cbfb11fffb Rollback accidental commit :/.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3424 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-15 05:33:39 +00:00
Oliver Gierke d3de491ea1 Added missing imports.
Added additional annotation to test interface to make sure no ClassCastException appears.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3423 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-15 05:29:48 +00:00
Oliver Gierke ccc01a9583 Added helper methods to access method parameter annotations.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3422 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-15 05:29:45 +00:00
Juergen Hoeller 689191548f properly support void.class in TypeDescriptor and GenericConversionService (SPR-7281)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3416 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-11 21:40:56 +00:00
Juergen Hoeller a7e259435e ConversionService is able to apply Converters to interface-based array elements (SPR-7150); a context ConversionService is able to override an ApplicationContext's resource editors (SPR-7079)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3369 50f2f4bb-b051-0410-bef5-90022cba6387
2010-05-26 13:58:37 +00:00
Juergen Hoeller f8089ea9b8 ClassUtils recognizes "void" as primitive type name as well (SPR-7212)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3347 50f2f4bb-b051-0410-bef5-90022cba6387
2010-05-18 08:49:09 +00:00
Juergen Hoeller 546d9968d9 property placeholders can deal with nested expressions which happen to use the same suffix (SPR-7098)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3282 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-21 09:22:20 +00:00
Keith Donald 1d581a876c polish
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3272 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-19 20:35:57 +00:00
Keith Donald e921c1d447 checking in performance tests
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3271 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-19 20:22:01 +00:00
Keith Donald 28a652ea77 caching optmizations and performance tests
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3268 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-19 03:58:28 +00:00
Keith Donald ca29f3be5e converter caching
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3265 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-18 21:43:00 +00:00
Keith Donald 53398416ec promoted char sequence first
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3261 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-17 20:22:30 +00:00
Keith Donald 90fb3dcfe3 fixed failing test
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3258 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-17 06:28:06 +00:00
Keith Donald 21a9cb510f fixed failing test
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3257 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-17 04:50:01 +00:00
Keith Donald eca3e5d0b8 improved conversion system logging, collection converter simplification/polish, several optimizations, annotation-driven formatting caching
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3255 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-17 04:43:28 +00:00
Ramnivas Laddad c340cf02e0 Improved fix for SPR-6850 by dealing with bounds separately from normal types
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3220 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-01 23:37:08 +00:00
Chris Beams 673373b448 corrected TypeUtils.isAssignable() failure to return true in certain valid wildcard bounding scenarios (SPR-6850)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3171 50f2f4bb-b051-0410-bef5-90022cba6387
2010-03-25 10:33:25 +00:00
Chris Beams fe84bf9b92 SPR-6888: ClassPathResource.getDescription() now fully qualifies resource path regardless of constructor used.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3133 50f2f4bb-b051-0410-bef5-90022cba6387
2010-03-22 14:54:39 +00:00
Costin Leau b58491749d + fixed internal caching for LocalVariableTableParameterNameDiscoverer
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2952 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-11 11:35:39 +00:00
Costin Leau c4b67ba0e5 + improved LocalVariableTableParameterNameDiscoverer discovery and memory usage
+ added extra tests

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2950 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-11 10:38:33 +00:00
Costin Leau 988d6e7f8a SPR-6775
+ remove class definitions for sticking around (by forcing eager metadata initialization)
+ improve cache size by eliminating the numbers of method metadata objects created
+ improve lookup access on method metadata

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2874 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-29 14:27:49 +00:00
Costin Leau 898a30ae3f SPR-6775
+ replace the vanilla hashmap with a quick-and-dirty, JDK based, fixed LRU cache

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2872 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-28 15:51:20 +00:00
Arjen Poutsma 7cee45d74d Test for SPR-6690
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2815 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-15 11:17:27 +00:00
Juergen Hoeller fd915f1d92 unresolvable placeholders will be ignored by default for Resource array properties as well (SPR-6654)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2807 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-12 19:50:18 +00:00
Juergen Hoeller 4b46db27a9 fixed type assignability check for wildcarded Map (SPR-6676)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2806 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-12 15:31:30 +00:00
Juergen Hoeller 55557b778f use TypeDescriptor.forObject instead of constructor; enforce use of TypeDescriptor.valueOf through making the constructor private
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2683 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-15 20:18:31 +00:00
Keith Donald b34a2ab777 TypeDescriptor.valueOf usage in favor of constants; TypedValue usage simplification
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2681 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-15 19:41:52 +00:00
Keith Donald 25b0839597 object to String not supported test case
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2676 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-15 16:07:43 +00:00
Keith Donald f983f6c4d5 ObjectToObject converter now only matches public methods/constructors; private class method invocations also supported now through a makeAccessible call
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2675 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-15 15:53:11 +00:00
Keith Donald 6478829a47 general polishing
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2674 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-15 15:09:25 +00:00