Commit Graph

605 Commits

Author SHA1 Message Date
Juergen Hoeller e971ad56b6 reduced BeanDefinition footprint by initializing Sets and Maps with 0 (SPR-7491) 2011-01-05 19:59:00 +00:00
Keith Donald 818bd841fe method naming improvements; applyIndexObject call for array indexing 2011-01-05 16:54:03 +00:00
Keith Donald 39e0c29d19 TypeDescriptor cleanup and general polishing; fixed a number of bugs related to TypeDescriptor usage in client code across beans and spel packages 2011-01-05 05:49:33 +00:00
Chris Beams b3ff9be78f 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.
2011-01-03 09:04:34 +00:00
Sam Brannen b130a36af7 [SPR-7850][SPR-7851] Upgraded to JUnit 4.8.1 and TestNG 5.12.1; added changelog entries for 3.1.0.M1. 2010-12-30 08:00:58 +00:00
Chris Beams 9f5fd3afcf 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.
2010-12-22 21:40:19 +00:00
Arjen Poutsma 64c7549c70 Removed JDK 1.6 usage 2010-12-22 10:23:34 +00:00
Chris Beams f105670cec Fix breaking logic around getFilename() call 2010-12-15 17:34:31 +00:00
Chris Beams 1a7aebb0dd 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.
2010-12-15 17:09:31 +00:00
Chris Beams f46a455c72 Eliminate PropertySourceAggregator interface 2010-12-08 07:59:55 +00:00
Chris Beams 8770ea96b0 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.
2010-12-08 07:59:41 +00:00
Chris Beams b3e36a335d 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.
2010-12-08 07:59:25 +00:00
Chris Beams e0c5ced695 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
2010-12-05 20:14:26 +00:00
Chris Beams 5062dc31af 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.
2010-12-01 09:01:58 +00:00
Chris Beams f480333d31 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.
2010-10-25 19:48:20 +00:00
Juergen Hoeller 3c067e5db6 optimized AnnotationUtils findAnnotation performance for repeated search on same interfaces (SPR-7630) 2010-10-14 23:06:45 +00:00
Juergen Hoeller e1dbb66798 StringToArray/CollectionConverter trims element values before trying to convert them (SPR-7657) 2010-10-14 19:44:26 +00:00
Juergen Hoeller 4c73a29f99 polishing 2010-10-14 00:30:07 +00:00
Arjen Poutsma 1f296403da SPR-7620 - StaxEventContentHandler does not set Location for StartDocument event 2010-10-12 09:50:39 +00:00
Arjen Poutsma 35da7bdb44 SPR-7621 - AbstractStaxContentHandler sets NamespaceContext on every start/end element 2010-10-12 09:41:23 +00:00
Arjen Poutsma ab21dbad08 SPR-7621 - AbstractStaxContentHandler sets NamespaceContext on every start/end element 2010-10-12 09:35:23 +00:00
Juergen Hoeller c32c0d5674 fixed package declaration 2010-10-11 21:26:32 +00:00
Juergen Hoeller 0ef971b82b polishing 2010-10-11 21:15:26 +00:00
Juergen Hoeller b062de1133 revised initial cut of serializer package; moved Converter adapters to sub-package 'support' 2010-10-11 21:15:12 +00:00
Juergen Hoeller 3740380a7a polishing 2010-10-11 20:03:40 +00:00
Mark Fisher c046419acd SPR-7627 added Serializer and Deserializer strategies, Converter adapters, and default implementations 2010-10-11 17:36:18 +00:00
Juergen Hoeller f7cd9865f4 polishing 2010-10-10 21:09:59 +00:00
Juergen Hoeller ebe8052d55 fixed detection of element type in case of nested collections (SPR-7569) 2010-10-10 21:09:43 +00:00
Juergen Hoeller d9b54a524d revised "ClassUtils.isAssignable" semantics to cover primitives vs wrappers in both directions (SPR-7610) 2010-10-01 21:50:25 +00:00
Juergen Hoeller e211c09065 fixed exists() check for resources in zipped files (SPR-7559) 2010-09-29 14:45:44 +00:00
Juergen Hoeller eda6268d9d fixed findPlaceholderEndIndex to work with a custom suffix as well (SPR-7574) 2010-09-29 14:01:54 +00:00
Chris Beams 05bcc4028d 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.
2010-09-13 20:23:26 +00:00
Juergen Hoeller 87e7258c9a polishing 2010-09-09 22:14:36 +00:00
Arjen Poutsma af7203b839 Added XMLEventStreamWriter 2010-09-08 12:52:23 +00:00
Arjen Poutsma 449337a544 Small Stax fixes. 2010-09-08 09:45:18 +00:00
Arjen Poutsma f92f295055 Small Stax fixes. 2010-09-08 08:42:09 +00:00
Juergen Hoeller e6425ee41f polishing 2010-09-01 22:02:33 +00:00
Juergen Hoeller 0a17e41755 catch invalid arguments early; avoid stack overflow in object-to-collection case (SPR-7488) 2010-09-01 22:02:07 +00:00
Arjen Poutsma 416004b1bc Fixing build 2010-08-31 15:48:42 +00:00
Arjen Poutsma 2182287d3e Minor tweaks 2010-08-31 10:46:58 +00:00
Arjen Poutsma e3298061d2 Added createCustomStaxSource/Result, because JAXP 1.4 kills babies in their sleep. 2010-08-31 09:51:59 +00:00
Arjen Poutsma 9aafa1c6b2 Various StAX improvements. 2010-08-27 11:35:27 +00:00
Ben Hale 7730e76c06 Publishing license and notice files 2010-08-23 13:17:31 +00:00
Arjen Poutsma dbfa049e1e Prepping for 3.0.5 2010-08-19 11:04:04 +00:00
Arjen Poutsma 061b2c91a0 SPR-7474 - AbstractXmlStreamReader getAttributeValue(String, String) does not handle null namespaceURI properly 2010-08-19 07:53:48 +00:00
Juergen Hoeller 5c3cf5f672 added testStringArrayToResourceArray 2010-08-15 23:00:46 +00:00
Juergen Hoeller 35971f9f90 revised handler method resolution, in particular with respect to generic interfaces (SPR-7355) 2010-08-15 21:12:54 +00:00
Juergen Hoeller 49a2970def search super-interfaces as well (SPR-7355) 2010-08-14 21:12:58 +00:00
Juergen Hoeller 665a997f66 refined exception messages; added unit tests for custom array types 2010-08-14 19:42:29 +00:00
Juergen Hoeller 771db05608 changed contentLength() from int to long 2010-08-09 15:58:07 +00:00
Juergen Hoeller bda3d81bc9 implement file resolution for isReadable() as well 2010-08-08 23:21:41 +00:00
Juergen Hoeller 82730830d1 added "contentLength()" method to Resource abstraction; URL-based Resource variants introspect "last-modified" and "content-length" response headers (SPR-5465); refined "exists()" check for UrlResource (HEAD request) and ClassPathResource (URL resolution) 2010-08-08 22:53:52 +00:00
Juergen Hoeller d4f73c1d3d turned TypeDescriptor.UNKNOWN into an internal detail (SPR-7349) 2010-07-26 20:55:14 +00:00
Juergen Hoeller 8e5c033446 avoid double ConversionFailedException nesting 2010-07-26 20:33:34 +00:00
Juergen Hoeller f90125f984 fixed WeakReferenceMonitor to never stop its monitoring thread if an entry has been registered (SPR-7373) 2010-07-23 18:18:16 +00:00
Juergen Hoeller b7b7c067c6 GenericTypeResolver works for nested parameterized types and for generic superclasses as well (SPR-7389) 2010-07-22 15:57:55 +00:00
Juergen Hoeller 8f8fc97b79 fixed test failures with respect to null handling and PropertyTypeDescriptor usage for collection elements 2010-06-23 19:31:51 +00:00
Juergen Hoeller 27b04036a9 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) 2010-06-23 17:29:34 +00:00
Arjen Poutsma b31c34ed7d Upgrading version to 3.0.4 2010-06-15 14:18:29 +00:00
Juergen Hoeller 7b189d1124 avoid ConverterNotFoundException if source object is assignable to target type 2010-06-15 09:35:39 +00:00
Oliver Gierke 420f8237c0 Rollback accidental commit :/. 2010-06-15 05:33:39 +00:00
Oliver Gierke 897aab9f59 Added missing imports.
Added additional annotation to test interface to make sure no ClassCastException appears.
2010-06-15 05:29:48 +00:00
Oliver Gierke a383633630 Added helper methods to access method parameter annotations. 2010-06-15 05:29:45 +00:00
Juergen Hoeller 96b1dc9db4 ConversionService fully supports conversion from String to MediaType now (through 'valueOf'; SPR-7282); revised exception handling in ObjectToObjectConverter, avoiding InvocationTargetExceptions 2010-06-14 23:23:49 +00:00
Juergen Hoeller 902938e95f smarter guessing of the element type (SPR-7283) 2010-06-14 22:58:18 +00:00
Juergen Hoeller 379bc5a8a6 properly support void.class in TypeDescriptor and GenericConversionService (SPR-7281) 2010-06-11 21:40:56 +00:00
Juergen Hoeller cbb90236dc polished VFS support (SPR-7197) 2010-06-11 19:54:58 +00:00
Juergen Hoeller 11330baf77 DefaultListableBeanFactory checks for alias circle on registerAlias (avoiding endless loop; SPR-7274) 2010-06-10 21:45:47 +00:00
Juergen Hoeller 882289b06e getAllInterfacesForClass introspects parent interfaces as well (SPR-7247) 2010-06-08 00:05:31 +00:00
Juergen Hoeller 4cef52a86f polishing 2010-06-07 22:21:22 +00:00
Juergen Hoeller de866a0ff6 registerDependentBean resolves to the canonical bean name in order to handle alias references (SPR-7254) 2010-06-07 22:15:20 +00:00
Juergen Hoeller 2136b04b65 added limit for parsed SQL cache to NamedParameterJdbcTemplate (SPR-7237); added configurable cache limit to CachingMetadataReaderFactory 2010-05-26 19:35:06 +00:00
Juergen Hoeller 1532119787 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) 2010-05-26 13:58:37 +00:00
Juergen Hoeller de326e5e95 ClassUtils recognizes "void" as primitive type name as well (SPR-7212) 2010-05-18 08:49:09 +00:00
Costin Leau 578e80c1cf SPR-7197
+ fix template
2010-05-15 09:22:56 +00:00
Costin Leau d9a664a588 SPR-7197
polish :)
2010-05-14 19:34:36 +00:00
Costin Leau e9ecf5d716 SPR-7197
+ removed compile time dependency on JBoss VFS
+ added support for JBoss AS 6.0 / JBoss VFS 3.0.0 infrastructure
2010-05-14 19:29:44 +00:00
Luke Taylor 3f885d0302 Added DomUtils.getChildElements() method. Also refactored ConfigBeanDefinitionParser.parse() to use it. 2010-05-14 16:07:39 +00:00
Juergen Hoeller ceb668ac6c added getLastTaskInfo() method to StopWatch (SPR-7134) 2010-05-13 22:43:18 +00:00
Juergen Hoeller 77074c6c87 property placeholders can deal with nested expressions which happen to use the same suffix (SPR-7098) 2010-04-21 09:22:20 +00:00
Keith Donald e21a1c5a61 polish 2010-04-19 20:35:57 +00:00
Keith Donald 86906d1b4d checking in performance tests 2010-04-19 20:22:01 +00:00
Keith Donald 6e13cc9eaa thread safety for caching 2010-04-19 19:22:35 +00:00
Keith Donald e60389283d caching optmizations and performance tests 2010-04-19 03:58:28 +00:00
Keith Donald 066b4d542b polish 2010-04-19 01:47:34 +00:00
Keith Donald 594596f361 cache invalidation 2010-04-19 01:45:27 +00:00
Keith Donald bf03d0d56f converter caching 2010-04-18 21:43:00 +00:00
Juergen Hoeller 33252495cf fixed @ExceptionHandler resolution in case of multiple matches at different inheritance levels (SPR-7085) 2010-04-18 18:48:24 +00:00
Keith Donald a71514222a preserving desc context for collection/map elements 2010-04-18 14:09:41 +00:00
Keith Donald 8464ac90c7 promoted char sequence first 2010-04-17 20:22:30 +00:00
Keith Donald ebbf63f4e0 polish 2010-04-17 06:47:08 +00:00
Keith Donald b9aeba23ef fixed failing test 2010-04-17 06:28:06 +00:00
Keith Donald d98da7d240 fixed failing test 2010-04-17 04:50:01 +00:00
Keith Donald e7c99b2b62 no longer used 2010-04-17 04:43:54 +00:00
Keith Donald 64d6a42dfd improved conversion system logging, collection converter simplification/polish, several optimizations, annotation-driven formatting caching 2010-04-17 04:43:28 +00:00
Juergen Hoeller f6b56a591c PropertyTypeDescriptor detects underlying field with same lenient naming rules as CachedIntrospectionResults (SPR-7102) 2010-04-16 15:39:23 +00:00
David Syer eb7f8309e2 Update version in POMs to 3.0.3 2010-04-15 10:26:14 +00:00
Juergen Hoeller 4d2a398cbc call setAccessible for public final field too (SPR-7078) 2010-04-08 12:15:18 +00:00
Juergen Hoeller e2a9bc9c66 specific detection of CGLIB subclasses in order to properly handle CGLIB interfaces (SPR-7066) 2010-04-06 11:52:42 +00:00
Ramnivas Laddad 66d2c6698b Improved fix for SPR-6850 by dealing with bounds separately from normal types 2010-04-01 23:37:08 +00:00