Release version 3.1.1.RELEASE
Increment version to 3.1.2.BUILD-SNAPSHOT
Update reference doc copyright year to 2012
Fix regression in @PropertySource placeholder resolution

Changes in commit 41ade68b50b39485b3cf02b9c6fb8eb74962146b introduced
a regression causing all but the first location in the
@PropertySource#value array to be ignored during ${...} placeholder
resolution. This change ensures that all locations are processed and
replaced as expected.

Issue: SPR-9133
Backport-Issue: SPR-9127
Backport-Commit: 4df2a14b13ac41d71f8034fa68e1b7e54e3f7a48
Avoid infinite loop in AbstractResource#contentLength

Due to changes made in commit 2fa87a71 for SPR-9118,
AbstractResource#contentLength would fall into an infinite loop unless
the method were overridden by a subclass (which it is in the majority of
use cases).

This commit:

 - fixes the infinite recursion by refactoring to a while loop

 - asserts that the value returned from #getInputStream is not null in
   order to avoid NullPointerException

 - tests both of the above

 - adds Javadoc to the Resource interface to clearly document that the
   contract for any implementation is that #getInputStream must not
   return null

Issue: SPR-9163
Backport-Issue: SPR-9161
Backport-Commit: 7ca5fba05ff0ef4dcf076303e1cba19c4b771d94
Return null correctly from MutablePropertySources#get

Prior to this commit, MutablePropertySources#get(String) would throw
IndexArrayOutOfBoundsException if the named property source does not
actually exist. This is a violation of the PropertySource#get contract
as described in its Javadoc.

The implementation now correctly checks for the existence of the named
property source, returning null if non-existent and otherwise returning
the associated PropertySource.

Other changes

 - Rename PropertySourcesTests => MutablePropertySourcesTests
 - Polish MutablePropertySourcesTests for style, formatting
 - Refactor MutablePropertySources for consistency

Issue: SPR-9185
Backport-Issue: SPR-9179
Backport-Commit: 15d1d824b54b2ec36a7c926e12644b391b310930
fixed OSGi metadata for optional "javax.inject" package import (SPR-9173)
JDBC parameter binding uses JDBC 3.0 ParameterMetaData (if available) for type determination
moved getInputStream() not-null requirement to InputStreamSource itself
initial fixes for 3.1.2
moved getInputStream() not-null requirement to InputStreamSource itself
JDBC parameter binding uses JDBC 3.0 ParameterMetaData (if available) for type determination
Eliminate INDEX.LIST from Spring jar META-INF dirs

The contents of this file could be problematic as they were generated
by spring-build with "org.springframework.core.jar" EBR-style naming,
but this naming is incorrect when dealing with Maven-central style
artifacts, e.g. spring-core.jar.

While a well-formed INDEX.LIST may speed up classloading, the simplest
solution to the issues listed below is simply to eliminate the file.
This also means consistent treatment across 3.1.x and 3.2.x artifacts,
as the new Gradle build in 3.2.x does not create these index files.

Issue: SPR-6383, SPR-9208
Fix typo in reference documentation

Issue: SPR-9321
Clarify @EnableScheduling javadoc

It is now advised that destroyMethod="shutdown" should be used
on @Bean methods returning an ExecutorService.

Backport-Issue: SPR-9280
Backport-Commit: 6da03a61b22696283c2c5c79f8f88b5c36480560
Add missing section ids in reference documentation

Add missing id attributes to <section> elements in the reference
documentation to ensure stable anchor links in HTML output.

Issue: SPR-9410
Backport-Issue: SPR-9346
Backport-Commit: 2a75c57d3c4a295e677c54a987425525e9cef0ed
ServletContextResource's getFile implementation falls back to getRealPath for non-existent files (SPR-8461)
fixed StandardServletMultipartResolver compatibility with Resin (SPR-9299)
EhCacheFactoryBean applies listeners and enabled/disabled flags to existing cache regions as well (SPR-9392)
polishing