Commit Graph

1057 Commits

Author SHA1 Message Date
Chris Beams 9cefc5acd8 Deprecate AbstractSingletonProxyFactoryBean
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4796 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-26 22:29:14 +00:00
Chris Beams 328b502b4a Remove CacheProxyFactoryBean
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4795 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-26 22:29:09 +00:00
Chris Beams da6e7f9606 Deprecate TransactionProxyFactoryBean
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4794 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-26 22:29:04 +00:00
Juergen Hoeller 6ec0405287 general revision of cache package; added ConcurrentMapCacheManager
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4760 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-22 09:32:56 +00:00
Juergen Hoeller 0a9e986899 refined JBoss 6.0 note
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4753 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-21 09:51:23 +00:00
Juergen Hoeller f565d216b6 added "acceptProxyClasses" flag to RemoteInvocationSerializingExporter
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4749 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-21 09:04:42 +00:00
Juergen Hoeller b189a7645a updated javadoc for server-specific LoadTimeWeavers
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4747 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-21 08:36:40 +00:00
Chris Beams f26facfed8 Force lazy-init to false when parsing scheduled:task
A <scheduled:task> element declared within a
<beans default-lazy-init="true"> element represents a contradiction in
terms: such a task will never be executed.

For this reason, we now override any inherited lazy-init settings
when parsing <scheduled:task> elements, forcing lazy-init to false
for the underlying ScheduledTaskRegistrar bean.

Thanks to Mike Youngstrom for contributing an initial patch.

Issue: SPR-8498

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4732 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-19 23:00:12 +00:00
Costin Leau b12bcb22bb SPR-8533
+ add LTW support for JBoss 7
(renamed existing classes to MC (JBoss 5&6) and introduced Modules (JBoss 7))

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4726 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-19 07:24:47 +00:00
Juergen Hoeller eeb3d7f380 minor javadoc revision
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4725 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-18 21:50:15 +00:00
Juergen Hoeller 95b80272c8 polishing
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4722 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-18 21:37:24 +00:00
Chris Beams 626634feb3 Refactor execution of config class enhancement
This change returns the invocation order of
ConfigurationClassPostProcessor#enhanceConfigurationClasses to its
pre-3.1 M2 state. An earlier (and now unnecessary) refactoring in
service of @Feature method processing caused the change that this now
reverts.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4720 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-18 21:23:55 +00:00
Juergen Hoeller 52a039b9a6 polishing
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4704 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-15 14:48:51 +00:00
Juergen Hoeller 4ba3f330d7 call setEnvironment before other awareness methods rather than after; fixed AccessControlContext applicability check
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4702 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-15 14:40:38 +00:00
Costin Leau 254d8bd80f move default value wrapper into support package (rather then interceptor)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4700 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-15 14:13:22 +00:00
Chris Beams 6c6594137e Allow ConfigurationCPP to process multiple registries
Prior to this change, an instance of ConfigurationClassPostProcessor
would throw IllegalStateException if its
postProcessBeanDefinitionRegistry method were called more than once.
This check is important to ensure that @Configuration classes are
not proxied by CGLIB multiple times, and works for most normal use
cases.

However, if the same CCPP instance is used to process multiple
registries/factories/contexts, this check creates a false negative
because it does not distinguish between invocations of
postProcessBeanDefinitionRegistry across different registries.

A use case for this, though admittedly uncommon, would be creating
a CCPP instance and registering it via
ConfigurableApplicationContext#addBeanDefinitionPostProcessor against
several ApplicationContexts. In such a case, the same CCPP instance
will post-process multiple different registry instances, and throw the
above mentioned exception.

With this change, CCPP now performs lightweight tracking of the
registries/beanFactories that it has already processed by recording
the identity hashcodes of these objects.  This is only slightly more
complex than the previous boolean-based 'already processed' flags, and
prevents this issue (however rare it may be) from occurring.

