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 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) 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 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 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 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 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