Commit Graph

135 Commits

Author SHA1 Message Date
Juergen Hoeller c182283beb turned to package visibility
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3986 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-10 01:58:21 +00:00
Chris Beams 3fbe9d5a55 Fix STS compatibility issues; other improvements
Revert changes to ParserContext, ReaderContext, and XmlReaderContext

    These changes cause cross-version incompatibilities at tooling time
    -- for instance, an STS version that ships with Spring 3.0.5
    classloads the ParserContext defined in that version, whereas it
    classloads NamespaceHandlers and BeanDefinitionParsers (by default)
    from the user application classpath, which may be building against
    3.1.0. If so, the changes introduced to these types in 3.1.0 are
    incompatible with expectations in the 3.0.5 world and cause all
    manner of problems.  In this case, it was NoSuchMethodError due to
    the newly-added XmlReaderContext.getProblemReporter() method; also
    IncompatibleClassChangeError due to the introduction of the
    ComponentRegistrar interface on ParserContext.

    Each of these problems have been mitigated, though the solutions
    are not ideal. The method mentioned has been removed, and instead
    the problemReporter field is now accessed reflectively.
    ParserContext now no longer implements ComponentRegistrar, and
    rather a ComponentRegistrarAdapter class has been introduced that
    passes method calls through to a ParserContext delegate.

Introduce AbstractSpecificationBeanDefinitionParser

    AbstractSpecificationBeanDefinitionParser has been introduced in
    order to improve the programming model for BeanDefinitionParsers
    that have been refactored to the new FeatureSpecification model.
    This new base class and it's template method implementation of
    parse/doParse ensure that common concerns like (1) adapting a
    ParserContext into a SpecificationContext, (2) setting source and
    source name on the specification, and (3) actually executing the
    specification are all managed by the base class.  The subclass
    implementation of doParse need only actually parse XML, populate
    and return the FeatureSpecification object.  This change removed
    the many duplicate 'createSpecificationContext' methods that had
    been lingering.

Minor improvement to BeanDefinitionReaderUtils API

    Introduced new BeanDefinitionReaderUtils#registerWithGeneratedName
    variant that accepts BeanDefinition as opposed to
    AbstractBeanDefinition, as BeanDefinition is all that is actually
    necessary to satisfy the needs of the method implementation. The
    latter variant accepting AbstractBeanDefinition has been deprecated
    but remains intact and delegates to the new variant in order to
    maintain binary compatibility.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3980 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-09 16:44:26 +00:00
Chris Beams adc9400905 Include license.txt and notice.txt in module JARs
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3967 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-09 06:56:40 +00:00
Chris Beams f8a4dfa5da Rename ExecutorContext => SpecificationContext
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3961 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-08 19:08:41 +00:00
Chris Beams 9fd86f589f Extract ProblemCollector interface
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3959 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-08 19:07:03 +00:00
Chris Beams dc22760978 Introduce FeatureSpecification support
Introduce FeatureSpecification interface and implementations

    FeatureSpecification objects decouple the configuration of
    spring container features from the concern of parsing XML
    namespaces, allowing for reuse in code-based configuration
    (see @Feature* annotations below).

    * ComponentScanSpec
    * TxAnnotationDriven
    * MvcAnnotationDriven
    * MvcDefaultServletHandler
    * MvcResources
    * MvcViewControllers

Refactor associated BeanDefinitionParsers to delegate to new impls above

    The following BeanDefinitionParser implementations now deal only
    with the concern of XML parsing.  Validation is handled by their
    corresponding FeatureSpecification object.  Bean definition creation
    and registration is handled by their corresponding
    FeatureSpecificationExecutor type.

    * ComponentScanBeanDefinitionParser
    * AnnotationDrivenBeanDefinitionParser (tx)
    * AnnotationDrivenBeanDefinitionParser (mvc)
    * DefaultServletHandlerBeanDefinitionParser
    * ResourcesBeanDefinitionParser
    * ViewControllerBeanDefinitionParser

Update AopNamespaceUtils to decouple from XML (DOM API)

    Methods necessary for executing TxAnnotationDriven specification
    (and eventually, the AspectJAutoProxy specification) have been
    added that accept boolean arguments for whether to proxy
    target classes and whether to expose the proxy via threadlocal.

    Methods that accepted and introspected DOM Element objects still
    exist but have been deprecated.

