Commit Graph

407 Commits

Author SHA1 Message Date
Keith Donald f49c52cda0 remove addressed TODO
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3896 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 21:25:44 +00:00
Keith Donald 56d69a9ede typo
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3895 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 21:13:20 +00:00
Keith Donald d269c050cc sp7839 - map autogrow, including auto-grow support for map values
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3892 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 19:22:45 +00:00
Keith Donald 78643f8577 fixed bug related to array autogrow
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3889 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 17:54:17 +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 407c54ca29 removed accidental system.out commit
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3886 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 16:18:04 +00:00
Keith Donald a248b54e6a fetch property value again after setting default value to protect against object copy
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3885 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 16:16:32 +00:00
Keith Donald 950493a4c8 getPropertyTypeDescriptor implementation optimization
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3877 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 02:51:56 +00:00
Keith Donald 75f36d291a getPropertyTypeDescriptor bug fixes
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3876 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 23:12:00 +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 ed2a257e69 added initial support for handling unknown nested type values when converting collections; now favor factory method for constructing nested type descriptors for clarity (made constructor private); improved javadoc
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3867 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 05:14:49 +00:00
Chris Beams d29eae3ba0 Remove dead code
* removed registerStandardBeanFactoryPostProcessors() methods
* removed commented-out test from PropertyResourceConfigurerTests

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3864 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 22:24:55 +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
Juergen Hoeller 2e6f39922d revised javadoc on "exactDateLength" (SPR-7759)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3859 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 19:55:24 +00:00
Keith Donald 10886eeefd Fixed bugs in bean wrapper related to nesting levels on method parameters
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3854 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 19:18:29 +00:00
Juergen Hoeller 4ac5814e5a fixed potential InjectionMetadata NPE when using SpringBeanAutowiringInterceptor (SPR-7686)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3850 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 16:08:43 +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 d00b49dca5 Introduce "Aware" superinterface
All existing *Aware interfaces have been refactored to extend this
new marker interface, serving two purposes:

    * Easy access to a type hierarchy that can answer the question
      "What *Aware interfaces are available?", without requiring
      text-based searches. Also clearly excludes false positives like
      TargetClassAware and ParamAware, which while similarly named,
      are not semantically similar to traditional *Aware interfaces
      in Spring.

    * Minor potential performance improvements in
      AbstractAutowireCapableBeanFactory and
      ApplicationContextAwareProcessor. Both have blocks of sequential
      instanceof checks in order to invoke any *Aware interface callback
      methods. For a bean that implements none of these interfaces,
      the whole sequence can be avoided by guarding first with
          if (bean instanceof Aware) {
              ...
          }

Implementors of custom *Aware-style interfaces (and presumably
the BeanPostProcessors that handle them), are encouraged to refactor to
extending this interface for consistency with the framework as well as
the points above.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3840 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-03 10:13:57 +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
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
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 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
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
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
Costin Leau d82280d258 SPR-7470
+ add missing test class

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3786 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-28 17:54:07 +00:00
Costin Leau b43727f3b2 SPR-7470
+ add test for XML config with errors

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3785 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-28 17:49:49 +00:00
Costin Leau f578693015 SPR-7470
+ add c: namespace

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3784 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-28 17:49:01 +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
Chris Beams cb0e8dba2c Add proper default values for 'merge' attributes in collection elements (SPR-7656)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3766 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-15 07:56:02 +00:00
Juergen Hoeller a52450e21a fixed @Value injection to correctly cache temporary null results for non-singleton beans (SPR-7614)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3760 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-14 19:40:36 +00:00
Juergen Hoeller 22ba9942f5 consistent caching of @Autowired arguments in field and method case (SPR-7635)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3759 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-14 09:34:31 +00:00
Juergen Hoeller c025d123c9 BeanWrapper does not attempt to populate Map values on access (just auto-grows Map itself)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3756 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-14 00:14:50 +00:00
Juergen Hoeller f797ff683b resolve dependency outside of synchronized block before subsequently preparing cached arguments (SPR-7635)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3755 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-13 23:22:57 +00:00
Juergen Hoeller 0754a63e45 applied synchronization in order to avoid race condition in skipping check (SPR-7635, SPR-7642)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3754 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-13 22:29:28 +00:00
Juergen Hoeller 6709989d1e fixed Autowired/CommonAnnotationBeanPostProcessor to prevent race condition in skipping check (SPR-7635, SPR-7642)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3749 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-12 22:56:38 +00:00
Juergen Hoeller 2062b44c16 optimized @Bean error messages (SPR-7628, SPR-7629)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3724 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-10 18:31:03 +00:00
Juergen Hoeller 9d06c4ac55 reduced BeanDefinition footprint by initializing Sets and Maps with 0
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3706 50f2f4bb-b051-0410-bef5-90022cba6387
2010-10-01 22:22:50 +00:00
Juergen Hoeller db51f1666e ApplicationContext registers context-specific ClassArrayEditor for its bean ClassLoader (SPR-1461)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3682 50f2f4bb-b051-0410-bef5-90022cba6387
2010-09-14 05:09:08 +00:00
Chris Beams 781e1fec1b Fix assumption about file-based Resources in PropertiesLoaderSupport (SPR-7547)
When using PropertiesLoaderSupport implementations (principally
PropertyPlaceholderConfigurer), an assumption was made that any
Resource representing a set of properties must be file-based.  SPR-7547
exposed the fact that if a non-file-based Resource implementation such
as ByteArrayResource were passed in, an IllegalStateException would be thrown
from the AbstractResource base class' implementation of getFilename().

This is now patched, and PropertiesLoaderSupport implementations treat
Resource implementations equally, regardless of file-orientation.

See also SPR-7552.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3680 50f2f4bb-b051-0410-bef5-90022cba6387
2010-09-13 20:23:26 +00:00
Juergen Hoeller d46ab813d2 clearly document behavior with respect to beans of same name at different factory levels (SPR-6117)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3672 50f2f4bb-b051-0410-bef5-90022cba6387
2010-09-09 22:12:23 +00:00
Juergen Hoeller 68597b9359 avoid failures in case of manually registered null instance (SPR-7523)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3641 50f2f4bb-b051-0410-bef5-90022cba6387
2010-09-06 19:47:16 +00:00
Juergen Hoeller da758771fa consistent use of JDK 1.5's ThreadLocal.remove() over ThreadLocal.set(null), preventing leaks (SPR-7441)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3627 50f2f4bb-b051-0410-bef5-90022cba6387
2010-09-01 17:17:25 +00:00
Ben Hale 82e5f5f5d6 Publishing license and notice files
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3612 50f2f4bb-b051-0410-bef5-90022cba6387
2010-08-23 13:17:31 +00:00
Arjen Poutsma 750dc01862 Prepping for 3.0.5
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3611 50f2f4bb-b051-0410-bef5-90022cba6387
2010-08-19 11:04:04 +00:00
Juergen Hoeller f68aa25579 temporarily disabled constructor argument caching for converted values (SPR-7423)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3608 50f2f4bb-b051-0410-bef5-90022cba6387
2010-08-19 09:30:04 +00:00