diff --git a/README.md b/README.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/spring-aop-3.2.18.RELEASE.pom b/spring-aop-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..4c43c9e0887d38bebbf5bfaa0b963c9b9955d164
--- /dev/null
+++ b/spring-aop-3.2.18.RELEASE.pom
@@ -0,0 +1,75 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-aop
+ 3.2.18.RELEASE
+ Spring AOP
+ Spring AOP
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ aopalliance
+ aopalliance
+ 1.0
+ compile
+
+
+ com.jamonapi
+ jamon
+ 2.4
+ compile
+ true
+
+
+ commons-pool
+ commons-pool
+ 1.5.7
+ compile
+ true
+
+
+ org.aspectj
+ aspectjweaver
+ 1.7.4
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+
diff --git a/spring-beans-3.2.18.RELEASE.pom b/spring-beans-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..afba7b3bd1e5ce30a4a50b3d6318686a0f559fc5
--- /dev/null
+++ b/spring-beans-3.2.18.RELEASE.pom
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ Spring Beans
+ Spring Beans
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ javax.el
+ el-api
+ 1.0
+ compile
+ true
+
+
+ javax.inject
+ javax.inject
+ 1
+ compile
+ true
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+
diff --git a/spring-context-3.2.18.RELEASE.pom b/spring-context-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..e9f502e3d24b00d776bc0b186178bceef4f1e53c
--- /dev/null
+++ b/spring-context-3.2.18.RELEASE.pom
@@ -0,0 +1,151 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ Spring Context
+ Spring Context
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ backport-util-concurrent
+ backport-util-concurrent
+ 3.0
+ compile
+ true
+
+
+ javax.ejb
+ ejb-api
+ 3.0
+ compile
+ true
+
+
+ javax.inject
+ javax.inject
+ 1
+ compile
+ true
+
+
+ javax.persistence
+ persistence-api
+ 1.0
+ compile
+ true
+
+
+ javax.validation
+ validation-api
+ 1.0.0.GA
+ compile
+ true
+
+
+ joda-time
+ joda-time
+ 2.2
+ compile
+ true
+
+
+ org.apache.geronimo.specs
+ geronimo-jms_1.1_spec
+ 1.1
+ compile
+ true
+
+
+ org.aspectj
+ aspectjweaver
+ 1.7.4
+ compile
+ true
+
+
+ org.beanshell
+ bsh
+ 2.0b4
+ compile
+ true
+
+
+ org.codehaus.groovy
+ groovy-all
+ 1.8.9
+ compile
+ true
+
+
+ org.hibernate
+ hibernate-validator
+ 4.3.1.Final
+ compile
+ true
+
+
+ org.jruby
+ jruby
+ 1.7.12
+ compile
+ true
+
+
+ org.springframework
+ spring-aop
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-expression
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-instrument
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+
diff --git a/spring-context-support-3.2.18.RELEASE.pom b/spring-context-support-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..d43cc18f7042ea8735cd69977d519bbec00958bd
--- /dev/null
+++ b/spring-context-support-3.2.18.RELEASE.pom
@@ -0,0 +1,137 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-context-support
+ 3.2.18.RELEASE
+ Spring Context Support
+ Spring Context Support
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ com.lowagie
+ itext
+ 2.1.7
+ compile
+ true
+
+
+ javax.cache
+ cache-api
+ 0.5
+ compile
+ true
+
+
+ javax.mail
+ mail
+ 1.4.7
+ compile
+ true
+
+
+ net.sf.ehcache
+ ehcache-core
+ 2.0.1
+ compile
+ true
+
+
+ net.sf.jasperreports
+ jasperreports
+ 3.7.6
+ compile
+ true
+
+
+ org.codehaus.fabric3.api
+ commonj
+ 1.1.0
+ compile
+ true
+
+
+ org.freemarker
+ freemarker
+ 2.3.20
+ compile
+ true
+
+
+ org.quartz-scheduler
+ quartz
+ 1.7.3
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-jdbc
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-tx
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ velocity
+ velocity
+ 1.5
+ compile
+ true
+
+
+ javax.activation
+ activation
+ 1.1
+ provided
+
+
+
diff --git a/spring-core-3.2.18.RELEASE.pom b/spring-core-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..71271c147cd4065922c524530c4fef231040d941
--- /dev/null
+++ b/spring-core-3.2.18.RELEASE.pom
@@ -0,0 +1,63 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ Spring Core
+ Spring Core
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ commons-logging
+ commons-logging
+ 1.1.3
+ compile
+
+
+ log4j
+ log4j
+ 1.2.17
+ compile
+ true
+
+
+ net.sf.jopt-simple
+ jopt-simple
+ 3.3
+ compile
+ true
+
+
+ org.aspectj
+ aspectjweaver
+ 1.7.4
+ compile
+ true
+
+
+
diff --git a/spring-expression-3.2.18.RELEASE.pom b/spring-expression-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..a754b282042eb0be38b550be441ee4d172db2ca4
--- /dev/null
+++ b/spring-expression-3.2.18.RELEASE.pom
@@ -0,0 +1,42 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-expression
+ 3.2.18.RELEASE
+ Spring Expression Language (SpEL)
+ Spring Expression Language (SpEL)
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+
diff --git a/spring-instrument-3.2.18.RELEASE.pom b/spring-instrument-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..cc9876c7cb6c4161e030bb1cdfe742df3f4b8069
--- /dev/null
+++ b/spring-instrument-3.2.18.RELEASE.pom
@@ -0,0 +1,34 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-instrument
+ 3.2.18.RELEASE
+ Spring Instrument
+ Spring Instrument
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
diff --git a/spring-instrument-tomcat-3.2.18.RELEASE.pom b/spring-instrument-tomcat-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..cda74f2e5a42db32f9f5c1a09222c03bfaf4b355
--- /dev/null
+++ b/spring-instrument-tomcat-3.2.18.RELEASE.pom
@@ -0,0 +1,42 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-instrument-tomcat
+ 3.2.18.RELEASE
+ Spring Instrument Tomcat
+ Spring Instrument Tomcat
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ org.apache.tomcat
+ catalina
+ 6.0.16
+ provided
+
+
+
diff --git a/spring-jdbc-3.2.18.RELEASE.pom b/spring-jdbc-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..83d7c25953686eea4a52e627bd56023f31134cdf
--- /dev/null
+++ b/spring-jdbc-3.2.18.RELEASE.pom
@@ -0,0 +1,103 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-jdbc
+ 3.2.18.RELEASE
+ Spring JDBC
+ Spring JDBC
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ c3p0
+ c3p0
+ 0.9.1.2
+ compile
+ true
+
+
+ com.h2database
+ h2
+ 1.0.79
+ compile
+ true
+
+
+ hsqldb
+ hsqldb
+ 1.8.0.10
+ compile
+ true
+
+
+ org.apache.derby
+ derby
+ 10.5.3.0_1
+ compile
+ true
+
+
+ org.apache.derby
+ derbyclient
+ 10.5.3.0_1
+ compile
+ true
+
+
+ org.apache.geronimo.specs
+ geronimo-jta_1.1_spec
+ 1.1
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-tx
+ 3.2.18.RELEASE
+ compile
+
+
+
diff --git a/spring-jms-3.2.18.RELEASE.pom b/spring-jms-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..b4b9b991c132c8fac3bb5d008b71cbe10dc707ce
--- /dev/null
+++ b/spring-jms-3.2.18.RELEASE.pom
@@ -0,0 +1,114 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-jms
+ 3.2.18.RELEASE
+ Spring JMS
+ Spring JMS
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ aopalliance
+ aopalliance
+ 1.0
+ compile
+ true
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.0.6
+ compile
+ true
+
+
+ javax.resource
+ connector-api
+ 1.5
+ compile
+ true
+
+
+ org.apache.geronimo.specs
+ geronimo-jta_1.1_spec
+ 1.1
+ compile
+ true
+
+
+ org.codehaus.jackson
+ jackson-mapper-asl
+ 1.7.9
+ compile
+ true
+
+
+ org.springframework
+ spring-aop
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-oxm
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-tx
+ 3.2.18.RELEASE
+ compile
+
+
+ org.apache.geronimo.specs
+ geronimo-jms_1.1_spec
+ 1.1
+ provided
+
+
+
diff --git a/spring-orm-3.2.18.RELEASE.pom b/spring-orm-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..3839fabf8517d8596d0b83bce1e3d7a596184828
--- /dev/null
+++ b/spring-orm-3.2.18.RELEASE.pom
@@ -0,0 +1,179 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-orm
+ 3.2.18.RELEASE
+ Spring Object/Relational Mapping
+ Spring Object/Relational Mapping
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ aopalliance
+ aopalliance
+ 1.0
+ compile
+ true
+
+
+ javax.jdo
+ jdo-api
+ 3.0
+ compile
+ true
+
+
+ javax.persistence
+ persistence-api
+ 1.0
+ compile
+ true
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ compile
+ true
+
+
+ org.apache.ibatis
+ ibatis-sqlmap
+ 2.3.4.726
+ compile
+ true
+
+
+ org.apache.openjpa
+ openjpa
+ 1.1.0
+ compile
+ true
+
+
+ org.eclipse.persistence
+ org.eclipse.persistence.core
+ 1.0.1
+ compile
+ true
+
+
+ org.eclipse.persistence
+ org.eclipse.persistence.jpa
+ 1.0.1
+ compile
+ true
+
+
+ org.hibernate
+ hibernate-annotations
+ 3.4.0.GA
+ compile
+ true
+
+
+ org.hibernate
+ hibernate-core
+ 4.2.21.Final
+ compile
+ true
+
+
+ org.hibernate
+ hibernate-core
+ 3.3.2.GA
+ compile
+ true
+
+
+ org.hibernate
+ hibernate-entitymanager
+ 3.4.0.GA
+ compile
+ true
+
+
+ org.hibernate
+ hibernate-entitymanager
+ 4.2.21.Final
+ compile
+ true
+
+
+ org.springframework
+ spring-aop
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-jdbc
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-tx
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-web
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ toplink.essentials
+ toplink-essentials
+ 2.0-41b
+ compile
+ true
+
+
+
diff --git a/spring-orm-hibernate4-template.pom b/spring-orm-hibernate4-template.pom
new file mode 100644
index 0000000000000000000000000000000000000000..afe5d6260d003abdecc7be0bc38a3af7eb41120e
--- /dev/null
+++ b/spring-orm-hibernate4-template.pom
@@ -0,0 +1,115 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-orm-hibernate4
+ @VERSION@
+ Spring Object/Relational Mapping - Hibernate 4 support
+ Spring Object/Relational Mapping - Hibernate 4 support
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ org.hibernate
+ hibernate-core
+ 4.3.5.Final
+ compile
+ true
+
+
+ org.hibernate
+ hibernate-entitymanager
+ 4.3.5.Final
+ compile
+ true
+
+
+ org.springframework
+ spring-orm
+ ${project.version}
+ compile
+
+
+
+ org.springframework
+ spring-jdbc
+ ${project.version}
+ compile
+
+
+ org.springframework
+ spring-tx
+ ${project.version}
+ compile
+
+
+ org.springframework
+ spring-web
+ ${project.version}
+ compile
+ true
+
+
+ org.hibernate.javax.persistence
+ hibernate-jpa-2.1-api
+ 1.0.0.Draft-16
+ compile
+ true
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ compile
+ true
+
+
+
diff --git a/spring-oxm-3.2.18.RELEASE.pom b/spring-oxm-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..8c8b634bbf7312c6077975c3e0b4161941992b49
--- /dev/null
+++ b/spring-oxm-3.2.18.RELEASE.pom
@@ -0,0 +1,102 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-oxm
+ 3.2.18.RELEASE
+ Spring Object/XML Marshalling
+ Spring Object/XML Marshalling
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ com.thoughtworks.xstream
+ xstream
+ 1.4.7
+ compile
+
+
+ xmlpull
+ xmlpull
+
+
+ xpp3_min
+ xpp3
+
+
+ true
+
+
+ org.apache.xmlbeans
+ xmlbeans
+ 2.6.0
+ compile
+
+
+ stax-api
+ stax
+
+
+ true
+
+
+ org.codehaus.castor
+ castor-xml
+ 1.3.3
+ compile
+
+
+ stax-api
+ stax
+
+
+ spring-context
+ org.springframework
+
+
+ true
+
+
+ org.jibx
+ jibx-run
+ 1.2.5
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+
diff --git a/spring-struts-3.2.18.RELEASE.pom b/spring-struts-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..75e273720537571d75b88bb6d96773de20ce9318
--- /dev/null
+++ b/spring-struts-3.2.18.RELEASE.pom
@@ -0,0 +1,90 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-struts
+ 3.2.18.RELEASE
+ Spring Struts
+ Spring Struts
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ commons-beanutils
+ commons-beanutils
+ 1.7.0
+ compile
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-web
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-webmvc
+ 3.2.18.RELEASE
+ compile
+
+
+ struts
+ struts
+ 1.2.9
+ compile
+
+
+ javax.servlet
+ jstl
+ 1.2
+ provided
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ provided
+
+
+
diff --git a/spring-test-3.2.18.RELEASE.pom b/spring-test-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..9705cf0977e2968a4a0976806a2131c16417a3d2
--- /dev/null
+++ b/spring-test-3.2.18.RELEASE.pom
@@ -0,0 +1,193 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-test
+ 3.2.18.RELEASE
+ Spring TestContext Framework
+ Spring TestContext Framework
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ com.jayway.jsonpath
+ json-path
+ 0.8.1
+ compile
+ true
+
+
+ javax.inject
+ javax.inject
+ 1
+ compile
+ true
+
+
+ javax.persistence
+ persistence-api
+ 1.0
+ compile
+ true
+
+
+ javax.portlet
+ portlet-api
+ 2.0
+ compile
+ true
+
+
+ javax.servlet.jsp
+ jsp-api
+ 2.1
+ compile
+ true
+
+
+ javax.servlet
+ jstl
+ 1.2
+ compile
+ true
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ compile
+ true
+
+
+ junit
+ junit
+ 4.11
+ compile
+ true
+
+
+ org.aspectj
+ aspectjweaver
+ 1.7.4
+ compile
+ true
+
+
+ org.hamcrest
+ hamcrest-core
+ 1.3
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-jdbc
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-orm
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-tx
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-web
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-webmvc-portlet
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.testng
+ testng
+ 6.8.8
+ compile
+ true
+
+
+ xmlunit
+ xmlunit
+ 1.3
+ compile
+ true
+
+
+ javax.activation
+ activation
+ 1.1
+ provided
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.0.1
+ provided
+
+
+ org.springframework
+ spring-webmvc
+ 3.2.18.RELEASE
+ provided
+
+
+
diff --git a/spring-test-mvc-3.2.18.RELEASE.pom b/spring-test-mvc-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..e77fd7f2b082921913a6749b18f61c02edb24da9
--- /dev/null
+++ b/spring-test-mvc-3.2.18.RELEASE.pom
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-test-mvc
+ 3.2.18.RELEASE
+ Spring Test MVC Framework
+ Spring Test MVC Framework
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ org.springframework
+ spring-beans
+ ${project.version}
+
+
+ org.springframework
+ spring-context
+ ${project.version}
+
+
+ org.springframework
+ spring-core
+ ${project.version}
+
+
+ org.springframework
+ spring-test
+ ${project.version}
+
+
+ org.springframework
+ spring-webmvc
+ ${project.version}
+
+
+ com.jayway.jsonpath
+ json-path
+ 0.8.1
+
+
+ org.hamcrest
+ hamcrest-core
+ 1.3
+
+
+ xmlunit
+ xmlunit
+ 1.3
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ provided
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.0.6
+ test
+
+
+ com.thoughtworks.xstream
+ xstream
+ 1.4.7
+ test
+
+
+ javax.servlet
+ jstl
+ 1.2
+ test
+
+
+ javax.mail
+ mail
+ 1.4.7
+ test
+
+
+ org.apache.tiles
+ tiles-api
+ 3.0.4
+ test
+
+
+ org.apache.tiles
+ tiles-core
+ 3.0.4
+
+
+ org.slf4j
+ jcl-over-slf4j
+
+
+ test
+
+
+ org.apache.tiles
+ tiles-servlet
+ 3.0.4
+
+
+ org.slf4j
+ jcl-over-slf4j
+
+
+ test
+
+
+ org.codehaus.jackson
+ jackson-mapper-asl
+ 1.7.9
+ test
+
+
+ org.hibernate
+ hibernate-validator
+ 4.3.1.Final
+ test
+
+
+ org.slf4j
+ slf4j-jcl
+ 1.6.6
+ test
+
+
+ rome
+ rome
+ 1.0
+ test
+
+
+
diff --git a/spring-tx-3.2.18.RELEASE.pom b/spring-tx-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..7244a340afbb8e0d951e18fdb90494faf7622954
--- /dev/null
+++ b/spring-tx-3.2.18.RELEASE.pom
@@ -0,0 +1,97 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-tx
+ 3.2.18.RELEASE
+ Spring Transaction
+ Spring Transaction
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ aopalliance
+ aopalliance
+ 1.0
+ compile
+ true
+
+
+ com.ibm.websphere
+ uow
+ 6.0.2.17
+ compile
+ true
+
+
+ javax.ejb
+ ejb-api
+ 3.0
+ compile
+ true
+
+
+ javax.resource
+ connector-api
+ 1.5
+ compile
+ true
+
+
+ org.apache.geronimo.specs
+ geronimo-jta_1.1_spec
+ 1.1
+ compile
+ true
+
+
+ org.springframework
+ spring-aop
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+
diff --git a/spring-web-3.2.18.RELEASE.pom b/spring-web-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..86c7dd2708ab1402c6917eb1209eda8af3a2a690
--- /dev/null
+++ b/spring-web-3.2.18.RELEASE.pom
@@ -0,0 +1,224 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-web
+ 3.2.18.RELEASE
+ Spring Web
+ Spring Web
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ aopalliance
+ aopalliance
+ 1.0
+ compile
+ true
+
+
+ com.caucho
+ hessian
+ 3.2.1
+ compile
+ true
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.0.6
+ compile
+ true
+
+
+ commons-fileupload
+ commons-fileupload
+ 1.3.1
+ compile
+ true
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+ compile
+ true
+
+
+ commons-io
+ commons-io
+ 1.3
+ compile
+ true
+
+
+ javax.el
+ el-api
+ 1.0
+ compile
+ true
+
+
+ javax.faces
+ jsf-api
+ 1.2_08
+ compile
+ true
+
+
+ javax.portlet
+ portlet-api
+ 2.0
+ compile
+ true
+
+
+ javax.servlet.jsp
+ jsp-api
+ 2.1
+ compile
+ true
+
+
+ javax.xml.soap
+ saaj-api
+ 1.3
+ compile
+ true
+
+
+ javax.xml
+ jaxrpc-api
+ 1.1
+ compile
+ true
+
+
+ log4j
+ log4j
+ 1.2.17
+ compile
+ true
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.2.6
+ compile
+ true
+
+
+ org.codehaus.jackson
+ jackson-mapper-asl
+ 1.7.9
+ compile
+ true
+
+
+ org.eclipse.jetty
+ jetty-server
+ 8.1.5.v20120716
+ compile
+
+
+ javax.servlet
+ org.eclipse.jetty.orbit
+
+
+ true
+
+
+ org.eclipse.jetty
+ jetty-servlet
+ 8.1.5.v20120716
+ compile
+
+
+ javax.servlet
+ org.eclipse.jetty.orbit
+
+
+ true
+
+
+ org.springframework
+ spring-aop
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-oxm
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ rome
+ rome
+ 1.0
+ compile
+ true
+
+
+ taglibs
+ standard
+ 1.1.2
+ compile
+ true
+
+
+ javax.activation
+ activation
+ 1.1
+ provided
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.0.1
+ provided
+
+
+
diff --git a/spring-webmvc-3.2.18.RELEASE.pom b/spring-webmvc-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..bc6e52a316b461167c116e9cfbfbab22a45c07f0
--- /dev/null
+++ b/spring-webmvc-3.2.18.RELEASE.pom
@@ -0,0 +1,287 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-webmvc
+ 3.2.18.RELEASE
+ Spring Web MVC
+ Spring Web MVC
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.0.6
+ compile
+ true
+
+
+ com.lowagie
+ itext
+ 2.1.7
+ compile
+ true
+
+
+ javax.el
+ el-api
+ 1.0
+ compile
+ true
+
+
+ javax.servlet.jsp
+ jsp-api
+ 2.1
+ compile
+ true
+
+
+ javax.servlet
+ jstl
+ 1.2
+ compile
+ true
+
+
+ net.sf.jasperreports
+ jasperreports
+ 3.7.6
+ compile
+
+
+ xml-apis
+ xml-apis
+
+
+ true
+
+
+ net.sourceforge.jexcelapi
+ jxl
+ 2.6.12
+ compile
+ true
+
+
+ org.apache.poi
+ poi
+ 3.6
+ compile
+ true
+
+
+ org.apache.tiles
+ tiles-api
+ 2.1.2
+ compile
+ true
+
+
+ org.apache.tiles
+ tiles-api
+ 3.0.4
+ compile
+ true
+
+
+ org.apache.tiles
+ tiles-core
+ 3.0.4
+ compile
+
+
+ jcl-over-slf4j
+ org.slf4j
+
+
+ true
+
+
+ org.apache.tiles
+ tiles-core
+ 2.1.2
+ compile
+ true
+
+
+ org.apache.tiles
+ tiles-el
+ 3.0.4
+ compile
+
+
+ jcl-over-slf4j
+ org.slf4j
+
+
+ true
+
+
+ org.apache.tiles
+ tiles-extras
+ 3.0.4
+ compile
+
+
+ jcl-over-slf4j
+ org.slf4j
+
+
+ spring-web
+ org.springframework
+
+
+ true
+
+
+ org.apache.tiles
+ tiles-jsp
+ 2.1.2
+ compile
+ true
+
+
+ org.apache.tiles
+ tiles-jsp
+ 3.0.4
+ compile
+
+
+ jcl-over-slf4j
+ org.slf4j
+
+
+ true
+
+
+ org.apache.tiles
+ tiles-servlet
+ 2.1.2
+ compile
+ true
+
+
+ org.apache.tiles
+ tiles-servlet
+ 3.0.4
+ compile
+
+
+ jcl-over-slf4j
+ org.slf4j
+
+
+ true
+
+
+ org.codehaus.jackson
+ jackson-mapper-asl
+ 1.7.9
+ compile
+ true
+
+
+ org.freemarker
+ freemarker
+ 2.3.20
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context-support
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-expression
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-oxm
+ 3.2.18.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-web
+ 3.2.18.RELEASE
+ compile
+
+
+ rome
+ rome
+ 1.0
+ compile
+ true
+
+
+ velocity-tools
+ velocity-tools-view
+ 1.4
+ compile
+ true
+
+
+ velocity
+ velocity
+ 1.5
+ compile
+ true
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.0.1
+ provided
+
+
+
diff --git a/spring-webmvc-portlet-3.2.18.RELEASE.pom b/spring-webmvc-portlet-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..d0a758c91167634218ce4879796c6de0f4a561f4
--- /dev/null
+++ b/spring-webmvc-portlet-3.2.18.RELEASE.pom
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+ org.springframework
+ spring-webmvc-portlet
+ 3.2.18.RELEASE
+ Spring Web Portlet
+ Spring Web Portlet
+ https://github.com/SpringSource/spring-framework
+
+ SpringSource
+ http://springsource.org/spring-framework
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ jhoeller
+ Juergen Hoeller
+ jhoeller@gopivotal.com
+
+
+
+ scm:git:git://github.com/SpringSource/spring-framework
+ scm:git:git://github.com/SpringSource/spring-framework
+ https://github.com/SpringSource/spring-framework
+
+
+
+ commons-fileupload
+ commons-fileupload
+ 1.3.1
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-context
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-core
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-web
+ 3.2.18.RELEASE
+ compile
+
+
+ org.springframework
+ spring-webmvc
+ 3.2.18.RELEASE
+ compile
+
+
+ javax.portlet
+ portlet-api
+ 2.0
+ provided
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ provided
+
+
+
diff --git a/springframework-3.2.13-derby.patch b/springframework-3.2.13-derby.patch
new file mode 100644
index 0000000000000000000000000000000000000000..72321e6ea96ff681cfef74c76f9c2c99d962c270
--- /dev/null
+++ b/springframework-3.2.13-derby.patch
@@ -0,0 +1,99 @@
+--- spring-framework-3.2.13.RELEASE/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/DerbyEmbeddedDatabaseConfigurer.java 2014-12-30 17:22:59.000000000 +0100
++++ spring-framework-3.2.13.RELEASE/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/DerbyEmbeddedDatabaseConfigurer.java.derby 2015-03-06 13:41:54.412646283 +0100
+@@ -16,19 +16,16 @@
+
+ package org.springframework.jdbc.datasource.embedded;
+
+-import java.io.File;
+-import java.io.IOException;
+ import java.sql.SQLException;
+ import java.util.Properties;
+ import javax.sql.DataSource;
+
+-import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+-import org.apache.derby.impl.io.VFMemoryStorageFactory;
+ import org.apache.derby.jdbc.EmbeddedDriver;
+
+ /**
+- * {@link EmbeddedDatabaseConfigurer} for the Apache Derby database.
++ * {@link EmbeddedDatabaseConfigurer} for the Apache Derby database 10.6+.
++ *
Call {@link #getInstance()} to get the singleton instance of this class.
+ *
+ * @author Oliver Gierke
+ * @author Juergen Hoeller
+@@ -36,14 +33,9 @@
+ */
+ final class DerbyEmbeddedDatabaseConfigurer implements EmbeddedDatabaseConfigurer {
+
+- private static final Log logger = LogFactory.getLog(DerbyEmbeddedDatabaseConfigurer.class);
+-
+ private static final String URL_TEMPLATE = "jdbc:derby:memory:%s;%s";
+
+- // Error code that indicates successful shutdown
+- private static final String SHUTDOWN_CODE = "08006";
+-
+- private static DerbyEmbeddedDatabaseConfigurer INSTANCE;
++ private static DerbyEmbeddedDatabaseConfigurer instance;
+
+
+ /**
+@@ -52,18 +44,20 @@
+ * @throws ClassNotFoundException if Derby is not on the classpath
+ */
+ public static synchronized DerbyEmbeddedDatabaseConfigurer getInstance() throws ClassNotFoundException {
+- if (INSTANCE == null) {
++ if (instance == null) {
+ // disable log file
+ System.setProperty("derby.stream.error.method",
+ OutputStreamFactory.class.getName() + ".getNoopOutputStream");
+- INSTANCE = new DerbyEmbeddedDatabaseConfigurer();
++ instance = new DerbyEmbeddedDatabaseConfigurer();
+ }
+- return INSTANCE;
++ return instance;
+ }
+
++
+ private DerbyEmbeddedDatabaseConfigurer() {
+ }
+
++ @Override
+ public void configureConnectionProperties(ConnectionProperties properties, String databaseName) {
+ properties.setDriverClass(EmbeddedDriver.class);
+ properties.setUrl(String.format(URL_TEMPLATE, databaseName, "create=true"));
+@@ -71,28 +65,16 @@
+ properties.setPassword("");
+ }
+
++ @Override
+ public void shutdown(DataSource dataSource, String databaseName) {
+- EmbeddedDriver embeddedDriver = new EmbeddedDriver();
+- boolean isAtLeastDotSix = (embeddedDriver.getMinorVersion() >= 6);
+- String shutdownCommand = String.format("%s=true", isAtLeastDotSix ? "drop" : "shutdown");
+ try {
+- embeddedDriver.connect(
+- String.format(URL_TEMPLATE, databaseName, shutdownCommand), new Properties());
++ new EmbeddedDriver().connect(
++ String.format(URL_TEMPLATE, databaseName, "drop=true"), new Properties());
+ }
+ catch (SQLException ex) {
+- if (!SHUTDOWN_CODE.equals(ex.getSQLState())) {
+- logger.warn("Could not shutdown in-memory Derby database", ex);
+- return;
+- }
+- if (!isAtLeastDotSix) {
+- // Explicitly purge the in-memory database, to prevent it
+- // from hanging around after being shut down.
+- try {
+- VFMemoryStorageFactory.purgeDatabase(new File(databaseName).getCanonicalPath());
+- }
+- catch (IOException ex2) {
+- logger.warn("Could not purge in-memory Derby database", ex2);
+- }
++ // Error code that indicates successful shutdown
++ if (!"08006".equals(ex.getSQLState())) {
++ LogFactory.getLog(getClass()).warn("Could not shutdown in-memory Derby database", ex);
+ }
+ }
+ }
diff --git a/springframework-3.2.14-build-with-tomcat8.patch b/springframework-3.2.14-build-with-tomcat8.patch
new file mode 100644
index 0000000000000000000000000000000000000000..25c645061218c2c0e1c7321106b46afd8fb40cb1
--- /dev/null
+++ b/springframework-3.2.14-build-with-tomcat8.patch
@@ -0,0 +1,15 @@
+diff --git a/spring-instrument-tomcat/src/main/java/org/springframework/instrument/classloading/tomcat/TomcatInstrumentableClassLoader.java b/spring-instrument-tomcat/src/main/java/org/springframework/instrument/classloading/tomcat/TomcatInstrumentableClassLoader.java
+index d510918..7908ca1 100644
+--- a/spring-instrument-tomcat/src/main/java/org/springframework/instrument/classloading/tomcat/TomcatInstrumentableClassLoader.java
++++ b/spring-instrument-tomcat/src/main/java/org/springframework/instrument/classloading/tomcat/TomcatInstrumentableClassLoader.java
+@@ -110,8 +110,8 @@ public class TomcatInstrumentableClassLoader extends WebappClassLoader {
+
+
+ @Override
+- protected ResourceEntry findResourceInternal(String name, String path) {
+- ResourceEntry entry = super.findResourceInternal(name, path);
++ protected ResourceEntry findResourceInternal(String name, String path, boolean manifestRequired) {
++ ResourceEntry entry = super.findResourceInternal(name, path, manifestRequired);
+ if (entry != null && entry.binaryContent != null && path.endsWith(CLASS_SUFFIX)) {
+ String className = (name.endsWith(CLASS_SUFFIX) ? name.substring(0, name.length() - CLASS_SUFFIX.length()) : name);
+ entry.binaryContent = this.weavingTransformer.transformIfNecessary(className, entry.binaryContent);
diff --git a/springframework-3.2.14-jopt-simple.patch b/springframework-3.2.14-jopt-simple.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7ba8ac8f7516a44fd6ec8a4be331c67d12b059d7
--- /dev/null
+++ b/springframework-3.2.14-jopt-simple.patch
@@ -0,0 +1,55 @@
+diff -Nru spring-framework-3.2.14.RELEASE/build.gradle spring-framework-3.2.14.RELEASE.jopt-simple/build.gradle
+--- spring-framework-3.2.14.RELEASE/build.gradle 2015-06-30 19:36:07.000000000 +0200
++++ spring-framework-3.2.14.RELEASE.jopt-simple/build.gradle 2015-07-03 13:18:15.951750946 +0200
+@@ -242,7 +242,7 @@
+ compile(files(asmRepackJar))
+ compile("commons-logging:commons-logging:1.1.3")
+ optional("org.aspectj:aspectjweaver:${aspectjVersion}")
+- optional("net.sf.jopt-simple:jopt-simple:3.3")
++ optional("net.sf.jopt-simple:jopt-simple:4.6")
+ optional("log4j:log4j:1.2.17")
+ testCompile("xmlunit:xmlunit:1.3")
+ testCompile("org.codehaus.woodstox:wstx-asl:3.2.7") {
+diff -Nru spring-framework-3.2.14.RELEASE/spring-core/src/main/java/org/springframework/core/env/JOptCommandLinePropertySource.java spring-framework-3.2.14.RELEASE.jopt-simple/spring-core/src/main/java/org/springframework/core/env/JOptCommandLinePropertySource.java
+--- spring-framework-3.2.14.RELEASE/spring-core/src/main/java/org/springframework/core/env/JOptCommandLinePropertySource.java 2015-06-30 19:36:07.000000000 +0200
++++ spring-framework-3.2.14.RELEASE.jopt-simple/spring-core/src/main/java/org/springframework/core/env/JOptCommandLinePropertySource.java 2015-07-03 13:28:05.299917137 +0200
+@@ -21,6 +21,7 @@
+ import java.util.List;
+
+ import joptsimple.OptionSet;
++import joptsimple.OptionSpec;
+
+ import org.springframework.util.Assert;
+
+@@ -43,10 +44,11 @@
+ *
+ * See {@link CommandLinePropertySource} for complete general usage examples.
+ *
+- *
Requires JOpt version 3.0 or higher. Tested against JOpt up until 4.6.
++ *
Requires JOpt version 4.3 or higher. Tested against JOpt up until 4.6.
+ *
+ * @author Chris Beams
+ * @author Juergen Hoeller
++ * @author Dave Syer
+ * @since 3.1
+ * @see CommandLinePropertySource
+ * @see joptsimple.OptionParser
+@@ -78,6 +80,18 @@
+ return this.source.has(name);
+ }
+
++ public String[] getPropertyNames() {
++ List names = new ArrayList();
++ for (OptionSpec> spec : this.source.specs()) {
++ List aliases = new ArrayList(spec.options());
++ if (!aliases.isEmpty()) {
++ // Only the longest name is used for enumerating
++ names.add(aliases.get(aliases.size() - 1));
++ }
++ }
++ return names.toArray(new String[names.size()]);
++ }
++
+ @Override
+ public List getOptionValues(String name) {
+ List> argValues = this.source.valuesOf(name);
diff --git a/springframework-3.2.18-hibernate4.3.patch b/springframework-3.2.18-hibernate4.3.patch
new file mode 100644
index 0000000000000000000000000000000000000000..1eca15a19d0ef12d37b441233b58fe6a93b8c9b2
--- /dev/null
+++ b/springframework-3.2.18-hibernate4.3.patch
@@ -0,0 +1,649 @@
+diff -Nru spring-framework-3.2.18.RELEASE/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/ConfigurableJtaPlatform.java spring-framework-3.2.18.RELEASE.hibernate4.3/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/ConfigurableJtaPlatform.java
+--- spring-framework-3.2.18.RELEASE/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/ConfigurableJtaPlatform.java 2016-12-21 19:42:08.000000000 +0100
++++ spring-framework-3.2.18.RELEASE.hibernate4.3/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/ConfigurableJtaPlatform.java 2016-12-22 20:34:41.500296971 +0100
+@@ -16,60 +16,133 @@
+
+ package org.springframework.orm.hibernate4;
+
++import java.lang.reflect.InvocationHandler;
++import java.lang.reflect.Method;
++import java.lang.reflect.Proxy;
++import javax.transaction.Status;
++import javax.transaction.Synchronization;
++import javax.transaction.SystemException;
++import javax.transaction.Transaction;
+ import javax.transaction.TransactionManager;
++import javax.transaction.TransactionSynchronizationRegistry;
+ import javax.transaction.UserTransaction;
+
+-import org.hibernate.service.jta.platform.internal.AbstractJtaPlatform;
++import org.hibernate.TransactionException;
++import org.hibernate.service.Service;
+
+ import org.springframework.transaction.jta.UserTransactionAdapter;
+ import org.springframework.util.Assert;
+
+ /**
+- * Implementation of Hibernate 4's {@link org.hibernate.service.jta.platform.spi.JtaPlatform}
+- * SPI, exposing passed-in {@link TransactionManager} and {@link UserTransaction} references.
++ * Implementation of Hibernate 4's JtaPlatform SPI (which has a different package
++ * location in Hibernate 4.0-4.2 vs 4.3), exposing passed-in {@link TransactionManager},
++ * {@link UserTransaction} and {@link TransactionSynchronizationRegistry} references.
+ *
+ * @author Juergen Hoeller
+ * @since 3.1.2
+ */
+-@SuppressWarnings("serial")
+-class ConfigurableJtaPlatform extends AbstractJtaPlatform {
++@SuppressWarnings({"serial", "unchecked"})
++class ConfigurableJtaPlatform implements InvocationHandler {
++
++ static final Class extends Service> jtaPlatformClass;
++
++ static {
++ Class> jpClass;
++ try {
++ // Try Hibernate 4.0-4.2 JtaPlatform variant
++ jpClass = SpringSessionContext.class.getClassLoader().loadClass(
++ "org.hibernate.service.jta.platform.spi.JtaPlatform");
++ }
++ catch (ClassNotFoundException ex) {
++ try {
++ // Try Hibernate 4.3 JtaPlatform variant
++ jpClass = SpringSessionContext.class.getClassLoader().loadClass(
++ "org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform");
++ }
++ catch (ClassNotFoundException ex2) {
++ throw new IllegalStateException("Neither Hibernate 4.0-4.2 nor 4.3 variant of JtaPlatform found");
++ }
++ }
++ jtaPlatformClass = (Class extends Service>) jpClass;
++ }
++
++ static String getJtaPlatformBasePackage() {
++ String className = jtaPlatformClass.getName();
++ return className.substring(0, className.length() - "spi.JtaPlatform".length());
++ }
+
+ private final TransactionManager transactionManager;
+
+ private final UserTransaction userTransaction;
+
++ private final TransactionSynchronizationRegistry transactionSynchronizationRegistry;
+
+ /**
+ * Create a new ConfigurableJtaPlatform instance with the given
+ * JTA TransactionManager and optionally a given UserTransaction.
+ * @param tm the JTA TransactionManager reference (required)
+ * @param ut the JTA UserTransaction reference (optional)
++ * @param tsr the JTA 1.1 TransactionSynchronizationRegistry (optional)
+ */
+- public ConfigurableJtaPlatform(TransactionManager tm, UserTransaction ut) {
++ public ConfigurableJtaPlatform(TransactionManager tm, UserTransaction ut, TransactionSynchronizationRegistry tsr) {
+ Assert.notNull(tm, "TransactionManager reference must not be null");
+ this.transactionManager = tm;
+ this.userTransaction = (ut != null ? ut : new UserTransactionAdapter(tm));
++ this.transactionSynchronizationRegistry = tsr;
+ }
+
+
+- @Override
+- protected TransactionManager locateTransactionManager() {
++ public TransactionManager retrieveTransactionManager() {
+ return this.transactionManager;
+ }
+
+- @Override
+- protected UserTransaction locateUserTransaction() {
++ public UserTransaction retrieveUserTransaction() {
+ return this.userTransaction;
+ }
+
+- @Override
+- protected boolean canCacheTransactionManager() {
+- return true;
++ public Object getTransactionIdentifier(Transaction transaction) {
++ return transaction;
++ }
++
++ public boolean canRegisterSynchronization() {
++ try {
++ return (this.transactionManager.getStatus() == Status.STATUS_ACTIVE);
++ }
++ catch (SystemException ex) {
++ throw new TransactionException("Could not determine JTA transaction status", ex);
++ }
++ }
++
++ public void registerSynchronization(Synchronization synchronization) {
++ if (this.transactionSynchronizationRegistry != null) {
++ this.transactionSynchronizationRegistry.registerInterposedSynchronization(synchronization);
++ }
++ else {
++ try {
++ this.transactionManager.getTransaction().registerSynchronization(synchronization);
++ }
++ catch (Exception ex) {
++ throw new TransactionException("Could not access JTA Transaction to register synchronization", ex);
++ }
++ }
++ }
++
++ public int getCurrentStatus() throws SystemException {
++ return this.transactionManager.getStatus();
+ }
+
+- @Override
+- protected boolean canCacheUserTransaction() {
+- return true;
++ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
++ Method targetMethod = getClass().getMethod(method.getName(), method.getParameterTypes());
++ return targetMethod.invoke(this, args);
+ }
+
++ /**
++ * Obtain a proxy that implements the current Hibernate version's JtaPlatform interface
++ * in the right package location, delegating all invocations to the same-named methods
++ * on this ConfigurableJtaPlatform class itself.
++ */
++ public Object getJtaPlatformProxy() {
++ return Proxy.newProxyInstance(getClass().getClassLoader(), new Class>[] {jtaPlatformClass}, this);
++ }
++
+ }
+diff -Nru spring-framework-3.2.18.RELEASE/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/LocalSessionFactoryBuilder.java spring-framework-3.2.18.RELEASE.hibernate4.3/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/LocalSessionFactoryBuilder.java
+--- spring-framework-3.2.18.RELEASE/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/LocalSessionFactoryBuilder.java 2016-12-21 19:42:08.000000000 +0100
++++ spring-framework-3.2.18.RELEASE.hibernate4.3/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/LocalSessionFactoryBuilder.java 2016-12-22 20:38:31.548142550 +0100
+@@ -30,7 +30,6 @@
+ import org.hibernate.cfg.Configuration;
+ import org.hibernate.cfg.Environment;
+ import org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory;
+-import org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform;
+
+ import org.springframework.core.io.Resource;
+ import org.springframework.core.io.ResourceLoader;
+@@ -127,7 +126,7 @@
+ * instructing Hibernate to interact with externally managed transactions.
+ * A passed-in Spring {@link JtaTransactionManager} needs to contain a JTA
+ * {@link TransactionManager} reference to be usable here, except for the WebSphere
+- * case where we'll automatically set {@link WebSphereExtendedJtaPlatform} accordingly.
++ * case where we'll automatically set {@code WebSphereExtendedJtaPlatform} accordingly.
+ *
Note: If this is set, the Hibernate settings should not contain a JTA platform
+ * setting to avoid meaningless double configuration.
+ */
+@@ -136,7 +135,8 @@
+ if (jtaTransactionManager instanceof JtaTransactionManager) {
+ boolean webspherePresent = ClassUtils.isPresent("com.ibm.wsspi.uow.UOWManager", getClass().getClassLoader());
+ if (webspherePresent) {
+- getProperties().put(AvailableSettings.JTA_PLATFORM, new WebSphereExtendedJtaPlatform());
++ getProperties().put(AvailableSettings.JTA_PLATFORM,
++ ConfigurableJtaPlatform.getJtaPlatformBasePackage() + "internal.WebSphereExtendedJtaPlatform");
+ }
+ else {
+ JtaTransactionManager jtaTm = (JtaTransactionManager) jtaTransactionManager;
+@@ -145,12 +145,13 @@
+ "Can only apply JtaTransactionManager which has a TransactionManager reference set");
+ }
+ getProperties().put(AvailableSettings.JTA_PLATFORM,
+- new ConfigurableJtaPlatform(jtaTm.getTransactionManager(), jtaTm.getUserTransaction()));
++ new ConfigurableJtaPlatform(jtaTm.getTransactionManager(), jtaTm.getUserTransaction(),
++ jtaTm.getTransactionSynchronizationRegistry()).getJtaPlatformProxy());
+ }
+ }
+ else if (jtaTransactionManager instanceof TransactionManager) {
+ getProperties().put(AvailableSettings.JTA_PLATFORM,
+- new ConfigurableJtaPlatform((TransactionManager) jtaTransactionManager, null));
++ new ConfigurableJtaPlatform((TransactionManager) jtaTransactionManager, null, null).getJtaPlatformProxy());
+ }
+ else {
+ throw new IllegalArgumentException(
+diff -Nru spring-framework-3.2.18.RELEASE/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/SessionFactoryUtils.java spring-framework-3.2.18.RELEASE.hibernate4.3/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/SessionFactoryUtils.java
+--- spring-framework-3.2.18.RELEASE/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/SessionFactoryUtils.java 2016-12-21 19:42:08.000000000 +0100
++++ spring-framework-3.2.18.RELEASE.hibernate4.3/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/SessionFactoryUtils.java 2016-12-23 10:44:05.095253068 +0100
+@@ -16,6 +16,7 @@
+
+ package org.springframework.orm.hibernate4;
+
++import java.lang.reflect.Method;
+ import javax.sql.DataSource;
+
+ import org.apache.commons.logging.Log;
+@@ -41,7 +42,7 @@
+ import org.hibernate.exception.JDBCConnectionException;
+ import org.hibernate.exception.LockAcquisitionException;
+ import org.hibernate.exception.SQLGrammarException;
+-import org.hibernate.service.jdbc.connections.spi.ConnectionProvider;
++import org.hibernate.service.spi.Wrapped;
+
+ import org.springframework.dao.CannotAcquireLockException;
+ import org.springframework.dao.DataAccessException;
+@@ -52,6 +53,8 @@
+ import org.springframework.dao.InvalidDataAccessApiUsageException;
+ import org.springframework.dao.InvalidDataAccessResourceUsageException;
+ import org.springframework.jdbc.datasource.DataSourceUtils;
++import org.springframework.util.ClassUtils;
++import org.springframework.util.ReflectionUtils;
+
+ /**
+ * Helper class featuring methods for Hibernate Session handling.
+@@ -78,6 +81,11 @@
+
+ static final Log logger = LogFactory.getLog(SessionFactoryUtils.class);
+
++ /**
++ * Bridging between the different ConnectionProvider package location in 4.0-4.2 vs 4.3.
++ */
++ private static final Method getConnectionProviderMethod =
++ ClassUtils.getMethodIfAvailable(SessionFactoryImplementor.class, "getConnectionProvider");
+
+ /**
+ * Determine the DataSource of the given SessionFactory.
+@@ -86,8 +94,8 @@
+ * @see org.hibernate.engine.spi.SessionFactoryImplementor#getConnectionProvider
+ */
+ public static DataSource getDataSource(SessionFactory sessionFactory) {
+- if (sessionFactory instanceof SessionFactoryImplementor) {
+- ConnectionProvider cp = ((SessionFactoryImplementor) sessionFactory).getConnectionProvider();
++ if (getConnectionProviderMethod != null && sessionFactory instanceof SessionFactoryImplementor) {
++ Wrapped cp = (Wrapped) ReflectionUtils.invokeMethod(getConnectionProviderMethod, sessionFactory);
+ return cp.unwrap(DataSource.class);
+ }
+ return null;
+diff -Nru spring-framework-3.2.18.RELEASE/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/SpringSessionContext.java spring-framework-3.2.18.RELEASE.hibernate4.3/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/SpringSessionContext.java
+--- spring-framework-3.2.18.RELEASE/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/SpringSessionContext.java 2016-12-21 19:42:08.000000000 +0100
++++ spring-framework-3.2.18.RELEASE.hibernate4.3/spring-orm-hibernate4/src/main/java/org/springframework/orm/hibernate4/SpringSessionContext.java 2016-12-22 20:45:06.119514785 +0100
+@@ -16,16 +16,16 @@
+
+ package org.springframework.orm.hibernate4;
+
+-import javax.transaction.TransactionManager;
++import java.lang.reflect.Method;
+
+ import org.hibernate.FlushMode;
+ import org.hibernate.HibernateException;
+ import org.hibernate.Session;
+ import org.hibernate.context.spi.CurrentSessionContext;
+ import org.hibernate.engine.spi.SessionFactoryImplementor;
+-import org.hibernate.service.jta.platform.spi.JtaPlatform;
+
+ import org.springframework.transaction.support.TransactionSynchronizationManager;
++import org.springframework.util.ReflectionUtils;
+
+ /**
+ * Implementation of Hibernate 3.1's CurrentSessionContext interface
+@@ -44,7 +44,7 @@
+
+ private final SessionFactoryImplementor sessionFactory;
+
+- private final CurrentSessionContext jtaSessionContext;
++ private CurrentSessionContext jtaSessionContext;
+
+
+ /**
+@@ -53,15 +53,24 @@
+ */
+ public SpringSessionContext(SessionFactoryImplementor sessionFactory) {
+ this.sessionFactory = sessionFactory;
+- JtaPlatform jtaPlatform = sessionFactory.getServiceRegistry().getService(JtaPlatform.class);
+- TransactionManager transactionManager = jtaPlatform.retrieveTransactionManager();
+- this.jtaSessionContext = (transactionManager != null ? new SpringJtaSessionContext(sessionFactory) : null);
++ try {
++ Object jtaPlatform = sessionFactory.getServiceRegistry().getService(ConfigurableJtaPlatform.jtaPlatformClass);
++ Method rtmMethod = ConfigurableJtaPlatform.jtaPlatformClass.getMethod("retrieveTransactionManager");
++ Object transactionManager = ReflectionUtils.invokeMethod(rtmMethod, jtaPlatform);
++ if (transactionManager != null) {
++ this.jtaSessionContext = new SpringJtaSessionContext(sessionFactory);
++ }
++ }
++ catch (Exception ex) {
++ throw new IllegalStateException("Could not introspect Hibernate JtaPlatform for SpringJtaSessionContext", ex);
++ }
+ }
+
+
+ /**
+ * Retrieve the Spring-managed Session for the current thread, if any.
+ */
++ @Override
+ public Session currentSession() throws HibernateException {
+ Object value = TransactionSynchronizationManager.getResource(this.sessionFactory);
+ if (value instanceof Session) {
+@@ -70,15 +79,15 @@
+ else if (value instanceof SessionHolder) {
+ SessionHolder sessionHolder = (SessionHolder) value;
+ Session session = sessionHolder.getSession();
+- if (!sessionHolder.isSynchronizedWithTransaction() &&
+- TransactionSynchronizationManager.isSynchronizationActive()) {
++ if (TransactionSynchronizationManager.isSynchronizationActive() &&
++ !sessionHolder.isSynchronizedWithTransaction()) {
+ TransactionSynchronizationManager.registerSynchronization(
+ new SpringSessionSynchronization(sessionHolder, this.sessionFactory));
+ sessionHolder.setSynchronizedWithTransaction(true);
+ // Switch to FlushMode.AUTO, as we have to assume a thread-bound Session
+ // with FlushMode.MANUAL, which needs to allow flushing within the transaction.
+ FlushMode flushMode = session.getFlushMode();
+- if (FlushMode.isManualFlushMode(flushMode) &&
++ if (flushMode.equals(FlushMode.MANUAL) &&
+ !TransactionSynchronizationManager.isCurrentTransactionReadOnly()) {
+ session.setFlushMode(FlushMode.AUTO);
+ sessionHolder.setPreviousFlushMode(flushMode);
+diff -Nru spring-framework-3.2.18.RELEASE/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java spring-framework-3.2.18.RELEASE.hibernate4.3/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java
+--- spring-framework-3.2.18.RELEASE/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java 2016-12-21 19:42:08.000000000 +0100
++++ spring-framework-3.2.18.RELEASE.hibernate4.3/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java 2016-12-22 21:08:45.109820257 +0100
+@@ -28,7 +28,6 @@
+ import javax.transaction.NotSupportedException;
+ import javax.transaction.RollbackException;
+ import javax.transaction.Status;
+-import javax.transaction.Synchronization;
+ import javax.transaction.SystemException;
+ import javax.transaction.Transaction;
+ import javax.transaction.TransactionManager;
+@@ -50,7 +49,6 @@
+ import org.springframework.transaction.support.DefaultTransactionStatus;
+ import org.springframework.transaction.support.TransactionSynchronization;
+ import org.springframework.util.Assert;
+-import org.springframework.util.ClassUtils;
+ import org.springframework.util.StringUtils;
+
+ /**
+@@ -101,8 +99,8 @@
+ * JtaTransactionManager autodetects the TransactionSynchronizationRegistry and uses
+ * it for registering Spring-managed synchronizations when participating in an existing
+ * JTA transaction (e.g. controlled by EJB CMT). If no TransactionSynchronizationRegistry
+- * is available (or the JTA 1.1 API isn't available), then such synchronizations will be
+- * registered via the (non-EE) JTA TransactionManager handle.
++ * is available, then such synchronizations will be registered via the (non-EE) JTA
++ * TransactionManager handle.
+ *
+ *
This class is serializable. However, active synchronizations do not survive serialization.
+ *
+@@ -148,22 +146,6 @@
+ "java:comp/TransactionSynchronizationRegistry";
+
+
+- private static final String TRANSACTION_SYNCHRONIZATION_REGISTRY_CLASS_NAME =
+- "javax.transaction.TransactionSynchronizationRegistry";
+-
+- private static Class> transactionSynchronizationRegistryClass;
+-
+- static {
+- try {
+- transactionSynchronizationRegistryClass = ClassUtils.forName(
+- TRANSACTION_SYNCHRONIZATION_REGISTRY_CLASS_NAME, JtaTransactionManager.class.getClassLoader());
+- }
+- catch (ClassNotFoundException ex) {
+- // JTA 1.1 API not available... simply proceed the JTA 1.0 way.
+- }
+- }
+-
+-
+ private transient JndiTemplate jndiTemplate = new JndiTemplate();
+
+ private transient UserTransaction userTransaction;
+@@ -182,9 +164,11 @@
+
+ private boolean autodetectTransactionManager = true;
+
++ private transient TransactionSynchronizationRegistry transactionSynchronizationRegistry;
++
+ private String transactionSynchronizationRegistryName;
+
+- private transient Object transactionSynchronizationRegistry;
++ private boolean autodetectTransactionSynchronizationRegistry = true;
+
+ private boolean allowCustomIsolationLevels = false;
+
+@@ -352,6 +336,28 @@
+ }
+
+ /**
++ * Set the JTA 1.1 TransactionSynchronizationRegistry to use as direct reference.
++ *
A TransactionSynchronizationRegistry allows for interposed registration
++ * of transaction synchronizations, as an alternative to the regular registration
++ * methods on the JTA TransactionManager API. Also, it is an official part of the
++ * Java EE 5 platform, in contrast to the JTA TransactionManager itself.
++ *
Note that the TransactionSynchronizationRegistry will be autodetected in JNDI and
++ * also from the UserTransaction/TransactionManager object if implemented there as well.
++ * @see #setTransactionSynchronizationRegistryName
++ * @see #setAutodetectTransactionSynchronizationRegistry
++ */
++ public void setTransactionSynchronizationRegistry(TransactionSynchronizationRegistry transactionSynchronizationRegistry) {
++ this.transactionSynchronizationRegistry = transactionSynchronizationRegistry;
++ }
++
++ /**
++ * Return the JTA 1.1 TransactionSynchronizationRegistry that this transaction manager uses, if any.
++ */
++ public TransactionSynchronizationRegistry getTransactionSynchronizationRegistry() {
++ return this.transactionSynchronizationRegistry;
++ }
++
++ /**
+ * Set the JNDI name of the JTA TransactionManager.
+ *
A TransactionManager is necessary for suspending and resuming transactions,
+ * as this not supported by the UserTransaction interface.
+@@ -393,6 +399,20 @@
+ }
+
+ /**
++ * Set whether to autodetect a JTA 1.1 TransactionSynchronizationRegistry object
++ * at its default JDNI location ("java:comp/TransactionSynchronizationRegistry")
++ * if the UserTransaction has also been obtained from JNDI, and also whether
++ * to fall back to checking whether the JTA UserTransaction/TransactionManager
++ * object implements the JTA TransactionSynchronizationRegistry interface too.
++ *
Default is "true", autodetecting the TransactionSynchronizationRegistry
++ * unless it has been specified explicitly. Can be turned off to delegate
++ * synchronization registration to the regular JTA TransactionManager API.
++ */
++ public void setAutodetectTransactionSynchronizationRegistry(boolean autodetectTransactionSynchronizationRegistry) {
++ this.autodetectTransactionSynchronizationRegistry = autodetectTransactionSynchronizationRegistry;
++ }
++
++ /**
+ * Set whether to allow custom isolation levels to be specified.
+ *
Default is "false", throwing an exception if a non-default isolation level
+ * is specified for a transaction. Turn this flag on if affected resource adapters
+@@ -410,6 +430,7 @@
+ * Initialize the UserTransaction as well as the TransactionManager handle.
+ * @see #initUserTransactionAndTransactionManager()
+ */
++ @Override
+ public void afterPropertiesSet() throws TransactionSystemException {
+ initUserTransactionAndTransactionManager();
+ checkUserTransactionAndTransactionManager();
+@@ -421,38 +442,36 @@
+ * @throws TransactionSystemException if initialization failed
+ */
+ protected void initUserTransactionAndTransactionManager() throws TransactionSystemException {
+- // Fetch JTA UserTransaction from JNDI, if necessary.
+ if (this.userTransaction == null) {
++ // Fetch JTA UserTransaction from JNDI, if necessary.
+ if (StringUtils.hasLength(this.userTransactionName)) {
+ this.userTransaction = lookupUserTransaction(this.userTransactionName);
+ this.userTransactionObtainedFromJndi = true;
+ }
+ else {
+ this.userTransaction = retrieveUserTransaction();
++ if (this.userTransaction == null && this.autodetectUserTransaction) {
++ // Autodetect UserTransaction at its default JNDI location.
++ this.userTransaction = findUserTransaction();
++ }
+ }
+ }
+
+- // Fetch JTA TransactionManager from JNDI, if necessary.
+ if (this.transactionManager == null) {
++ // Fetch JTA TransactionManager from JNDI, if necessary.
+ if (StringUtils.hasLength(this.transactionManagerName)) {
+ this.transactionManager = lookupTransactionManager(this.transactionManagerName);
+ }
+ else {
+ this.transactionManager = retrieveTransactionManager();
++ if (this.transactionManager == null && this.autodetectTransactionManager) {
++ // Autodetect UserTransaction object that implements TransactionManager,
++ // and check fallback JNDI locations otherwise.
++ this.transactionManager = findTransactionManager(this.userTransaction);
++ }
+ }
+ }
+
+- // Autodetect UserTransaction at its default JNDI location.
+- if (this.userTransaction == null && this.autodetectUserTransaction) {
+- this.userTransaction = findUserTransaction();
+- }
+-
+- // Autodetect UserTransaction object that implements TransactionManager,
+- // and check fallback JNDI locations otherwise.
+- if (this.transactionManager == null && this.autodetectTransactionManager) {
+- this.transactionManager = findTransactionManager(this.userTransaction);
+- }
+-
+ // If only JTA TransactionManager specified, create UserTransaction handle for it.
+ if (this.userTransaction == null && this.transactionManager != null) {
+ this.userTransaction = buildUserTransaction(this.transactionManager);
+@@ -494,15 +513,20 @@
+ * @throws TransactionSystemException if initialization failed
+ */
+ protected void initTransactionSynchronizationRegistry() {
+- if (StringUtils.hasLength(this.transactionSynchronizationRegistryName)) {
+- this.transactionSynchronizationRegistry =
+- lookupTransactionSynchronizationRegistry(this.transactionSynchronizationRegistryName);
+- }
+- else {
+- this.transactionSynchronizationRegistry = retrieveTransactionSynchronizationRegistry();
+- if (this.transactionSynchronizationRegistry == null) {
++ if (this.transactionSynchronizationRegistry == null) {
++ // Fetch JTA TransactionSynchronizationRegistry from JNDI, if necessary.
++ if (StringUtils.hasLength(this.transactionSynchronizationRegistryName)) {
+ this.transactionSynchronizationRegistry =
+- findTransactionSynchronizationRegistry(this.userTransaction, this.transactionManager);
++ lookupTransactionSynchronizationRegistry(this.transactionSynchronizationRegistryName);
++ }
++ else {
++ this.transactionSynchronizationRegistry = retrieveTransactionSynchronizationRegistry();
++ if (this.transactionSynchronizationRegistry == null && this.autodetectTransactionSynchronizationRegistry) {
++ // Autodetect in JNDI if applicable, and check UserTransaction/TransactionManager
++ // object that implements TransactionSynchronizationRegistry otherwise.
++ this.transactionSynchronizationRegistry =
++ findTransactionSynchronizationRegistry(this.userTransaction, this.transactionManager);
++ }
+ }
+ }
+
+@@ -586,16 +610,12 @@
+ * @see #setJndiTemplate
+ * @see #setTransactionSynchronizationRegistryName
+ */
+- protected Object lookupTransactionSynchronizationRegistry(String registryName) throws TransactionSystemException {
+- if (transactionSynchronizationRegistryClass == null) {
+- throw new TransactionSystemException(
+- "JTA 1.1 [" + TRANSACTION_SYNCHRONIZATION_REGISTRY_CLASS_NAME + "] API not available");
+- }
++ protected TransactionSynchronizationRegistry lookupTransactionSynchronizationRegistry(String registryName) throws TransactionSystemException {
+ try {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Retrieving JTA TransactionSynchronizationRegistry from JNDI location [" + registryName + "]");
+ }
+- return getJndiTemplate().lookup(registryName, transactionSynchronizationRegistryClass);
++ return getJndiTemplate().lookup(registryName, TransactionSynchronizationRegistry.class);
+ }
+ catch (NamingException ex) {
+ throw new TransactionSystemException(
+@@ -637,7 +657,7 @@
+ * or {@code null} if none found
+ * @throws TransactionSystemException in case of errors
+ */
+- protected Object retrieveTransactionSynchronizationRegistry() throws TransactionSystemException {
++ protected TransactionSynchronizationRegistry retrieveTransactionSynchronizationRegistry() throws TransactionSystemException {
+ return null;
+ }
+
+@@ -712,24 +732,15 @@
+ * or {@code null} if none found
+ * @throws TransactionSystemException in case of errors
+ */
+- protected Object findTransactionSynchronizationRegistry(UserTransaction ut, TransactionManager tm)
++ protected TransactionSynchronizationRegistry findTransactionSynchronizationRegistry(UserTransaction ut, TransactionManager tm)
+ throws TransactionSystemException {
+
+- if (transactionSynchronizationRegistryClass == null) {
+- // JTA 1.1 API not present - skip.
+- if (logger.isDebugEnabled()) {
+- logger.debug("JTA 1.1 [" + TRANSACTION_SYNCHRONIZATION_REGISTRY_CLASS_NAME + "] API not available");
+- }
+- return null;
+- }
+-
+- // If we came here, we might be on Java EE 5, since the JTA 1.1 API is present.
+ if (this.userTransactionObtainedFromJndi) {
+ // UserTransaction has already been obtained from JNDI, so the
+ // TransactionSynchronizationRegistry probably sits there as well.
+ String jndiName = DEFAULT_TRANSACTION_SYNCHRONIZATION_REGISTRY_NAME;
+ try {
+- Object tsr = getJndiTemplate().lookup(jndiName, transactionSynchronizationRegistryClass);
++ TransactionSynchronizationRegistry tsr = getJndiTemplate().lookup(jndiName, TransactionSynchronizationRegistry.class);
+ if (logger.isDebugEnabled()) {
+ logger.debug("JTA TransactionSynchronizationRegistry found at default JNDI location [" + jndiName + "]");
+ }
+@@ -742,14 +753,13 @@
+ }
+ }
+ // Check whether the UserTransaction or TransactionManager implements it...
+- if (transactionSynchronizationRegistryClass.isInstance(ut)) {
+- return ut;
++ if (ut instanceof TransactionSynchronizationRegistry) {
++ return (TransactionSynchronizationRegistry) ut;
+ }
+- if (transactionSynchronizationRegistryClass.isInstance(tm)) {
+- return tm;
++ if (tm instanceof TransactionSynchronizationRegistry) {
++ return (TransactionSynchronizationRegistry) tm;
+ }
+- // OK, so no JTA 1.1 TransactionSynchronizationRegistry is available,
+- // despite the API being present...
++ // OK, so no JTA 1.1 TransactionSynchronizationRegistry is available...
+ return null;
+ }
+
+@@ -1136,7 +1146,7 @@
+
+ if (this.transactionSynchronizationRegistry != null) {
+ // JTA 1.1 TransactionSynchronizationRegistry available - use it.
+- new InterposedSynchronizationDelegate().registerInterposedSynchronization(
++ this.transactionSynchronizationRegistry.registerInterposedSynchronization(
+ new JtaAfterCompletionSynchronization(synchronizations));
+ }
+
+@@ -1163,6 +1173,7 @@
+ // Implementation of TransactionFactory interface
+ //---------------------------------------------------------------------
+
++ @Override
+ public Transaction createTransaction(String name, int timeout) throws NotSupportedException, SystemException {
+ TransactionManager tm = getTransactionManager();
+ Assert.state(tm != null, "No JTA TransactionManager available");
+@@ -1173,6 +1184,7 @@
+ return new ManagedTransactionAdapter(tm);
+ }
+
++ @Override
+ public boolean supportsResourceAdapterManagedTransactions() {
+ return false;
+ }
+@@ -1194,16 +1206,4 @@
+ initTransactionSynchronizationRegistry();
+ }
+
+-
+- /**
+- * Inner class to avoid a direct dependency on the JTA 1.1 API
+- * (javax.transaction.TransactionSynchronizationRegistry interface).
+- */
+- private class InterposedSynchronizationDelegate {
+-
+- public void registerInterposedSynchronization(Synchronization synch) {
+- ((TransactionSynchronizationRegistry) transactionSynchronizationRegistry).registerInterposedSynchronization(synch);
+- }
+- }
+-
+ }
diff --git a/springframework-3.2.18.RELEASE.pom b/springframework-3.2.18.RELEASE.pom
new file mode 100644
index 0000000000000000000000000000000000000000..ad893c6fdb8997a6d06d514539eec88cecc8f859
--- /dev/null
+++ b/springframework-3.2.18.RELEASE.pom
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ 4.0.0
+ org.springframework
+ spring-project
+ pom
+ 3.2.18.RELEASE
+
+
+ spring-core
+ spring-context
+ spring-context-support
+ spring-expression
+ spring-aop
+ spring-instrument
+ spring-instrument-tomcat
+ spring-beans
+ spring-jdbc
+ spring-jms
+ spring-orm
+ spring-web
+ spring-tx
+ spring-oxm
+ spring-struts
+ spring-webmvc
+
+
+ spring-webmvc-portlet
+
+
+
diff --git a/springframework-3.2.18.RELEASE.tar.gz b/springframework-3.2.18.RELEASE.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0076ce00e7987d8a9c3aa0d24c7f0fea8ccedbf8
Binary files /dev/null and b/springframework-3.2.18.RELEASE.tar.gz differ
diff --git a/springframework-3.2.6-java.io.IOException-is-never-thrown.patch b/springframework-3.2.6-java.io.IOException-is-never-thrown.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e52e5b25223d0ed077d4712d284c14fe32bdbec1
--- /dev/null
+++ b/springframework-3.2.6-java.io.IOException-is-never-thrown.patch
@@ -0,0 +1,29 @@
+From 991d188f7066f82c135555d2ec488d0267aa2d12 Mon Sep 17 00:00:00 2001
+From: Michal Srb
+Date: Wed, 15 Jan 2014 15:09:21 +0100
+Subject: [PATCH] Fix exception java.io.IOException is never thrown error
+
+---
+ .../java/org/springframework/ui/velocity/VelocityEngineFactory.java | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/spring-context-support/src/main/java/org/springframework/ui/velocity/VelocityEngineFactory.java b/spring-context-support/src/main/java/org/springframework/ui/velocity/VelocityEngineFactory.java
+index 2e81188..bd57496 100644
+--- a/spring-context-support/src/main/java/org/springframework/ui/velocity/VelocityEngineFactory.java
++++ b/spring-context-support/src/main/java/org/springframework/ui/velocity/VelocityEngineFactory.java
+@@ -250,9 +250,9 @@ public class VelocityEngineFactory {
+ // Perform actual initialization.
+ velocityEngine.init();
+ }
+- catch (IOException ex) {
+- throw ex;
+- }
++ //catch (IOException ex) {
++ // throw ex;
++ //}
+ catch (VelocityException ex) {
+ throw ex;
+ }
+--
+1.8.3.1
+
diff --git a/springframework-3.2.6-port-spring-jms-to-javax.resources-1.7.patch b/springframework-3.2.6-port-spring-jms-to-javax.resources-1.7.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0c2cb0106f4deabc9a2bff8ebfec2f3b700973c4
--- /dev/null
+++ b/springframework-3.2.6-port-spring-jms-to-javax.resources-1.7.patch
@@ -0,0 +1,29 @@
+From 5c154a99226a74430cd244deb2acd37a586fd7a2 Mon Sep 17 00:00:00 2001
+From: Michal Srb
+Date: Fri, 17 Jan 2014 09:05:42 +0100
+Subject: [PATCH] Port spring-jms to javax.resources 1.7
+
+---
+ .../jms/listener/endpoint/JmsMessageEndpointFactory.java | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsMessageEndpointFactory.java b/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsMessageEndpointFactory.java
+index 954dd49..17e2019 100644
+--- a/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsMessageEndpointFactory.java
++++ b/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsMessageEndpointFactory.java
+@@ -124,4 +124,12 @@ public class JmsMessageEndpointFactory extends AbstractMessageEndpointFactory {
+ }
+ }
+
++ public String getActivationName() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Class> getEndpointClass() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
+ }
+--
+1.8.3.1
+
diff --git a/springframework-3.2.6-port-spring-orm-to-javax.persistence-2.0.patch b/springframework-3.2.6-port-spring-orm-to-javax.persistence-2.0.patch
new file mode 100644
index 0000000000000000000000000000000000000000..1dc169d600206d0a5377cba86bb17746324621bb
--- /dev/null
+++ b/springframework-3.2.6-port-spring-orm-to-javax.persistence-2.0.patch
@@ -0,0 +1,40 @@
+From 03c6edd57b8f0275ca344e24bdc5b992c723c987 Mon Sep 17 00:00:00 2001
+From: Michal Srb
+Date: Thu, 16 Jan 2014 11:05:10 +0100
+Subject: [PATCH] Port spring-orm to javax.persistence 2.0
+
+---
+ .../orm/jpa/persistenceunit/MutablePersistenceUnitInfo.java | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/MutablePersistenceUnitInfo.java b/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/MutablePersistenceUnitInfo.java
+index dd2da77..263e52e 100644
+--- a/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/MutablePersistenceUnitInfo.java
++++ b/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/MutablePersistenceUnitInfo.java
+@@ -20,6 +20,9 @@ import java.net.URL;
+ import java.util.LinkedList;
+ import java.util.List;
+ import java.util.Properties;
++
++import javax.persistence.SharedCacheMode;
++import javax.persistence.ValidationMode;
+ import javax.persistence.spi.ClassTransformer;
+ import javax.persistence.spi.PersistenceUnitTransactionType;
+ import javax.sql.DataSource;
+@@ -208,6 +211,13 @@ public class MutablePersistenceUnitInfo implements SmartPersistenceUnitInfo {
+ throw new UnsupportedOperationException("getNewTempClassLoader not supported");
+ }
+
++ public ValidationMode getValidationMode() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public SharedCacheMode getSharedCacheMode() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
+
+ @Override
+ public String toString() {
+--
+1.8.3.1
+
diff --git a/springframework-3.2.6-port-spring-test-to-servlet-3.1.patch b/springframework-3.2.6-port-spring-test-to-servlet-3.1.patch
new file mode 100644
index 0000000000000000000000000000000000000000..c308aa0a7038550a8e1e66603a9436b2bf2e7d2b
--- /dev/null
+++ b/springframework-3.2.6-port-spring-test-to-servlet-3.1.patch
@@ -0,0 +1,293 @@
+diff --git a/spring-test/src/main/java/org/springframework/mock/web/DelegatingServletInputStream.java b/spring-test/src/main/java/org/springframework/mock/web/DelegatingServletInputStream.java
+index f97e60e..74703d6 100644
+--- a/spring-test/src/main/java/org/springframework/mock/web/DelegatingServletInputStream.java
++++ b/spring-test/src/main/java/org/springframework/mock/web/DelegatingServletInputStream.java
+@@ -18,6 +18,8 @@ package org.springframework.mock.web;
+
+ import java.io.IOException;
+ import java.io.InputStream;
++
++import javax.servlet.ReadListener;
+ import javax.servlet.ServletInputStream;
+
+ import org.springframework.util.Assert;
+@@ -63,4 +65,18 @@ public class DelegatingServletInputStream extends ServletInputStream {
+ this.sourceStream.close();
+ }
+
++ @Override
++ public boolean isFinished() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ @Override
++ public boolean isReady() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ @Override
++ public void setReadListener(ReadListener arg0) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
+ }
+diff --git a/spring-test/src/main/java/org/springframework/mock/web/DelegatingServletOutputStream.java b/spring-test/src/main/java/org/springframework/mock/web/DelegatingServletOutputStream.java
+index 2369417..f0d7475 100644
+--- a/spring-test/src/main/java/org/springframework/mock/web/DelegatingServletOutputStream.java
++++ b/spring-test/src/main/java/org/springframework/mock/web/DelegatingServletOutputStream.java
+@@ -18,7 +18,9 @@ package org.springframework.mock.web;
+
+ import java.io.IOException;
+ import java.io.OutputStream;
++
+ import javax.servlet.ServletOutputStream;
++import javax.servlet.WriteListener;
+
+ import org.springframework.util.Assert;
+
+@@ -68,4 +70,13 @@ public class DelegatingServletOutputStream extends ServletOutputStream {
+ this.targetStream.close();
+ }
+
++ @Override
++ public boolean isReady() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ @Override
++ public void setWriteListener(WriteListener arg0) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
+ }
+diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java
+index 178dffd..e23ca59 100644
+--- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java
++++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java
+@@ -36,14 +36,21 @@ import java.util.List;
+ import java.util.Locale;
+ import java.util.Map;
+ import java.util.Set;
++
++import javax.servlet.AsyncContext;
++import javax.servlet.DispatcherType;
+ import javax.servlet.RequestDispatcher;
+ import javax.servlet.ServletContext;
+ import javax.servlet.ServletException;
+ import javax.servlet.ServletInputStream;
++import javax.servlet.ServletRequest;
++import javax.servlet.ServletResponse;
+ import javax.servlet.http.Cookie;
+ import javax.servlet.http.HttpServletRequest;
+ import javax.servlet.http.HttpServletResponse;
+ import javax.servlet.http.HttpSession;
++import javax.servlet.http.HttpUpgradeHandler;
++import javax.servlet.http.Part;
+
+ import org.springframework.util.Assert;
+ import org.springframework.util.LinkedCaseInsensitiveMap;
+@@ -914,4 +921,49 @@ public class MockHttpServletRequest implements HttpServletRequest {
+ this.authType = null;
+ }
+
++ public AsyncContext startAsync() throws IllegalStateException {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public AsyncContext startAsync(ServletRequest servletRequest,
++ ServletResponse servletResponse) throws IllegalStateException {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public boolean isAsyncStarted() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public boolean isAsyncSupported() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public AsyncContext getAsyncContext() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public DispatcherType getDispatcherType() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Collection getParts() throws IOException, ServletException {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Part getPart(String name) throws IOException, ServletException {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public long getContentLengthLong() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public String changeSessionId() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public T upgrade(Class arg0)
++ throws IOException, ServletException {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
+ }
+diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java
+index b575c40..52bf4db 100644
+--- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java
++++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java
+@@ -29,6 +29,7 @@ import java.util.Collections;
+ import java.util.List;
+ import java.util.Locale;
+ import java.util.Map;
++
+ import javax.servlet.ServletOutputStream;
+ import javax.servlet.http.Cookie;
+ import javax.servlet.http.HttpServletResponse;
+@@ -600,4 +601,8 @@ public class MockHttpServletResponse implements HttpServletResponse {
+ }
+ }
+
++
++ public void setContentLengthLong(long arg0) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
+ }
+diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java b/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java
+index 49b49e5..35303d8 100644
+--- a/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java
++++ b/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java
+@@ -23,20 +23,29 @@ import java.net.MalformedURLException;
+ import java.net.URL;
+ import java.util.Collections;
+ import java.util.Enumeration;
++import java.util.EventListener;
+ import java.util.HashMap;
+ import java.util.HashSet;
+ import java.util.LinkedHashMap;
+ import java.util.LinkedHashSet;
+ import java.util.Map;
+ import java.util.Set;
++
+ import javax.activation.FileTypeMap;
++import javax.servlet.Filter;
++import javax.servlet.FilterRegistration;
+ import javax.servlet.RequestDispatcher;
+ import javax.servlet.Servlet;
+ import javax.servlet.ServletContext;
++import javax.servlet.ServletException;
++import javax.servlet.ServletRegistration;
++import javax.servlet.ServletRegistration.Dynamic;
++import javax.servlet.SessionCookieConfig;
++import javax.servlet.SessionTrackingMode;
++import javax.servlet.descriptor.JspConfigDescriptor;
+
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+-
+ import org.springframework.core.io.DefaultResourceLoader;
+ import org.springframework.core.io.Resource;
+ import org.springframework.core.io.ResourceLoader;
+@@ -496,4 +505,100 @@ public class MockServletContext implements ServletContext {
+ }
+ }
+
++
++ public Dynamic addServlet(String servletName, String className) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Dynamic addServlet(String servletName, Servlet servlet) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Dynamic addServlet(String servletName,
++ Class extends Servlet> servletClass) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public T createServlet(Class clazz)
++ throws ServletException {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public ServletRegistration getServletRegistration(String servletName) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Map getServletRegistrations() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public javax.servlet.FilterRegistration.Dynamic addFilter(
++ String filterName, String className) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public javax.servlet.FilterRegistration.Dynamic addFilter(
++ String filterName, Filter filter) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public javax.servlet.FilterRegistration.Dynamic addFilter(
++ String filterName, Class extends Filter> filterClass) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public T createFilter(Class clazz)
++ throws ServletException {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public FilterRegistration getFilterRegistration(String filterName) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Map getFilterRegistrations() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public SessionCookieConfig getSessionCookieConfig() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public void setSessionTrackingModes(
++ Set sessionTrackingModes) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Set getDefaultSessionTrackingModes() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Set getEffectiveSessionTrackingModes() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public void addListener(String className) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public void addListener(T t) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public void addListener(Class extends EventListener> listenerClass) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public T createListener(Class clazz)
++ throws ServletException {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public JspConfigDescriptor getJspConfigDescriptor() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public String getVirtualServerName() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
+ }
diff --git a/springframework-3.2.6-port-spring-tx-to-javax.resources-1.7.patch b/springframework-3.2.6-port-spring-tx-to-javax.resources-1.7.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7c077b925774e0d3608dfe8a026d71824df59f50
--- /dev/null
+++ b/springframework-3.2.6-port-spring-tx-to-javax.resources-1.7.patch
@@ -0,0 +1,67 @@
+From a080bcf000f0fd18996b5f442698b6d0a99e9583 Mon Sep 17 00:00:00 2001
+From: Michal Srb
+Date: Thu, 16 Jan 2014 08:12:12 +0100
+Subject: [PATCH] Port to javax.resources 1.7
+
+---
+ .../jca/endpoint/GenericMessageEndpointFactory.java | 10 +++++++++-
+ .../springframework/jca/support/SimpleBootstrapContext.java | 11 +++++++++++
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+diff --git a/spring-tx/src/main/java/org/springframework/jca/endpoint/GenericMessageEndpointFactory.java b/spring-tx/src/main/java/org/springframework/jca/endpoint/GenericMessageEndpointFactory.java
+index 61f8db5..6b9137e 100644
+--- a/spring-tx/src/main/java/org/springframework/jca/endpoint/GenericMessageEndpointFactory.java
++++ b/spring-tx/src/main/java/org/springframework/jca/endpoint/GenericMessageEndpointFactory.java
+@@ -23,7 +23,6 @@ import javax.transaction.xa.XAResource;
+
+ import org.aopalliance.intercept.MethodInterceptor;
+ import org.aopalliance.intercept.MethodInvocation;
+-
+ import org.springframework.aop.framework.ProxyFactory;
+ import org.springframework.aop.support.DelegatingIntroductionInterceptor;
+ import org.springframework.util.ReflectionUtils;
+@@ -156,4 +155,13 @@ public class GenericMessageEndpointFactory extends AbstractMessageEndpointFactor
+ }
+ }
+
++
++ public String getActivationName() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public Class> getEndpointClass() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
+ }
+diff --git a/spring-tx/src/main/java/org/springframework/jca/support/SimpleBootstrapContext.java b/spring-tx/src/main/java/org/springframework/jca/support/SimpleBootstrapContext.java
+index d26fea7..4cf12e4 100644
+--- a/spring-tx/src/main/java/org/springframework/jca/support/SimpleBootstrapContext.java
++++ b/spring-tx/src/main/java/org/springframework/jca/support/SimpleBootstrapContext.java
+@@ -21,7 +21,9 @@ import java.util.Timer;
+ import javax.resource.spi.BootstrapContext;
+ import javax.resource.spi.UnavailableException;
+ import javax.resource.spi.XATerminator;
++import javax.resource.spi.work.WorkContext;
+ import javax.resource.spi.work.WorkManager;
++import javax.transaction.TransactionSynchronizationRegistry;
+
+ /**
+ * Simple implementation of the JCA 1.5 {@link javax.resource.spi.BootstrapContext}
+@@ -77,4 +79,13 @@ public class SimpleBootstrapContext implements BootstrapContext {
+ return new Timer();
+ }
+
++ public boolean isContextSupported(
++ Class extends WorkContext> workContextClass) {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
++ public TransactionSynchronizationRegistry getTransactionSynchronizationRegistry() {
++ throw new UnsupportedOperationException("Not implemented yet");
++ }
++
+ }
+--
+1.8.3.1
+
diff --git a/springframework-3.2.6-port-to-hibernate-validator-5.patch b/springframework-3.2.6-port-to-hibernate-validator-5.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7fbe048ed411fc7d8722ba86d51fa5c2f96ab5cb
--- /dev/null
+++ b/springframework-3.2.6-port-to-hibernate-validator-5.patch
@@ -0,0 +1,176 @@
+From dcdec16e48847501a11d1015a08e1b81b70f91cd Mon Sep 17 00:00:00 2001
+From: Michal Srb
+Date: Wed, 15 Jan 2014 09:26:34 +0100
+Subject: [PATCH] Port to hibernate validator 5
+
+---
+ .../MessageSourceResourceBundleLocator.java | 2 +-
+ .../MethodValidationInterceptor.java | 89 ++++++++++++++++------
+ 2 files changed, 66 insertions(+), 25 deletions(-)
+
+diff --git a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MessageSourceResourceBundleLocator.java b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MessageSourceResourceBundleLocator.java
+index 83c538e..dc73118 100644
+--- a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MessageSourceResourceBundleLocator.java
++++ b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MessageSourceResourceBundleLocator.java
+@@ -19,7 +19,7 @@ package org.springframework.validation.beanvalidation;
+ import java.util.Locale;
+ import java.util.ResourceBundle;
+
+-import org.hibernate.validator.resourceloading.ResourceBundleLocator;
++import org.hibernate.validator.spi.resourceloading.ResourceBundleLocator;
+
+ import org.springframework.context.MessageSource;
+ import org.springframework.context.support.MessageSourceResourceBundle;
+diff --git a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java
+index 3d4b907..83bb184 100644
+--- a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java
++++ b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java
+@@ -16,7 +16,11 @@
+
+ package org.springframework.validation.beanvalidation;
+
++import java.lang.reflect.Method;
+ import java.util.Set;
++
++import javax.validation.ConstraintViolation;
++import javax.validation.ConstraintViolationException;
+ import javax.validation.Validation;
+ import javax.validation.Validator;
+ import javax.validation.ValidatorFactory;
+@@ -24,11 +28,8 @@ import javax.validation.ValidatorFactory;
+ import org.aopalliance.intercept.MethodInterceptor;
+ import org.aopalliance.intercept.MethodInvocation;
+ import org.hibernate.validator.HibernateValidator;
+-import org.hibernate.validator.method.MethodConstraintViolation;
+-import org.hibernate.validator.method.MethodConstraintViolationException;
+-import org.hibernate.validator.method.MethodValidator;
+-
+ import org.springframework.core.annotation.AnnotationUtils;
++import org.springframework.util.ReflectionUtils;
+ import org.springframework.validation.annotation.Validated;
+
+ /**
+@@ -45,25 +46,48 @@ import org.springframework.validation.annotation.Validated;
+ * at the type level of the containing target class, applying to all public service methods
+ * of that class. By default, JSR-303 will validate against its default group only.
+ *
+- * As of Spring 3.1, this functionality requires Hibernate Validator 4.2 or higher.
+- * Once Bean Validation 1.1 becomes available, this class will autodetect a compliant
+- * provider and automatically use the standard method validation support there.
++ *
As of Spring 4.0, this functionality requires either a Bean Validation 1.1 provider
++ * (such as Hibernate Validator 5.0) or the Bean Validation 1.0 API with Hibernate Validator
++ * 4.2 or 4.3. The actual provider will be autodetected and automatically adapted.
+ *
+ * @author Juergen Hoeller
+ * @since 3.1
+ * @see MethodValidationPostProcessor
++ * @see javax.validation.executable.ExecutableValidator
+ * @see org.hibernate.validator.method.MethodValidator
+ */
+ public class MethodValidationInterceptor implements MethodInterceptor {
+
+- private final MethodValidator validator;
++ private static Method forExecutablesMethod;
++
++ private static Method validateParametersMethod;
++
++ private static Method validateReturnValueMethod;
++
++ static {
++ try {
++ forExecutablesMethod = Validator.class.getMethod("forExecutables");
++ Class> executableValidatorClass = forExecutablesMethod.getReturnType();
++ validateParametersMethod = executableValidatorClass.getMethod(
++ "validateParameters", Object.class, Method.class, Object[].class, Class[].class);
++ validateReturnValueMethod = executableValidatorClass.getMethod(
++ "validateReturnValue", Object.class, Method.class, Object.class, Class[].class);
++ }
++ catch (Exception ex) {
++ // Bean Validation 1.1 ExecutableValidator API not available
++ }
++ }
++
++
++ private final Validator validator;
+
+
+ /**
+ * Create a new MethodValidationInterceptor using a default JSR-303 validator underneath.
+ */
+ public MethodValidationInterceptor() {
+- this(Validation.byProvider(HibernateValidator.class).configure().buildValidatorFactory());
++ this(forExecutablesMethod != null ? Validation.buildDefaultValidatorFactory() :
++ HibernateValidatorDelegate.buildValidatorFactory());
+ }
+
+ /**
+@@ -79,24 +103,32 @@ public class MethodValidationInterceptor implements MethodInterceptor {
+ * @param validator the JSR-303 Validator to use
+ */
+ public MethodValidationInterceptor(Validator validator) {
+- this.validator = validator.unwrap(MethodValidator.class);
++ this.validator = validator;
+ }
+
+
++ @SuppressWarnings("unchecked")
+ public Object invoke(MethodInvocation invocation) throws Throwable {
+- Class[] groups = determineValidationGroups(invocation);
+- Set> result = this.validator.validateAllParameters(
+- invocation.getThis(), invocation.getMethod(), invocation.getArguments(), groups);
+- if (!result.isEmpty()) {
+- throw new MethodConstraintViolationException(result);
+- }
+- Object returnValue = invocation.proceed();
+- result = this.validator.validateReturnValue(
+- invocation.getThis(), invocation.getMethod(), returnValue, groups);
+- if (!result.isEmpty()) {
+- throw new MethodConstraintViolationException(result);
++ Class>[] groups = determineValidationGroups(invocation);
++ if (forExecutablesMethod != null) {
++ Object executableValidator = ReflectionUtils.invokeMethod(forExecutablesMethod, this.validator);
++ Set> result = (Set>)
++ ReflectionUtils.invokeMethod(validateParametersMethod, executableValidator,
++ invocation.getThis(), invocation.getMethod(), invocation.getArguments(), groups);
++ if (!result.isEmpty()) {
++ throw new ConstraintViolationException(result);
++ }
++ Object returnValue = invocation.proceed();
++ result = (Set>)
++ ReflectionUtils.invokeMethod(validateReturnValueMethod, executableValidator,
++ invocation.getThis(), invocation.getMethod(), returnValue, groups);
++ if (!result.isEmpty()) {
++ throw new ConstraintViolationException(result);
++ }
++ return returnValue;
+ }
+- return returnValue;
++
++ return invocation.proceed();
+ }
+
+ /**
+@@ -106,9 +138,18 @@ public class MethodValidationInterceptor implements MethodInterceptor {
+ * @param invocation the current MethodInvocation
+ * @return the applicable validation groups as a Class array
+ */
+- protected Class[] determineValidationGroups(MethodInvocation invocation) {
++ protected Class>[] determineValidationGroups(MethodInvocation invocation) {
+ Validated valid = AnnotationUtils.findAnnotation(invocation.getThis().getClass(), Validated.class);
+- return (valid != null ? valid.value() : new Class[0]);
++ return (valid != null ? valid.value() : new Class>[0]);
+ }
+
++ /**
++ * Inner class to avoid a hard-coded Hibernate Validator 4.2/4.3 dependency.
++ */
++ private static class HibernateValidatorDelegate {
++
++ public static ValidatorFactory buildValidatorFactory() {
++ return Validation.byProvider(HibernateValidator.class).configure().buildValidatorFactory();
++ }
++ }
+ }
+--
+1.8.3.1
+
diff --git a/springframework.spec b/springframework.spec
new file mode 100644
index 0000000000000000000000000000000000000000..6745291c7e6f2e8278b13223dfc3df7f50a42175
--- /dev/null
+++ b/springframework.spec
@@ -0,0 +1,431 @@
+Name: springframework
+Version: 3.2.18
+Release: 5
+Summary: The Spring Java Application Framework
+Epoch: 0
+License: ASL 2.0
+URL: http://projects.spring.io/spring-framework/
+Source0: https://github.com/spring-projects/spring-framework/archive/v3.2.18.RELEASE/springframework-3.2.18.RELEASE.tar.gz
+Source101: springframework-3.2.18.RELEASE.pom
+Source102: https://repo1.maven.org/maven2/org/springframework/spring-core/3.2.18.RELEASE/spring-core-3.2.18.RELEASE.pom
+Source103: https://repo1.maven.org/maven2/org/springframework/spring-expression/3.2.18.RELEASE/spring-expression-3.2.18.RELEASE.pom
+Source104: https://repo1.maven.org/maven2/org/springframework/spring-context/3.2.18.RELEASE/spring-context-3.2.18.RELEASE.pom
+Source105: https://repo1.maven.org/maven2/org/springframework/spring-aop/3.2.18.RELEASE/spring-aop-3.2.18.RELEASE.pom
+Source106: https://repo1.maven.org/maven2/org/springframework/spring-instrument/3.2.18.RELEASE/spring-instrument-3.2.18.RELEASE.pom
+Source107: https://repo1.maven.org/maven2/org/springframework/spring-beans/3.2.18.RELEASE/spring-beans-3.2.18.RELEASE.pom
+Source108: https://repo1.maven.org/maven2/org/springframework/spring-orm/3.2.18.RELEASE/spring-orm-3.2.18.RELEASE.pom
+Source109: https://repo1.maven.org/maven2/org/springframework/spring-test/3.2.18.RELEASE/spring-test-3.2.18.RELEASE.pom
+Source110: https://repo1.maven.org/maven2/org/springframework/spring-context-support/3.2.18.RELEASE/spring-context-support-3.2.18.RELEASE.pom
+Source111: https://repo1.maven.org/maven2/org/springframework/spring-instrument-tomcat/3.2.18.RELEASE/spring-instrument-tomcat-3.2.18.RELEASE.pom
+Source112: https://repo1.maven.org/maven2/org/springframework/spring-jdbc/3.2.18.RELEASE/spring-jdbc-3.2.18.RELEASE.pom
+Source113: https://repo1.maven.org/maven2/org/springframework/spring-jms/3.2.18.RELEASE/spring-jms-3.2.18.RELEASE.pom
+Source114: https://repo1.maven.org/maven2/org/springframework/spring-tx/3.2.18.RELEASE/spring-tx-3.2.18.RELEASE.pom
+Source115: https://repo1.maven.org/maven2/org/springframework/spring-web/3.2.18.RELEASE/spring-web-3.2.18.RELEASE.pom
+Source116: https://repo1.maven.org/maven2/org/springframework/spring-oxm/3.2.18.RELEASE/spring-oxm-3.2.18.RELEASE.pom
+Source117: https://repo1.maven.org/maven2/org/springframework/spring-struts/3.2.18.RELEASE/spring-struts-3.2.18.RELEASE.pom
+Source118: https://repo1.maven.org/maven2/org/springframework/spring-webmvc/3.2.18.RELEASE/spring-webmvc-3.2.18.RELEASE.pom
+Source119: https://repo1.maven.org/maven2/org/springframework/spring-webmvc-portlet/3.2.18.RELEASE/spring-webmvc-portlet-3.2.18.RELEASE.pom
+Source120: spring-test-mvc-3.2.18.RELEASE.pom
+Source121: spring-orm-hibernate4-template.pom
+Patch0: springframework-3.2.6-java.io.IOException-is-never-thrown.patch
+Patch1: springframework-3.2.6-port-spring-jms-to-javax.resources-1.7.patch
+Patch2: springframework-3.2.6-port-spring-orm-to-javax.persistence-2.0.patch
+Patch3: springframework-3.2.6-port-spring-test-to-servlet-3.1.patch
+Patch4: springframework-3.2.6-port-spring-tx-to-javax.resources-1.7.patch
+Patch5: springframework-3.2.6-port-to-hibernate-validator-5.patch
+Patch6: springframework-3.2.13-derby.patch
+Patch7: springframework-3.2.14-jopt-simple.patch
+Patch8: springframework-3.2.14-build-with-tomcat8.patch
+Patch9: springframework-3.2.18-hibernate4.3.patch
+BuildRequires: maven-local mvn(aopalliance:aopalliance) mvn(c3p0:c3p0) mvn(com.caucho:hessian)
+BuildRequires: mvn(com.fasterxml.jackson.core:jackson-databind) mvn(com.h2database:h2)
+BuildRequires: mvn(com.jamonapi:jamon) mvn(com.lowagie:itext) mvn(com.rometools:rome)
+BuildRequires: mvn(commons-beanutils:commons-beanutils)
+BuildRequires: mvn(commons-fileupload:commons-fileupload)
+BuildRequires: mvn(commons-httpclient:commons-httpclient) mvn(commons-io:commons-io)
+BuildRequires: mvn(commons-logging:commons-logging) mvn(commons-pool:commons-pool)
+BuildRequires: mvn(com.thoughtworks.xstream:xstream) mvn(hsqldb:hsqldb:1)
+BuildRequires: mvn(jasperreports:jasperreports) mvn(javax.ejb:ejb-api)
+BuildRequires: mvn(javax.faces:jsf-api) mvn(javax.inject:javax.inject) mvn(javax.jdo:jdo-api)
+BuildRequires: mvn(javax.mail:mail) mvn(javax.portlet:portlet-api)
+BuildRequires: mvn(javax.servlet:javax.servlet-api) mvn(javax.servlet.jsp:jsp-api)
+BuildRequires: mvn(javax.servlet:jstl) mvn(javax.servlet:servlet-api)
+BuildRequires: mvn(javax.xml:jaxrpc-api) mvn(javax.xml.soap:saaj-api) mvn(joda-time:joda-time)
+BuildRequires: mvn(junit:junit) mvn(log4j:log4j) mvn(net.sf.cglib:cglib)
+BuildRequires: mvn(net.sf.ehcache:ehcache-core) mvn(net.sourceforge.jexcelapi:jxl)
+BuildRequires: mvn(org.apache.derby:derby) mvn(org.apache.derby:derbyclient)
+BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
+BuildRequires: mvn(org.apache.geronimo.specs:geronimo-interceptor_3.0_spec)
+BuildRequires: mvn(org.apache.geronimo.specs:geronimo-jms_1.1_spec)
+BuildRequires: mvn(org.apache.geronimo.specs:geronimo-jta_1.1_spec)
+BuildRequires: mvn(org.apache.geronimo.specs:geronimo-validation_1.0_spec)
+BuildRequires: mvn(org.apache.httpcomponents:httpclient) mvn(org.apache.openjpa:openjpa-lib)
+BuildRequires: mvn(org.apache.openjpa:openjpa-persistence) mvn(org.apache.poi:poi)
+BuildRequires: mvn(org.apache.struts:struts-core) mvn(org.apache.struts:struts-extras)
+BuildRequires: mvn(org.apache.struts:struts-tiles) mvn(org.apache.tiles:tiles-api)
+BuildRequires: mvn(org.apache.tiles:tiles-core) mvn(org.apache.tiles:tiles-el)
+BuildRequires: mvn(org.apache.tiles:tiles-jsp) mvn(org.apache.tiles:tiles-servlet)
+BuildRequires: mvn(org.apache.tomcat:tomcat-catalina) mvn(org.apache.tomcat:tomcat-el-api)
+BuildRequires: mvn(org.apache.tomcat:tomcat-jsp-api) mvn(org.apache.tomcat:tomcat-servlet-api)
+BuildRequires: mvn(org.apache.xmlbeans:xmlbeans) mvn(org.aspectj:aspectjweaver)
+BuildRequires: mvn(org.beanshell:bsh) mvn(org.codehaus.castor:castor-xml)
+BuildRequires: mvn(org.codehaus.groovy:groovy) mvn(org.codehaus.jackson:jackson-mapper-asl)
+BuildRequires: mvn(org.eclipse.jetty:jetty-server) mvn(org.eclipse.jetty:jetty-servlet)
+BuildRequires: mvn(org.eclipse.persistence:org.eclipse.persistence.core)
+BuildRequires: mvn(org.eclipse.persistence:org.eclipse.persistence.jpa)
+BuildRequires: mvn(org.freemarker:freemarker) mvn(org.hamcrest:hamcrest-core)
+BuildRequires: mvn(org.hibernate:hibernate-core:4) mvn(org.hibernate:hibernate-core:3)
+BuildRequires: mvn(org.hibernate:hibernate-entitymanager:4)
+BuildRequires: mvn(org.hibernate:hibernate-entitymanager:3)
+BuildRequires: mvn(org.hibernate:hibernate-validator)
+BuildRequires: mvn(org.hibernate.javax.persistence:hibernate-jpa-2.0-api)
+BuildRequires: mvn(org.hibernate.javax.persistence:hibernate-jpa-2.1-api)
+BuildRequires: mvn(org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec)
+BuildRequires: mvn(org.jibx:jibx-run) mvn(org.jruby.extras:bytelist) mvn(org.jruby:jruby)
+BuildRequires: mvn(org.ow2.asm:asm) mvn(org.quartz-scheduler:quartz) mvn(org.slf4j:slf4j-api)
+BuildRequires: mvn(org.testng:testng) mvn(toplink.essentials:toplink-essentials)
+BuildRequires: mvn(velocity-tools:velocity-tools-view) mvn(velocity:velocity)
+BuildRequires: mvn(xmlunit:xmlunit) mvn(org.apache.taglibs:taglibs-standard-jstlel)
+BuildRequires: mvn(javax.servlet:jstl) mvn(org.apache.taglibs:taglibs-standard-spec)
+BuildRequires: mvn(com.jayway.jsonpath:json-path) mvn(net.sf.jopt-simple:jopt-simple) xmvn
+Obsoletes: springframework-instrument-tomcat < %{version}-%{release}
+BuildArch: noarch
+%description
+The spring is based on code pubilshed in Expert One-on-One J2EE Design and Dvelopment
+by Rod Johnson (Wrox, 2002).it is a layered Java/J2ee application framework.
+
+%package help
+Summary: Provides the Javadoc for springframework
+Provides: springframework-javadoc = %{version}-%{release}
+Obsoletes: springframework-javadoc < %{version}-%{release}
+
+%description help
+This help package provide the javadoc for springframework.
+
+%package aop
+Summary: Provode the Spring Aspect Oriented Framework
+%description aop
+The package is an enabling technology,it allows the implementation of custom
+aspects and provides declarative transaction management without EJB.
+
+%package beans
+Summary: Provide the Spring Bean Factory
+%description beans
+The Package provides an advanced configuration mechanism capable of
+managing beans of any nature, using potentially any kind of storage facility.
+
+%package context
+Summary: Provide the Spring Application Context
+%description context
+The package is a complete superset of a bean factory, and
+adds enhanced capabilities to it, some of them more J2EE and
+enterprise-centric.
+
+%package context-support
+Summary: Spring Context Support
+%description context-support
+This package provide Quartz/CommonJ scheduling,
+UI templating, mail and caching.
+
+%package expression
+Summary: Spring Expression Language (SpEL)
+%description expression
+The package is a powerful expression
+language that supports querying and manipulating an object graph at runtime.
+
+%package instrument
+Summary: Spring Instrumentation
+%description instrument
+The Package exposes performance and
+resource utilization metrics for the Spring container and
+gives you runtime control of the container.
+
+%package jdbc
+Summary: Spring JDBC
+%description jdbc
+The jdbc takes care of all the low-level details associated to the
+development with JDBC.
+
+%package jms
+Summary: Spring jms
+%description jms
+Spring jms provide Java Message Service 1.0.2/1.1 support.
+
+%package orm
+Summary: Spring ORM
+%description orm
+Spring orm provide JDO support, JPA support, Hibernate
+support, TopLink support.
+
+%package orm-hibernate4
+Summary: Spring ORM Hibernate 4 Support
+%description orm-hibernate4
+orm-hibernate4 provide Hibernate 4 support.
+
+%package oxm
+Summary: Spring OXM
+%description oxm
+This package provide marshaling and unmarshalling
+for XML with JAXB context and JiBX binding factories.
+
+%package struts
+Summary: Spring Web Struts
+%description struts
+This package provide integrate a Struts
+application with Spring
+
+%package devel
+Summary: Spring test context and MVC framework
+Provides: springframework-test = %{version}-%{release}
+Provides: springframework-test-mvc = %{version}-%{release}
+Obsoletes: springframework-test < %{version}-%{release}
+Obsoletes: springframework-test-mvc < %{version}-%{release}
+
+%description devel
+Spring's test MVC framework and Spring's test context framework. Also includes common Servlet and
+Portlet API mocks.
+
+%package tx
+Summary: Spring Transaction Management
+%description tx
+Spring provides a consistent abstraction for transaction management that
+provides a consistent programming model across different transaction APIs,
+supports declarative transaction management, provides a simpler API for
+programmatic transaction management and integrates with Spring's various data
+access abstractions.
+
+%package web
+Summary: Spring Web
+%description web
+This package provide web application context, multipart
+resolver, HTTP-based remoting support.
+
+%package webmvc
+Summary: Spring Web Servlet
+%description webmvc
+This package provide framework servlets, web MVC framework,
+web controllers, web views for JSP, Velocity, Tiles,
+iText and POI.
+
+%package webmvc-portlet
+Summary: Spring Web Portlet
+%description webmvc-portlet
+This package provide support development of Portlet
+applications with Spring.
+
+%prep
+%autosetup -n spring-framework-3.2.18.RELEASE -p1
+find -name "*.class" -delete
+find -name "*.jar" -print -delete
+cp %{SOURCE101} pom.xml
+cp %{SOURCE102} spring-core/pom.xml
+cp %{SOURCE103} spring-expression/pom.xml
+cp %{SOURCE104} spring-context/pom.xml
+cp %{SOURCE105} spring-aop/pom.xml
+cp %{SOURCE106} spring-instrument/pom.xml
+cp %{SOURCE107} spring-beans/pom.xml
+cp %{SOURCE108} spring-orm/pom.xml
+cp %{SOURCE109} spring-test/pom.xml
+cp %{SOURCE110} spring-context-support/pom.xml
+%pom_disable_module spring-instrument-tomcat
+cp %{SOURCE112} spring-jdbc/pom.xml
+cp %{SOURCE113} spring-jms/pom.xml
+cp %{SOURCE114} spring-tx/pom.xml
+cp %{SOURCE115} spring-web/pom.xml
+cp %{SOURCE116} spring-oxm/pom.xml
+cp %{SOURCE117} spring-struts/pom.xml
+cp %{SOURCE118} spring-webmvc/pom.xml
+cp %{SOURCE119} spring-webmvc-portlet/pom.xml
+cp %{SOURCE120} spring-test-mvc/pom.xml
+cp %{SOURCE121} spring-orm-hibernate4/pom.xml
+sed -i "s|@VERSION@|3.2.18.RELEASE|" spring-orm-hibernate4/pom.xml
+%pom_xpath_inject pom:modules "spring-orm-hibernate4"
+%pom_change_dep -r org.hibernate: ::4 spring-orm-hibernate4
+%pom_remove_dep :hibernate-entitymanager spring-orm
+%pom_add_dep org.hibernate:hibernate-entitymanager:3 spring-orm
+%pom_remove_dep :hibernate-core spring-orm
+%pom_add_dep org.hibernate:hibernate-core:3 spring-orm
+%pom_remove_dep struts:struts spring-struts
+%pom_add_dep org.apache.struts:struts-core spring-struts
+%pom_add_dep org.apache.struts:struts-extras spring-struts
+%pom_add_dep org.apache.struts:struts-tiles spring-struts
+%pom_remove_dep org.apache.tiles:tiles-extras spring-webmvc
+%pom_change_dep :tiles-el ::2.1.2 spring-webmvc
+%pom_remove_dep ::3.0.4 spring-webmvc
+%pom_remove_dep javax.resource:connector-api spring-tx
+%pom_add_dep org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec spring-tx
+%pom_remove_dep com.ibm.websphere:uow spring-tx
+rm spring-tx/src/main/java/org/springframework/transaction/jta/WebSphereUowTransactionManager.java \
+ spring-tx/src/test/java/org/springframework/transaction/jta/WebSphereUowTransactionManagerTests.java
+%pom_remove_dep :hibernate-annotations spring-orm
+%pom_remove_dep :hibernate-core spring-orm
+%pom_add_dep org.hibernate:hibernate-core:3 spring-orm
+rm -rf spring-orm/src/main/java/org/springframework/orm/ibatis/*
+%pom_remove_dep :ibatis-sqlmap spring-orm
+%pom_remove_dep :openjpa spring-orm
+%pom_add_dep org.apache.openjpa:openjpa-lib spring-orm
+%pom_add_dep org.apache.openjpa:openjpa-persistence spring-orm
+%pom_remove_dep javax.resource:connector-api spring-jms
+%pom_add_dep org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec spring-jms
+%pom_remove_dep hsqldb:hsqldb spring-jdbc
+%pom_add_dep hsqldb:hsqldb:1 spring-jdbc
+rm -Rf spring-context-support/src/main/java/org/springframework/cache/jcache/
+%pom_remove_dep javax.cache:cache-api spring-context-support
+rm -Rf spring-context-support/src/main/java/org/springframework/scheduling/
+%pom_remove_dep org.codehaus.fabric3.api:commonj spring-context-support
+file = 'beans,web,webmvc'
+for p in ${file};
+do
+ %pom_remove_dep :el-api spring-${p}
+ %pom_add_dep org.apache.tomcat:tomcat-el-api spring-${p}
+done
+%pom_remove_dep :persistence-api spring-context
+%pom_add_dep org.hibernate.javax.persistence:hibernate-jpa-2.0-api spring-context
+%pom_remove_dep :validation-api spring-context
+%pom_add_dep org.apache.geronimo.specs:geronimo-validation_1.0_spec spring-context
+%pom_add_dep org.apache.geronimo.specs:geronimo-interceptor_3.0_spec spring-context
+%pom_add_dep org.jruby.extras:bytelist spring-context
+%pom_remove_dep :persistence-api spring-orm
+%pom_add_dep org.hibernate.javax.persistence:hibernate-jpa-2.0-api spring-orm
+%pom_remove_dep javax.servlet:servlet-api spring-orm
+%pom_add_dep org.apache.tomcat:tomcat-servlet-api spring-context
+%pom_remove_dep :persistence-api spring-test
+%pom_add_dep org.apache.tomcat:tomcat-el-api spring-test
+%pom_remove_dep javax.servlet.jsp:jsp-api spring-test
+%pom_add_dep org.apache.tomcat:tomcat-jsp-api spring-test
+%pom_remove_dep -r javax.activation:activation
+%pom_add_dep org.apache.taglibs:taglibs-standard-jstlel spring-test 'true'
+%pom_add_dep javax.servlet:jstl spring-web 'true'
+%pom_remove_dep taglibs:standard spring-web
+%pom_add_dep org.apache.taglibs:taglibs-standard-spec spring-webmvc 'true'
+rm spring-context/src/main/java/org/springframework/scripting/bsh/BshScriptFactory.java
+rm spring-context/src/main/java/org/springframework/scripting/bsh/BshScriptUtils.java
+%pom_remove_dep :backport-util-concurrent spring-context
+%pom_add_dep org.ow2.asm:asm spring-core
+%pom_add_dep net.sf.cglib:cglib:4.2 spring-core
+%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.groovy']/pom:artifactId" groovy spring-context
+find ./ -name "*.java" -exec sed -i "s/org.springframework.asm/org.objectweb.asm/g" {} +
+find ./ -name "*.java" -exec sed -i "s/org.springframework.cglib/net.sf.cglib/g" {} +
+find ./ -name "*.java" -exec sed -i "/edu.emory.mathcs.backport/d" {} +
+%pom_change_dep -r :rome com.rometools: spring-test-mvc spring-web spring-webmvc
+find ./spring-test-mvc -name "*.java" -exec sed -i "s/com.sun.syndication/com.rometools.rome/g" {} +
+find ./spring-web -name "*.java" -exec sed -i "s/com.sun.syndication/com.rometools.rome/g" {} +
+find ./spring-webmvc -name "*.java" -exec sed -i "s/com.sun.syndication/com.rometools.rome/g" {} +
+rm spring-context/src/main/java/org/springframework/scheduling/backportconcurrent/*
+cp -p src/dist/* .
+mkdir -p spring-context/src/main/resources/org/springframework/remoting/rmi
+cp -p spring-context/src/main/java/org/springframework/remoting/rmi/RmiInvocationWrapperRTD.xml \
+ spring-context/src/main/resources/org/springframework/remoting/rmi/
+mkdir -p spring-context-support/src/main/resources/org/springframework/mail/javamail
+cp -p spring-context-support/src/main/java/org/springframework/mail/javamail/mime.types \
+ spring-context-support/src/main/resources/org/springframework/mail/javamail/
+mkdir -p spring-web/src/main/resources/org/springframework/web/context
+cp -p spring-web/src/main/java/org/springframework/web/context/ContextLoader.properties \
+ spring-web/src/main/resources/org/springframework/web/context/
+mkdir -p spring-webmvc/src/main/resources/org/springframework/web/servlet/view/velocity
+cp -p spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.properties \
+ spring-webmvc/src/main/resources/org/springframework/web/servlet/
+cp -p spring-webmvc/src/main/java/org/springframework/web/servlet/view/velocity/spring.vm \
+ spring-webmvc/src/main/resources/org/springframework/web/servlet/view/velocity
+mkdir -p spring-webmvc/src/main/resources/org/springframework/web/servlet/view/freemarker
+cp -p spring-webmvc/src/main/java/org/springframework/web/servlet/view/freemarker/spring.ftl \
+ spring-webmvc/src/main/resources/org/springframework/web/servlet/view/freemarker/
+mkdir -p spring-webmvc-portlet/src/main/resources/org/springframework/web/portlet
+cp -p spring-webmvc-portlet/src/main/java/org/springframework/web/portlet/DispatcherPortlet.properties \
+ spring-webmvc-portlet/src/main/resources/org/springframework/web/portlet/
+
+for p in aop beans context context-support core \
+expression instrument jdbc jms orm oxm struts \
+test test-mvc tx web webmvc webmvc-portlet;
+do
+ %pom_xpath_inject "pom:project" "bundle" spring-${p}
+ %pom_add_plugin org.apache.felix:maven-bundle-plugin:2.5.4 spring-${p} "
+ true
+
+
+ \${project.groupId}.${p}
+ \${project.name}
+ \${project.version}
+
+
+
+
+ bundle-manifest
+ process-classes
+
+ manifest
+
+
+ "
+done
+%pom_xpath_inject "pom:project" "bundle" spring-orm-hibernate4
+%pom_add_plugin org.apache.felix:maven-bundle-plugin:2.5.4 spring-orm-hibernate4 "
+true
+
+
+ \${project.groupId}.orm.hibernate4
+ \${project.name}
+ \${project.version}
+
+
+
+
+ bundle-manifest
+ process-classes
+
+ manifest
+
+
+"
+%mvn_package ":spring-core" springframework
+%mvn_package :spring-project __noinstall
+
+%build
+%mvn_build -X -f -s -- -Dproject.build.sourceEncoding=ISO-8859-1 -Dmaven.test.skip=true
+
+%install
+%mvn_install -- -Dmaven.test.skip=true
+
+%files -f .mfiles-springframework
+%license license.txt notice.txt
+
+%files help -f .mfiles-javadoc
+%doc README.md
+%license license.txt notice.txt
+
+%files aop -f .mfiles-spring-aop
+
+%files beans -f .mfiles-spring-beans
+
+%files context -f .mfiles-spring-context
+
+%files context-support -f .mfiles-spring-context-support
+
+%files expression -f .mfiles-spring-expression
+
+%files instrument -f .mfiles-spring-instrument
+%license license.txt notice.txt
+
+%files jdbc -f .mfiles-spring-jdbc
+
+%files jms -f .mfiles-spring-jms
+
+%files orm -f .mfiles-spring-orm
+
+%files orm-hibernate4 -f .mfiles-spring-orm-hibernate4
+
+%files oxm -f .mfiles-spring-oxm
+
+%files struts -f .mfiles-spring-struts
+
+%files tx -f .mfiles-spring-tx
+
+%files web -f .mfiles-spring-web
+
+%files webmvc -f .mfiles-spring-webmvc
+
+%files webmvc-portlet -f .mfiles-spring-webmvc-portlet
+
+%changelog
+* Tue Jun 9 2020 yaokai - 3.2.18-5
+- package init