Introduce @FeatureConfiguration classes and @Feature methods

    Allow for creation and configuration of FeatureSpecification objects
    at the user level.  A companion for @Configuration classes allowing
    for completely code-driven configuration of the Spring container.

    See changes in ConfigurationClassPostProcessor for implementation
    details.

    See Feature*Tests for usage examples.

    FeatureTestSuite in .integration-tests is a JUnit test suite designed
    to aggregate all BDP and Feature* related tests for a convenient way
    to confirm that Feature-related changes don't break anything.
    Uncomment this test and execute from Eclipse / IDEA. Due to classpath
    issues, this cannot be compiled by Ant/Ivy at the command line.

Introduce @FeatureAnnotation meta-annotation and @ComponentScan impl

    @FeatureAnnotation provides an alternate mechanism for creating
    and executing FeatureSpecification objects.  See @ComponentScan
    and its corresponding ComponentScanAnnotationParser implementation
    for details.  See ComponentScanAnnotationIntegrationTests for usage
    examples

Introduce Default[Formatting]ConversionService implementations

    Allows for convenient instantiation of ConversionService objects
    containing defaults appropriate for most environments.  Replaces
    similar support originally in ConversionServiceFactory (which is now
    deprecated). This change was justified by the need to avoid use
    of FactoryBeans in @Configuration classes (such as
    FormattingConversionServiceFactoryBean). It is strongly preferred
    that users simply instantiate and configure the objects that underlie
    our FactoryBeans. In the case of the ConversionService types, the
    easiest way to do this is to create Default* subtypes. This also
    follows convention with the rest of the framework.