Issue: SPR-8527

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4699 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-13 23:30:57 +00:00
Chris Beams 6c48c5e5d4 Move ImportSelector.Context to a top-level class
Issue: SPR-8411, SPR-8494

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4698 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-13 23:28:53 +00:00
Costin Leau 0640853200 + fix compilation error
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4693 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-13 13:51:20 +00:00
Costin Leau 7cd1791b20 + removed unneeded generic
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4692 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-13 12:58:09 +00:00
Chris Beams f99ab1cdd6 Fix APC registration for @EnableTransactionManagement
Prior to this change, @EnableTransactionManagement (via the
ProxyTransactionManagementConfiguration class) did not properly
register its auto-proxy creator through the usual AopConfigUtils
methods.  It was trying to register the APC as a normal @Bean method,
but this causes issues (SPR-8494) with the logic in
AopConfigUtils#registerOrEscalateApcAsRequired, which expects the APC
bean definition to have a beanClassName property.  When the APC is
registered via a @Bean definition, it is actually a
factoryBean/factoryMethod situation with no directly resolvable
beanClass/beanClassName.

To solve this problem, ImportSelector#selectImports has been refactored
to accept an ImportSelector.Context instance. This object contains the
AnnotationMetadata of the importing class as well as the enclosing
BeanDefinitionRegistry to allow for the kind of conditional bean
registration necessary here. In this case, the bean definition that
must be registered conditionally is that of the auto-proxy creator.
It should only be registered if AdviceMode == PROXY, and thus the
ImportSelector is an appropriate place to make this happen.  It must
happen as a BeanDefinition (rather than a @Bean method) for
compatibility with AopConfigUtils, and working with the
BeanDefinitionRegistry API allows for that. This change does mean that
in certain cases like this one, #selectImports has container modifying
side effects. Documentation has been updated to reflect.

Issue: SPR-8411, SPR-8494

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4686 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-11 01:17:19 +00:00
Chris Beams 7d9d255daf Determine FactoryBean object type via generics
For the particular use case detailed in SPR-8514, with this change we
now attempt to determine the object type of a FactoryBean through its
generic type parameter if possible.

For (a contrived) example:

@Configuration
public MyConfig {
    @Bean
    public FactoryBean<String> fb() {
        return new StringFactoryBean("foo");
    }
}

The implementation will now look at the <String> generic parameter
instead of attempting to instantiate the FactoryBean in order to call
its #getObjectType() method.

This is important in order to avoid the autowiring lifecycle issues
detailed in SPR-8514.  For example, prior to this change, the following
code would fail:

@Configuration
public MyConfig {
    @Autowired Foo foo;

    @Bean
    public FactoryBean<String> fb() {
        Assert.notNull(foo);
        return new StringFactoryBean("foo");
    }
}

The reason for this failure is that in order to perform autowiring,
the container must first determine the object type of all configured
FactoryBeans.  Clearly a chicken-and-egg issue, now fixed by this
change.

And lest this be thought of as an obscure bug, keep in mind the use case
of our own JPA support: in order to configure and return a
LocalContainerEntityManagerFactoryBean from a @Bean method, one will
need access to a DataSource, etc -- resources that are likely to
be @Autowired across @Configuration classes for modularity purposes.

Note that while the examples above feature methods with return
types dealing directly with the FactoryBean interface, of course
the implementation deals with subclasses/subinterfaces of FactoryBean
equally as well.  See ConfigurationWithFactoryBeanAndAutowiringTests
for complete examples.

