Commit Graph

3736 Commits

Author SHA1 Message Date
Keith Donald c6481d56de ignore failing test
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3888 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 17:29:00 +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 bcb10f2fe4 empty collection test refinements
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3884 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 15:27:29 +00:00
Keith Donald c45f4b1caf spr-7728: empty collection conversion can return value not assignable to targetType
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3883 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 14:21:54 +00:00
Chris Beams 5a7d2a91ba Introduce ApplicationContextInitializer interface
Designed primarily for use in conjunction with web applications
to provide a convenient mechanism for configuring the container
programmatically.

ApplicationContextInitializer implementations are specified through the
new "contextInitializerClasses" servlet context parameter, then detected
and invoked by ContextLoader in its customizeContext() method.

In any case, the semantics of ApplicationContextInitializer's
initialize(ConfigurableApplicationContext) method require that
invocation occur *prior* to refreshing the application context.

ACI implementations may also implement Ordered/PriorityOrdered and
ContextLoader will sort instances appropriately prior to invocation.

Specifically, this new support provides a straightforward way to
programmatically access the container's Environment for the purpose
of adding, removing or otherwise manipulating PropertySource objects.

See Javadoc for further details.

Also note that ApplicationContextInitializer semantics overlap to
some degree with Servlet 3.0's notion of ServletContainerInitializer
classes. As Spring 3.1 development progresses, we'll likely see
these two come together and further influence one another.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3882 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 09:57:57 +00:00
Keith Donald 61d54ae436 Favor convertValue(Object, TypeDescriptor) where possible and TypedValue(Object); check with Andy on Selection and Projection TypedValue usage
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3881 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 06:32:21 +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 5403913103 added call to applyIndexedObject to build nested source element type descriptor from element value
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3879 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 04:41:21 +00:00
Keith Donald 76443f55c1 support for empty collection->collection. map->map, collection->array conversion
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3878 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-07 03:24:24 +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
Sam Brannen 22e377580c Changed slf4j.jcl dependency from 1.5.6 to 1.5.3 for consistency with build.versions.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3874 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 20:05:22 +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
Sam Brannen b8d53d2ba7 Updates to readme and changelog files regarding 3.1.0.M1
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3872 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 12:05:48 +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 1f8637d944 Introduce and integrate JndiPropertySource
DefaultWebEnvironment automatically adds a JndiPropertySource if
a "jndiPropertySourceEnabled" property is detected in any of the
other other default property sources.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3869 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 07:43:29 +00:00
Chris Beams 6364c02427 Polish Javadoc for PropertySource implementations
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3868 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-06 07:43:03 +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 480aa5d993 Document createEnvironment() methods
in AbstractApplicationContext and SpringContextResourceAdapter

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3866 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 22:25:42 +00:00
Chris Beams 0821b2c6c2 Polish (Mutable)PropertySources
* PropertySources is now an Iterable<PropertySource> in favor of
  exposing an asList() method
* Otherwise reduced the set of methods exposed by PropertySources to the
  absolute minimum
* Added Javadoc for both types and all methods

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3865 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 22:25:24 +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
Chris Beams 520579d886 Update build instructions in readme
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3861 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 22:22:58 +00:00
Juergen Hoeller a0ee194603 reduced BeanDefinition footprint by initializing Sets and Maps with 0 (SPR-7491)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3860 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 19:59:00 +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
Juergen Hoeller 3107fec82d fixed aspects bundle to declare dependencies for @Async aspect as well (SPR-7702)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3858 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 19:50:23 +00:00
Juergen Hoeller ad67d91646 fixed AbstractBindingResult to avoid NPE in "hashCode()" if target is null (SPR-7682)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3857 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 19:42:35 +00:00
Juergen Hoeller 0b82100930 ProxyCreationContext uses "ThreadLocal.remove()" over "ThreadLocal.set(null)" as well
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3856 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 19:32:02 +00:00
Juergen Hoeller f2ef44a1a5 EhCacheManagerFactoryBean properly closes "ehcache.xml" input stream, if any (SPR-7813)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3855 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 19:29:07 +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
Keith Donald caf5e90197 failing nested list binding
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3853 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 17:10:05 +00:00
Keith Donald 3b5b442ffd ignore failing map test case
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3852 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 16:59:47 +00:00
Keith Donald cf4062ed33 method naming improvements; applyIndexObject call for array indexing
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3851 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 16:54:03 +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 776d4f4f9a spr 7839 reproduce
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3849 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 06:38: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
Keith Donald ed632c2a4a spr7766
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3847 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-05 06:05:34 +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
Arjen Poutsma dfb8b267ca SPR-7845 - FormHttpMessageConverter.read() always ignores post data when processing request (from Tomcat)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3845 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-04 11:25:30 +00:00
Michael Isvy 50da443eb3 SPR-7858
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3844 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-04 09:40:39 +00:00
Arjen Poutsma 5f6c1145df SPR-7834 - HttpHeaders.getEtag() mangles the value
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3843 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-03 15:51:23 +00:00
Arjen Poutsma cac2354a85 SPR-7845 - FormHttpMessageConverter.read() always ignores post data when processing request (from Tomcat)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3842 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-03 14:48:34 +00:00
Arjen Poutsma 241e8f12e0 SPR-7845 - FormHttpMessageConverter.read() always ignores post data when processing request (from Tomcat)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3841 50f2f4bb-b051-0410-bef5-90022cba6387
2011-01-03 14:38:28 +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