Minor updates to util classes

    All in service of changes above. See diffs for self-explanatory
    details.

    * BeanUtils
    * ObjectUtils
    * ReflectionUtils

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3954 50f2f4bb-b051-0410-bef5-90022cba6387
2011-02-08 14:42:33 +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 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 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 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 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 d5149d86f4 use generic Class<?> in TransactionAttributeSource signature
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3581 50f2f4bb-b051-0410-bef5-90022cba6387
2010-08-15 21:19:52 +00:00
Juergen Hoeller 544208bc46 introspect superclass when given a CGLIB proxy as target class (SPR-7448); use generic Class<?> in TransactionAttributeSource signature
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3566 50f2f4bb-b051-0410-bef5-90022cba6387
2010-08-11 21:47:50 +00:00
Juergen Hoeller 188efe752e transaction names based on method id from most specific method (target class instead of interface; SPR-7317)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3465 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-28 19:47:13 +00:00
Juergen Hoeller 7be1856e9f Spring's MessageEndpointFactory classes are now JCA 1.6 compliant as well
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3444 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-23 17:23:11 +00:00
Arjen Poutsma 7f54fe732f Upgrading version to 3.0.4
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3428 50f2f4bb-b051-0410-bef5-90022cba6387
2010-06-15 14:18:29 +00:00
Juergen Hoeller 509930ab35 @Transactional qualifier value matches against @Qualifier annotations on @Bean methods as well (SPR-7232)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3368 50f2f4bb-b051-0410-bef5-90022cba6387
2010-05-26 09:46:03 +00:00
Juergen Hoeller b15ec21c0e only retrieve transaction manager bean if necessary (SPR-7153)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3308 50f2f4bb-b051-0410-bef5-90022cba6387
2010-05-03 12:51:54 +00:00
David Syer faa0f29f0f Update version in POMs to 3.0.3
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3246 50f2f4bb-b051-0410-bef5-90022cba6387
2010-04-15 10:26:14 +00:00
Juergen Hoeller 7ae7f47951 added javadoc references to semantic definition of transaction attributes (SPR-7029)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3165 50f2f4bb-b051-0410-bef5-90022cba6387
2010-03-24 23:22:52 +00:00
Juergen Hoeller c140717a84 JCA listener containers delegate to wrapped Transaction handle (for Geronimo compatibility; SPR-6991)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3146 50f2f4bb-b051-0410-bef5-90022cba6387
2010-03-23 16:27:34 +00:00
Chris Beams 0041848f1b SPR-7009: TransactionInterceptor now extracts ultimate target class before evaluating @Transactional metadata to accommodate double-proxying cases
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3144 50f2f4bb-b051-0410-bef5-90022cba6387
2010-03-23 12:06:30 +00:00
Juergen Hoeller d609376c10 AopUtils.getTargetClass(...) never returns null (SPR-7011)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3136 50f2f4bb-b051-0410-bef5-90022cba6387
2010-03-22 18:31:13 +00:00
Juergen Hoeller 5a41fc20eb avoid Synchronization List preparations upfront if possible (SPR-6999)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3131 50f2f4bb-b051-0410-bef5-90022cba6387
2010-03-22 14:31:58 +00:00
Juergen Hoeller b6a298d8b3 avoid Synchronization List preparations upfront if possible (SPR-6999)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3128 50f2f4bb-b051-0410-bef5-90022cba6387
2010-03-22 14:23:02 +00:00
Juergen Hoeller 630ecacac9 @Transactional qualifiers work in unit tests as well (SPR-6892)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3100 50f2f4bb-b051-0410-bef5-90022cba6387
2010-03-12 20:44:41 +00:00
David Syer 25ef81476d Update Central POMs to 3.0.2
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3022 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-21 15:32:18 +00:00
Costin Leau 4be6044db9 + make use or property placeholders inside template.mf
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3014 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-19 09:43:22 +00:00
Juergen Hoeller c6f1d755b5 included qualifier value in debug log for each transaction (SPR-6811)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2937 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-09 14:57:17 +00:00
Juergen Hoeller 229c393702 non-matching @Transactional qualifier value will lead to IllegalStateException (SPR-6810)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2933 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-08 18:32:38 +00:00
Chris Beams f86e3bcfd2 Updated Eclipse .classpath to aspectj 1.6.8
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2920 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-04 13:45:14 +00:00
Costin Leau 5e677feda0 + upgrade to AspectJ 1.6.8
+ externalize some of the jar versions
+ align the versions of some dependencies between pom.xml and ivy.xml

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2918 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-04 11:46:21 +00:00
Juergen Hoeller 30dfba110d fixed WebSphereUowTransactionManager regression: correctly roll back in case of exception (SPR-6695)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2907 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-03 19:41:14 +00:00
Juergen Hoeller 9991a013fd TransactionInterceptor is able to serialize "transactionManagerBeanName" as well (SPR-6680)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2889 50f2f4bb-b051-0410-bef5-90022cba6387
2010-02-01 14:45:11 +00:00
David Syer e6d2f9428c SPR-6678: fix poms for 3.0.1
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2809 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-13 11:07:08 +00:00
Juergen Hoeller 0cac1c6dfc added "alwaysTranslate" flag (SPR-6630)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2804 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-12 13:26:22 +00:00
Juergen Hoeller dc82280545 added assertion
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2791 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-07 23:28:25 +00:00
Juergen Hoeller 09e967e61d allow for identifying a specific JBossWorkManagerMBean (SPR-6648)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2778 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-06 22:15:58 +00:00
Juergen Hoeller c67cca48a6 fixed scoped proxy unwrapping (SPR-6625)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2749 50f2f4bb-b051-0410-bef5-90022cba6387
2010-01-05 12:52:28 +00:00
Juergen Hoeller 5b59b9a0dc avoid hard-coded AOP dependency for ScopedObject check
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2687 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-15 21:20:51 +00:00
Juergen Hoeller b6d0e19958 extended registerAfterCompletionWithExistingTransaction's exception handling to detect JBoss RollbackException as well (SPR-6450)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2598 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-07 20:53:21 +00:00
Juergen Hoeller 3a683ea0ac newTransactionStatus reverted to its original role, just without preparing synchronization (SPR-6521)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2591 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-07 14:27:27 +00:00
David Syer 2bad74c238 SPR-5327: tweak the ivy.xml so that commons-logging is a separate configuration. It already comes out as optional in the generated poms (including core), which isn't great, but I can't see what is causing that
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2579 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-04 18:25:31 +00:00
Juergen Hoeller ea9f18b8fd initialize synchronization after begin while instantiating TransactionStatus as early as possible (SPR-6409)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2554 50f2f4bb-b051-0410-bef5-90022cba6387
2009-12-01 01:32:51 +00:00
Mark Fisher 8e92336f2b SPR-5507 The 'shutdownOrder' property of SmartLifecycle has been renamed 'phase'. The order no longer applies to shutdown only; now startup order is determined by the phase value as well. Components start in ascending order and stop in descending order.
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2501 50f2f4bb-b051-0410-bef5-90022cba6387
2009-11-24 16:07:23 +00:00
Juergen Hoeller 39bf8dc02e added chaining-capable "add" method to MutablePropertyValues
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2462 50f2f4bb-b051-0410-bef5-90022cba6387
2009-11-19 22:30:35 +00:00