There is at least a slight risk here, in that the signature of a
FactoryBean-returing @Bean method may advertise a generic type for the
FactoryBean less specific than the actual object returned (or than
advertised by #getObjectType for that matter). This could mean that an
autowiring target may be missed, that we end up with a kind of
autowiring 'false negative' where FactoryBeans are concerned. This is
probably a less common scenario than the need to work with an autowired
field within a FactoryBean-returning @Bean method, and also has a clear
workaround of making the generic return type more specific.

Issue: SPR-8514

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4681 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-06 09:15:37 +00:00
Chris Beams 075dfc3cb4 Deprecate/move CGLIB methods AopUtils=>ClassUtils
isCglibProxy* methods in AopUtils are useful in lower-level modules,
i.e. those that cannot depend on .aop.  Therefore copied these methods
to ClassUtils; deprecated the existing ones in AopUtils and now
delegating to the new location; switched all usage of
AopUtils#isCglibProxy* within the framework to use
ClassUtils#isCglibProxy* instead.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4679 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-06 09:15:27 +00:00
Chris Beams 0130b15189 Rename JMX tests to avoid jmxremote_optional error
Even after applying @Ignore to these tests at the class level, they
still run (and fail) under ant when the jmxremote_optional jar is not
present. See the issues mentioned below for information on how these
tests will be re-enabled.

Issue: SPR-8089, SPR-8093, SPR-8458

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4678 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-06 09:13:17 +00:00
Juergen Hoeller 327c75754b added "disabled" property to EhCacheFactoryBean
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4671 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-04 22:14:05 +00:00
Juergen Hoeller 17a56fcfdd properly wrap IndexOutOfBoundsException even for List
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4655 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-03 20:24:12 +00:00
Juergen Hoeller a4e5318aff DataBinder uses a default limit of 256 for array/collection auto-growing (SPR-7842)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4652 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-03 19:26:49 +00:00
Chris Beams 006da7ed81 Refactor JndiPropertySource
Prior to this change, JndiPropertySource worked directly against a JNDI
Context instance as its 'source' object.  This works well enough, but is
not nearly as fully-featured as Spring's existing JndiLocatorDelegate.

This change refactors JndiPropertySource from relying on an underlying
Context to relying on an underlying JndiLocatorDelegate.  By default,
the delegate's "resourceRef" property is set to true, meaning that the
implementation will always try to prepand a given name with
"java:comp/env/" before looking up the name, and upon failure will drop
back to the given name sans prefix.

See JndiPropertySource Javadoc for complete details.

Issue: SPR-8490

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4648 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-02 21:26:44 +00:00
Chris Beams 3be44b3f97 Move JNDI_PROPERTY_SOURCE_ENABLED_FLAG constant
Move JNDI_PROPERTY_SOURCE_ENABLED_FLAG from JndiPropertySource to
StandardServletEnvironment, as this is the only context in which the
constant makes sense.

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4647 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-02 21:26:38 +00:00
Chris Beams 6427a1bd9e Return null from JndiPropertySource on lookup failure
Issue: SPR-8490

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4646 50f2f4bb-b051-0410-bef5-90022cba6387
2011-07-02 21:26:30 +00:00
Costin Leau 08fc4f9015 SPR-8477
+ add no-op cache implementations suitable for cache declarations w/o a backing store

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4641 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-30 18:17:39 +00:00
David Syer 653c3b5280 SPR-5749: Add defensive matching using target class loader
* Changes to ASpectJExpressionPointcut plus some tests in Spring AOP
* plus some tests in groovy support

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4622 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-24 17:23:43 +00:00
Juergen Hoeller e12c5923f6 getBean(name, type) attempts type conversion if necessary (SPR-8480)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4609 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-22 20:54:02 +00:00
Juergen Hoeller 6335538e35 getBean(name, type) attempts type conversion if necessary (SPR-8480)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4607 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-22 20:52:28 +00:00
Chris Beams d058ba4579 Fix bridge method detection for class hierarchies
Prior to this change, @Autowired injection against an instance of a
subclass having different visibility than its superclass would fail
if the @Autowired method is declared only in the superclass. This is due
to an apparent change in the rules around bridge method generation
between Java 5 and Java 6, and possibly even varying across compiler
vendors.

Now, BridgeMethodResolver is used consistently when detecting
@Autowired, @Inject and @Resource metadata to bypass these bridge
methods if they exist.

Issue: SPR-7900

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4600 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-21 14:59:37 +00:00
Chris Beams d0e55b0564 Compensate for Windows paths in XmlBeanFactoryTests
Issue: SPR-8439

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4589 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-20 08:44:24 +00:00
David Syer 7613a1fc50 SPR-6268: check AnnotationUtils works with Groovy concrete classes (plus remove compiler warnings)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4572 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-17 13:35:57 +00:00
David Syer c287a3c71b SPR-6268: Add proxy-target-class to <lang:groovy/>
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4570 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-17 12:14:01 +00:00
Chris Beams b68f4d984a Provide default ParameterNameDiscoverer for AACBF
Prior to this change, AbstractAutowireCapableBeanFactory did not support
a default ParameterNameDiscoverer.  This meant that attempting to use
<constructor-arg name=".."> syntax would fail (with a fairly obscure
exception) as that feature depends on a ParameterNameDiscoverer to
introspect the constructor arguments.

This lack of a default was originally intended to avoid a dependency on
ASM, but now that (a) .asm is a built-in module and (b) .beans has a
non-optional compile-time dependency on .asm, there is no reason not to
provide this default.

The net effect is that in a number of locations throughout the
framework, namely in GenericApplicationContext and
AbstractRefreshableApplicationContext, it is no longer necessary to
explicitly call AACBF#setParameterNameDiscoverer. This also means that
using a naked BeanFactory (likely for testing scenarios) is that much
easier.

Issue: SPR-8184

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4568 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-17 09:47:19 +00:00
Chris Beams 4e2f464388 Consolidate tests related to @Config inheritance
Issue: SPR-8183

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4567 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-17 09:46:19 +00:00
Chris Beams 5a26457fca Revert "Re-enable ignored JMX tests"
As of SPR-8093, jmxremote_optional.jar is present on the build
server in jre/lib/ext, but it is not by default present on local
developer / user machines, meaning that the build ends up broken
by default.

Issue: SPR-8089, SPR-8093, SPR-8458

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4560 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-16 06:34:23 +00:00
Juergen Hoeller 8c0cfc859b restored support for String-to-ContextResource conversion (SPR-8383)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4555 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-15 15:40:12 +00:00
Juergen Hoeller a4827a93f6 refined WebLogic RMI descriptor to only mark 'getTargetInterfaceName' method as idempotent (SPR-8369)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4540 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-14 15:07:23 +00:00
Juergen Hoeller f88047c80f added further conversion tests (triggered by 3.0.6 backports)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4528 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-13 23:57:53 +00:00
Juergen Hoeller bbeed23f94 added further conversion tests (triggered by 3.0.6 backports)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4526 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-13 23:43:46 +00:00
Chris Beams cf8533fb97 Resolve ${...} placeholders in @PropertySource
Issue: SPR-8442

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4516 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-13 04:23:08 +00:00
Chris Beams 419288562b Polish @EnableScheduling Javadoc
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4515 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-12 06:56:37 +00:00
Chris Beams b3e77d9ef2 Add syntax highlighting to Javadoc where necessary
Issue: SPR-8426

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4514 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-12 06:56:17 +00:00
Sam Brannen 5cde94dc4b Polishing Eclipse classpath settings
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4513 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-11 19:56:48 +00:00
Juergen Hoeller c8627b2236 prepared Spring's DataSource and RowSet adapters for forward compatibility with JDBC 4.1
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4510 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-09 23:09:55 +00:00
Juergen Hoeller 03adc3b632 shortened build properties "org.junit.version" to "junit.version" and "org.testng.version" to "testng.version"; reverted SLF4J version back to 1.5.3 (for Hibernate 3.3.1 compatibility)
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4502 50f2f4bb-b051-0410-bef5-90022cba6387
2011-06-09 09:58:15 +00:00