[springframework] First import after review (#804048)
Juan Hernandez
jhernand at fedoraproject.org
Fri Mar 16 14:57:02 UTC 2012
commit b1bec8d8493108e9b3538ac9731c6ea638122f28
Author: Juan Hernandez <juan.hernandez at redhat.com>
Date: Fri Mar 16 15:56:27 2012 +0100
First import after review (#804048)
.gitignore | 1 +
pom.xml | 28 +
sources | 1 +
...-dependency-on-tomcat-api-and-tomcat-util.patch | 21 +
springframework-dont-rebundle-asm.patch | 307 ++++++
springframework-dont-use-aws-extension.patch | 18 +
springframework-downgrade-groovy-aid.patch | 26 +
springframework-fix-derby-aid.patch | 21 +
springframework-fix-hibernate-validator-aid.patch | 13 +
springframework-fix-tomcat-catalina-aid.patch | 13 +
springframework-remove-ehcache-dependency.patch | 46 +
springframework-remove-jaxws-api-dependency.patch | 56 +
springframework-remove-jruby-dependency.patch | 34 +
springframework-remove-jsr166-dependency.patch | 17 +
...framework-remove-websphere-uow-dependency.patch | 1053 ++++++++++++++++++++
springframework-update-cglib-gid-and-aid.patch | 120 +++
springframework-update-jetty-gid.patch | 42 +
springframework-use-javax-ejb.patch | 14 +
springframework-use-jboss-jca-api.patch | 43 +
springframework.spec | 386 +++++++
20 files changed, 2260 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..748caed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/springframework-3.1.1.tar.gz
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..c911f7a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- This is a dummy POM added just to ease building in the RPM platforms: -->
+
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-project</artifactId>
+ <packaging>pom</packaging>
+ <version>3.1.1.RELEASE</version>
+
+ <modules>
+ <!-- These are not all the modules, only those that we can currently build: -->
+ <module>org.springframework.aop</module>
+ <module>org.springframework.beans</module>
+ <module>org.springframework.context</module>
+ <module>org.springframework.core</module>
+ <module>org.springframework.expression</module>
+ <module>org.springframework.instrument</module>
+ <module>org.springframework.jdbc</module>
+ <module>org.springframework.transaction</module>
+ </modules>
+
+</project>
diff --git a/sources b/sources
index e69de29..c308ea2 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+7e7385308c93cf5c0c03cdca048c8272 springframework-3.1.1.tar.gz
diff --git a/springframework-avoid-jamonapi-transitive-dependency-on-tomcat-api-and-tomcat-util.patch b/springframework-avoid-jamonapi-transitive-dependency-on-tomcat-api-and-tomcat-util.patch
new file mode 100644
index 0000000..d49c50b
--- /dev/null
+++ b/springframework-avoid-jamonapi-transitive-dependency-on-tomcat-api-and-tomcat-util.patch
@@ -0,0 +1,21 @@
+diff --git a/org.springframework.aop/pom.xml b/org.springframework.aop/pom.xml
+index 5d18de2..0fd5c7c 100644
+--- a/org.springframework.aop/pom.xml
++++ b/org.springframework.aop/pom.xml
+@@ -26,6 +26,16 @@
+ <artifactId>jamon</artifactId>
+ <version>2.4</version>
+ <optional>true</optional>
++ <exclusions>
++ <exclusion>
++ <groupId>org.apache.tomcat</groupId>
++ <artifactId>tomcat-api</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.apache.tomcat</groupId>
++ <artifactId>tomcat-util</artifactId>
++ </exclusion>
++ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.cglib</groupId>
diff --git a/springframework-dont-rebundle-asm.patch b/springframework-dont-rebundle-asm.patch
new file mode 100644
index 0000000..9514f9d
--- /dev/null
+++ b/springframework-dont-rebundle-asm.patch
@@ -0,0 +1,307 @@
+diff --git a/org.springframework.aop/pom.xml b/org.springframework.aop/pom.xml
+index cd93c8c..5d18de2 100644
+--- a/org.springframework.aop/pom.xml
++++ b/org.springframework.aop/pom.xml
+@@ -52,9 +52,9 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>org.springframework</groupId>
+- <artifactId>spring-asm</artifactId>
+- <version>${project.version}</version>
++ <groupId>asm</groupId>
++ <artifactId>asm</artifactId>
++ <version>3.3.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+diff --git a/org.springframework.context/pom.xml b/org.springframework.context/pom.xml
+index a83425d..50f448f 100644
+--- a/org.springframework.context/pom.xml
++++ b/org.springframework.context/pom.xml
+@@ -155,9 +155,9 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>org.springframework</groupId>
+- <artifactId>spring-asm</artifactId>
+- <version>${project.version}</version>
++ <groupId>asm</groupId>
++ <artifactId>asm</artifactId>
++ <version>3.3.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+diff --git a/org.springframework.core/pom.xml b/org.springframework.core/pom.xml
+index b550abf..6784fdb 100644
+--- a/org.springframework.core/pom.xml
++++ b/org.springframework.core/pom.xml
+@@ -28,9 +28,15 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>org.springframework</groupId>
+- <artifactId>spring-asm</artifactId>
+- <version>${project.version}</version>
++ <groupId>asm</groupId>
++ <artifactId>asm</artifactId>
++ <version>3.3.1</version>
++ <scope>compile</scope>
++ </dependency>
++ <dependency>
++ <groupId>asm</groupId>
++ <artifactId>asm-commons</artifactId>
++ <version>3.3.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+diff --git a/org.springframework.core/src/main/java/org/springframework/core/LocalVariableTableParameterNameDiscoverer.java b/org.springframework.core/src/main/java/org/springframework/core/LocalVariableTableParameterNameDiscoverer.java
+index 6f0a29e..494f083 100644
+--- a/org.springframework.core/src/main/java/org/springframework/core/LocalVariableTableParameterNameDiscoverer.java
++++ b/org.springframework.core/src/main/java/org/springframework/core/LocalVariableTableParameterNameDiscoverer.java
+@@ -28,12 +28,12 @@ import java.util.concurrent.ConcurrentHashMap;
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+
+-import org.springframework.asm.ClassReader;
+-import org.springframework.asm.Label;
+-import org.springframework.asm.MethodVisitor;
+-import org.springframework.asm.Opcodes;
+-import org.springframework.asm.Type;
+-import org.springframework.asm.commons.EmptyVisitor;
++import org.objectweb.asm.ClassReader;
++import org.objectweb.asm.Label;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.Opcodes;
++import org.objectweb.asm.Type;
++import org.objectweb.asm.commons.EmptyVisitor;
+ import org.springframework.util.ClassUtils;
+
+ /**
+@@ -111,7 +111,7 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
+ try {
+ ClassReader classReader = new ClassReader(is);
+ Map<Member, String[]> map = new ConcurrentHashMap<Member, String[]>();
+- classReader.accept(new ParameterNameDiscoveringVisitor(clazz, map), false);
++ classReader.accept(new ParameterNameDiscoveringVisitor(clazz, map), 0);
+ return map;
+ }
+ catch (IOException ex) {
+diff --git a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/AnnotationAttributesReadingVisitor.java b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/AnnotationAttributesReadingVisitor.java
+index 7f48ece..d7f91c6 100644
+--- a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/AnnotationAttributesReadingVisitor.java
++++ b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/AnnotationAttributesReadingVisitor.java
+@@ -28,8 +28,8 @@ import java.util.Set;
+
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+-import org.springframework.asm.AnnotationVisitor;
+-import org.springframework.asm.Type;
++import org.objectweb.asm.AnnotationVisitor;
++import org.objectweb.asm.Type;
+ import org.springframework.core.annotation.AnnotationAttributes;
+ import org.springframework.core.annotation.AnnotationUtils;
+ import org.springframework.util.ObjectUtils;
+diff --git a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitor.java b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitor.java
+index 97a4897..9d5bda3 100644
+--- a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitor.java
++++ b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitor.java
+@@ -23,9 +23,9 @@ import java.util.List;
+ import java.util.Map;
+ import java.util.Set;
+
+-import org.springframework.asm.AnnotationVisitor;
+-import org.springframework.asm.MethodVisitor;
+-import org.springframework.asm.Type;
++import org.objectweb.asm.AnnotationVisitor;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.Type;
+ import org.springframework.core.annotation.AnnotationAttributes;
+ import org.springframework.core.type.AnnotationMetadata;
+ import org.springframework.core.type.MethodMetadata;
+diff --git a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/ClassMetadataReadingVisitor.java b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/ClassMetadataReadingVisitor.java
+index d69a75b..e5813f7 100644
+--- a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/ClassMetadataReadingVisitor.java
++++ b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/ClassMetadataReadingVisitor.java
+@@ -19,13 +19,13 @@ package org.springframework.core.type.classreading;
+ import java.util.LinkedHashSet;
+ import java.util.Set;
+
+-import org.springframework.asm.AnnotationVisitor;
+-import org.springframework.asm.Attribute;
+-import org.springframework.asm.ClassVisitor;
+-import org.springframework.asm.FieldVisitor;
+-import org.springframework.asm.MethodVisitor;
+-import org.springframework.asm.Opcodes;
+-import org.springframework.asm.commons.EmptyVisitor;
++import org.objectweb.asm.AnnotationVisitor;
++import org.objectweb.asm.Attribute;
++import org.objectweb.asm.ClassVisitor;
++import org.objectweb.asm.FieldVisitor;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.Opcodes;
++import org.objectweb.asm.commons.EmptyVisitor;
+ import org.springframework.core.type.ClassMetadata;
+ import org.springframework.util.ClassUtils;
+
+diff --git a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/MetadataReader.java b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/MetadataReader.java
+index 99b67d4..f97e437 100644
+--- a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/MetadataReader.java
++++ b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/MetadataReader.java
+@@ -22,7 +22,7 @@ import org.springframework.core.type.ClassMetadata;
+
+ /**
+ * Simple facade for accessing class metadata,
+- * as read by an ASM {@link org.springframework.asm.ClassReader}.
++ * as read by an ASM {@link org.objectweb.asm.ClassReader}.
+ *
+ * @author Juergen Hoeller
+ * @since 2.5
+diff --git a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/MethodMetadataReadingVisitor.java b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/MethodMetadataReadingVisitor.java
+index 4347642..13de27c 100644
+--- a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/MethodMetadataReadingVisitor.java
++++ b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/MethodMetadataReadingVisitor.java
+@@ -19,11 +19,11 @@ package org.springframework.core.type.classreading;
+ import java.util.LinkedHashMap;
+ import java.util.Map;
+
+-import org.springframework.asm.AnnotationVisitor;
+-import org.springframework.asm.MethodAdapter;
+-import org.springframework.asm.Opcodes;
+-import org.springframework.asm.Type;
+-import org.springframework.asm.commons.EmptyVisitor;
++import org.objectweb.asm.AnnotationVisitor;
++import org.objectweb.asm.MethodAdapter;
++import org.objectweb.asm.Opcodes;
++import org.objectweb.asm.Type;
++import org.objectweb.asm.commons.EmptyVisitor;
+ import org.springframework.core.annotation.AnnotationAttributes;
+ import org.springframework.core.type.MethodMetadata;
+ import org.springframework.util.MultiValueMap;
+diff --git a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/SimpleMetadataReader.java b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/SimpleMetadataReader.java
+index 428258c..e2f2d62 100644
+--- a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/SimpleMetadataReader.java
++++ b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/SimpleMetadataReader.java
+@@ -19,14 +19,14 @@ package org.springframework.core.type.classreading;
+ import java.io.IOException;
+ import java.io.InputStream;
+
+-import org.springframework.asm.ClassReader;
++import org.objectweb.asm.ClassReader;
+ import org.springframework.core.io.Resource;
+ import org.springframework.core.type.AnnotationMetadata;
+ import org.springframework.core.type.ClassMetadata;
+
+ /**
+ * {@link MetadataReader} implementation based on an ASM
+- * {@link org.springframework.asm.ClassReader}.
++ * {@link org.objectweb.asm.ClassReader}.
+ *
+ * <p>Package-visible in order to allow for repackaging the ASM library
+ * without effect on users of the <code>core.type</code> package.
+@@ -51,7 +51,7 @@ final class SimpleMetadataReader implements MetadataReader {
+ }
+
+ AnnotationMetadataReadingVisitor visitor = new AnnotationMetadataReadingVisitor(classLoader);
+- classReader.accept(visitor, true);
++ classReader.accept(visitor, ClassReader.SKIP_DEBUG);
+
+ this.annotationMetadata = visitor;
+ // (since AnnotationMetadataReader extends ClassMetadataReadingVisitor)
+@@ -70,4 +70,4 @@ final class SimpleMetadataReader implements MetadataReader {
+ public AnnotationMetadata getAnnotationMetadata() {
+ return this.annotationMetadata;
+ }
+-}
+\ No newline at end of file
++}
+diff --git a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/SimpleMetadataReaderFactory.java b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/SimpleMetadataReaderFactory.java
+index 2d8b40b..c65ba95 100644
+--- a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/SimpleMetadataReaderFactory.java
++++ b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/SimpleMetadataReaderFactory.java
+@@ -25,7 +25,7 @@ import org.springframework.util.ClassUtils;
+
+ /**
+ * Simple implementation of the {@link MetadataReaderFactory} interface,
+- * creating a new ASM {@link org.springframework.asm.ClassReader} for every request.
++ * creating a new ASM {@link org.objectweb.asm.ClassReader} for every request.
+ *
+ * @author Juergen Hoeller
+ * @since 2.5
+diff --git a/org.springframework.core/template.mf b/org.springframework.core/template.mf
+index d964ac3..cf8342a 100644
+--- a/org.springframework.core/template.mf
++++ b/org.springframework.core/template.mf
+@@ -9,7 +9,7 @@ Import-Package:
+ Import-Template:
+ javax.xml.*;version="0";resolution:=optional,
+ org.apache.commons.logging.*;version="[1.1.1, 2.0.0)",
+- org.springframework.asm.*;version=${spring.osgi.range};resolution:=optional,
++ org.objectweb.asm.*;version=${spring.osgi.range};resolution:=optional,
+ org.apache.log4j.*;version="[1.2.15, 2.0.0)";resolution:=optional,
+ joptsimple.*;version="[3.0.0, 4.0.0)";resolution:=optional,
+ org.aspectj.*;version=${aj.osgi.range};resolution:=optional,
+diff --git a/org.springframework.spring-library/pom.xml b/org.springframework.spring-library/pom.xml
+index 2393472..c8b0b60 100644
+--- a/org.springframework.spring-library/pom.xml
++++ b/org.springframework.spring-library/pom.xml
+@@ -69,9 +69,9 @@
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+- <groupId>org.springframework</groupId>
+- <artifactId>spring-asm</artifactId>
+- <version>${project.version}</version>
++ <groupId>asm</groupId>
++ <artifactId>asm</artifactId>
++ <version>3.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+diff --git a/org.springframework.web.portlet/pom.xml b/org.springframework.web.portlet/pom.xml
+index 96306a5..5c970a3 100644
+--- a/org.springframework.web.portlet/pom.xml
++++ b/org.springframework.web.portlet/pom.xml
+@@ -59,9 +59,9 @@
+ </dependency>
+ <!-- common logging dependency is in spring-core -->
+ <dependency>
+- <groupId>org.springframework</groupId>
+- <artifactId>spring-asm</artifactId>
+- <version>${project.version}</version>
++ <groupId>asm</groupId>
++ <artifactId>asm</artifactId>
++ <version>3.3.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+diff --git a/org.springframework.web.servlet/pom.xml b/org.springframework.web.servlet/pom.xml
+index 3af7faa..68e70c9 100644
+--- a/org.springframework.web.servlet/pom.xml
++++ b/org.springframework.web.servlet/pom.xml
+@@ -146,9 +146,9 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>org.springframework</groupId>
+- <artifactId>spring-asm</artifactId>
+- <version>${project.version}</version>
++ <groupId>asm</groupId>
++ <artifactId>asm</artifactId>
++ <version>3.3.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+diff --git a/org.springframework.context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java b/org.springframework.context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java
+index 2bf5a2e..98433c6 100644
+--- a/org.springframework.context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java
++++ b/org.springframework.context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java
+@@ -20,7 +20,7 @@ import java.util.HashMap;
+ import java.util.Iterator;
+ import java.util.Map;
+
+-import net.sf.cglib.asm.Type;
++import org.objectweb.asm.Type;
+ import net.sf.cglib.core.Signature;
+ import net.sf.cglib.proxy.InterfaceMaker;
+ import org.apache.commons.logging.Log;
diff --git a/springframework-dont-use-aws-extension.patch b/springframework-dont-use-aws-extension.patch
new file mode 100644
index 0000000..52cab00
--- /dev/null
+++ b/springframework-dont-use-aws-extension.patch
@@ -0,0 +1,18 @@
+diff --git a/org.springframework.spring-parent/pom.xml b/org.springframework.spring-parent/pom.xml
+index dc98568..655410b 100644
+--- a/org.springframework.spring-parent/pom.xml
++++ b/org.springframework.spring-parent/pom.xml
+@@ -212,13 +212,6 @@
+ </profile>
+ </profiles>
+ <build>
+- <extensions>
+- <extension>
+- <groupId>org.springframework.build.aws</groupId>
+- <artifactId>org.springframework.build.aws.maven</artifactId>
+- <version>2.0.0.RELEASE</version>
+- </extension>
+- </extensions>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
diff --git a/springframework-downgrade-groovy-aid.patch b/springframework-downgrade-groovy-aid.patch
new file mode 100644
index 0000000..edfaa4d
--- /dev/null
+++ b/springframework-downgrade-groovy-aid.patch
@@ -0,0 +1,26 @@
+diff --git a/org.springframework.context/pom.xml b/org.springframework.context/pom.xml
+index 50f448f..381784f 100644
+--- a/org.springframework.context/pom.xml
++++ b/org.springframework.context/pom.xml
+@@ -102,7 +102,7 @@
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+- <artifactId>groovy-all</artifactId>
++ <artifactId>groovy</artifactId>
+ <version>1.6.3</version>
+ <optional>true</optional>
+ </dependency>
+diff --git a/org.springframework.integration-tests/pom.xml b/org.springframework.integration-tests/pom.xml
+index 317b326..86b1b51 100644
+--- a/org.springframework.integration-tests/pom.xml
++++ b/org.springframework.integration-tests/pom.xml
+@@ -280,7 +280,7 @@
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+- <artifactId>org.codehaus.groovy</artifactId>
++ <artifactId>groovy</artifactId>
+ <version>1.6.3</version>
+ <scope>test</scope>
+ </dependency>
diff --git a/springframework-fix-derby-aid.patch b/springframework-fix-derby-aid.patch
new file mode 100644
index 0000000..3fbc25b
--- /dev/null
+++ b/springframework-fix-derby-aid.patch
@@ -0,0 +1,21 @@
+diff --git a/org.springframework.jdbc/pom.xml b/org.springframework.jdbc/pom.xml
+index 63ad868..76ba19c 100644
+--- a/org.springframework.jdbc/pom.xml
++++ b/org.springframework.jdbc/pom.xml
+@@ -75,14 +75,14 @@
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+- <artifactId>com.springsource.org.apache.derby</artifactId>
++ <artifactId>derby</artifactId>
+ <version>10.5.1000001.764942</version>
+ <scope>compile</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+- <artifactId>com.springsource.org.apache.derby.client</artifactId>
++ <artifactId>derbyclient</artifactId>
+ <version>10.5.1000001.764942</version>
+ <scope>compile</scope>
+ <optional>true</optional>
diff --git a/springframework-fix-hibernate-validator-aid.patch b/springframework-fix-hibernate-validator-aid.patch
new file mode 100644
index 0000000..e3adb47
--- /dev/null
+++ b/springframework-fix-hibernate-validator-aid.patch
@@ -0,0 +1,13 @@
+diff --git a/org.springframework.context/pom.xml b/org.springframework.context/pom.xml
+index ff4ad12..eaa420e 100644
+--- a/org.springframework.context/pom.xml
++++ b/org.springframework.context/pom.xml
+@@ -195,7 +195,7 @@
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+- <artifactId>com.springsource.org.hibernate.validator</artifactId>
++ <artifactId>hibernate-validator</artifactId>
+ <version>4.2.0.Final</version>
+ <scope>compile</scope>
+ <optional>true</optional>
diff --git a/springframework-fix-tomcat-catalina-aid.patch b/springframework-fix-tomcat-catalina-aid.patch
new file mode 100644
index 0000000..63858c2
--- /dev/null
+++ b/springframework-fix-tomcat-catalina-aid.patch
@@ -0,0 +1,13 @@
+diff --git a/org.springframework.instrument.tomcat/pom.xml b/org.springframework.instrument.tomcat/pom.xml
+index 312a1b9..ea94040 100644
+--- a/org.springframework.instrument.tomcat/pom.xml
++++ b/org.springframework.instrument.tomcat/pom.xml
+@@ -23,7 +23,7 @@
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+- <artifactId>catalina</artifactId>
++ <artifactId>tomcat-catalina</artifactId>
+ <version>6.0.16</version>
+ <scope>provided</scope>
+ </dependency>
diff --git a/springframework-remove-ehcache-dependency.patch b/springframework-remove-ehcache-dependency.patch
new file mode 100644
index 0000000..9c98cdf
--- /dev/null
+++ b/springframework-remove-ehcache-dependency.patch
@@ -0,0 +1,46 @@
+diff --git a/org.springframework.context/pom.xml b/org.springframework.context/pom.xml
+index b319d1f..ff4ad12 100644
+--- a/org.springframework.context/pom.xml
++++ b/org.springframework.context/pom.xml
+@@ -161,12 +161,6 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>net.sf.ehcache</groupId>
+- <artifactId>ehcache-core</artifactId>
+- <version>2.0.0</version>
+- <optional>true</optional>
+- </dependency>
+- <dependency>
+ <groupId>javax.xml</groupId>
+ <artifactId>jaxrpc-api</artifactId>
+ <version>1.1</version>
+diff --git a/org.springframework.context/template.mf b/org.springframework.context/template.mf
+index 12f4bbb..6e6564b 100644
+--- a/org.springframework.context/template.mf
++++ b/org.springframework.context/template.mf
+@@ -23,7 +23,6 @@ Import-Template:
+ javax.validation.*;version="[1.0.0, 2.0.0)";resolution:=optional,
+ javax.xml.*;version="0";resolution:=optional,
+ net.sf.cglib.*;version="[2.1.3, 3.0.0)";resolution:=optional,
+- net.sf.ehcache.*;version="[1.3.0, 3.0.0)";resolution:=optional,
+ org.aopalliance.*;version="[1.0.0, 2.0.0)";resolution:=optional,
+ org.apache.commons.logging.*;version="[1.1.1, 2.0.0)",
+ org.aspectj.weaver.*;version=${aj.osgi.range};resolution:=optional,
+diff --git a/org.springframework.integration-tests/pom.xml b/org.springframework.integration-tests/pom.xml
+index e164109..b7f58fe 100644
+--- a/org.springframework.integration-tests/pom.xml
++++ b/org.springframework.integration-tests/pom.xml
+@@ -142,12 +142,6 @@
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+- <groupId>net.sourceforge.ehcache</groupId>
+- <artifactId>net.sf.ehcache</artifactId>
+- <version>1.3</version>
+- <scope>test</scope>
+- </dependency>
+- <dependency>
+ <groupId>net.sourceforge.jasperreports</groupId>
+ <artifactId>net.sf.jasperreports</artifactId>
+ <version>2.0.5</version>
diff --git a/springframework-remove-jaxws-api-dependency.patch b/springframework-remove-jaxws-api-dependency.patch
new file mode 100644
index 0000000..b9e2e26
--- /dev/null
+++ b/springframework-remove-jaxws-api-dependency.patch
@@ -0,0 +1,56 @@
+diff --git a/org.springframework.context/pom.xml b/org.springframework.context/pom.xml
+index d2aa43c..9fcfd1f 100644
+--- a/org.springframework.context/pom.xml
++++ b/org.springframework.context/pom.xml
+@@ -76,12 +76,6 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>javax.xml.ws</groupId>
+- <artifactId>jaxws-api</artifactId>
+- <version>2.1-1</version>
+- <optional>true</optional>
+- </dependency>
+- <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib-nodep</artifactId>
+ <version>2.2</version>
+diff --git a/org.springframework.spring-parent/pom.xml b/org.springframework.spring-parent/pom.xml
+index df17e50..dc98568 100644
+--- a/org.springframework.spring-parent/pom.xml
++++ b/org.springframework.spring-parent/pom.xml
+@@ -23,17 +23,6 @@
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+- <groupId>javax.xml.ws</groupId>
+- <artifactId>jaxws-api</artifactId>
+- <version>2.1-1</version>
+- <exclusions>
+- <exclusion>
+- <groupId>javax.jws</groupId>
+- <artifactId>jsr181</artifactId>
+- </exclusion>
+- </exclusions>
+- </dependency>
+- <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>com.springsource.javax.inject</artifactId>
+ <version>1.0.0</version>
+diff --git a/org.springframework.web/pom.xml b/org.springframework.web/pom.xml
+index c877a21..4b943f3 100644
+--- a/org.springframework.web/pom.xml
++++ b/org.springframework.web/pom.xml
+@@ -76,12 +76,6 @@
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+- <groupId>javax.xml.ws</groupId>
+- <artifactId>jaxws-api</artifactId>
+- <version>2.1-1</version>
+- <optional>true</optional>
+- </dependency>
+- <dependency>
+ <groupId>aopalliance</groupId>
+ <artifactId>aopalliance</artifactId>
+ <version>1.0</version>
diff --git a/springframework-remove-jruby-dependency.patch b/springframework-remove-jruby-dependency.patch
new file mode 100644
index 0000000..b18cf53
--- /dev/null
+++ b/springframework-remove-jruby-dependency.patch
@@ -0,0 +1,34 @@
+diff --git a/org.springframework.context/pom.xml b/org.springframework.context/pom.xml
+index 381784f..b319d1f 100644
+--- a/org.springframework.context/pom.xml
++++ b/org.springframework.context/pom.xml
+@@ -107,12 +107,6 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>org.jruby</groupId>
+- <artifactId>jruby</artifactId>
+- <version>1.4.0</version>
+- <optional>true</optional>
+- </dependency>
+- <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>3.0</version>
+diff --git a/org.springframework.integration-tests/pom.xml b/org.springframework.integration-tests/pom.xml
+index 86b1b51..e164109 100644
+--- a/org.springframework.integration-tests/pom.xml
++++ b/org.springframework.integration-tests/pom.xml
+@@ -356,12 +356,6 @@
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+- <groupId>org.jruby</groupId>
+- <artifactId>org.jruby</artifactId>
+- <version>1.2</version>
+- <optional>true</optional>
+- </dependency>
+- <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>2.2.3</version>
diff --git a/springframework-remove-jsr166-dependency.patch b/springframework-remove-jsr166-dependency.patch
new file mode 100644
index 0000000..c91564a
--- /dev/null
+++ b/springframework-remove-jsr166-dependency.patch
@@ -0,0 +1,17 @@
+diff --git a/org.springframework.context/pom.xml b/org.springframework.context/pom.xml
+index eaa420e..6cc0c8e 100644
+--- a/org.springframework.context/pom.xml
++++ b/org.springframework.context/pom.xml
+@@ -220,12 +220,6 @@
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
+ </dependency>
+- <dependency>
+- <groupId>org.codehaus.jsr166-mirror</groupId>
+- <artifactId>jsr166</artifactId>
+- <version>1.7.0</version>
+- <scope>provided</scope>
+- </dependency>
+ </dependencies>
+ <build>
+ <pluginManagement>
diff --git a/springframework-remove-websphere-uow-dependency.patch b/springframework-remove-websphere-uow-dependency.patch
new file mode 100644
index 0000000..66c29e4
--- /dev/null
+++ b/springframework-remove-websphere-uow-dependency.patch
@@ -0,0 +1,1053 @@
+commit 6cd0529f68f63018b57ca510d2d4b4f111e0432e
+Author: Juan Hernandez <juan.hernandez at redhat.com>
+Date: Sun Mar 4 00:39:21 2012 +0100
+
+ Remove dependency on WebSphere UOW
+
+diff --git a/org.springframework.integration-tests/pom.xml b/org.springframework.integration-tests/pom.xml
+index b7f58fe..9190c19 100644
+--- a/org.springframework.integration-tests/pom.xml
++++ b/org.springframework.integration-tests/pom.xml
+@@ -28,12 +28,6 @@
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+- <groupId>com.ibm.websphere</groupId>
+- <artifactId>com.ibm.websphere.uow</artifactId>
+- <version>6.0.2.17</version>
+- <scope>test</scope>
+- </dependency>
+- <dependency>
+ <groupId>com.opensymphony.quartz</groupId>
+ <artifactId>org.quartz</artifactId>
+ <version>1.6.2</version>
+diff --git a/org.springframework.transaction/pom.xml b/org.springframework.transaction/pom.xml
+index d83b65f..db2acfc 100644
+--- a/org.springframework.transaction/pom.xml
++++ b/org.springframework.transaction/pom.xml
+@@ -22,14 +22,6 @@
+ </licenses>
+ <dependencies>
+ <dependency>
+- <groupId>com.ibm.websphere</groupId>
+- <artifactId>com.springsource.com.ibm.websphere.uow</artifactId>
+- <version>6.0.2.17</version>
+- <type>jar</type>
+- <scope>provided</scope>
+- <optional>true</optional>
+- </dependency>
+- <dependency>
+ <groupId>javax.ejb</groupId>
+ <artifactId>com.springsource.javax.ejb</artifactId>
+ <version>3.0.0</version>
+diff --git a/org.springframework.transaction/src/main/java/org/springframework/transaction/jta/WebSphereUowTransactionManager.java b/org.springframework.transaction/src/main/java/org/springframework/transaction/jta/WebSphereUowTransactionManager.java
+deleted file mode 100644
+index e2349a4..0000000
+--- a/org.springframework.transaction/src/main/java/org/springframework/transaction/jta/WebSphereUowTransactionManager.java
++++ /dev/null
+@@ -1,370 +0,0 @@
+-/*
+- * Copyright 2002-2010 the original author or authors.
+- *
+- * Licensed under the Apache License, Version 2.0 (the "License");
+- * you may not use this file except in compliance with the License.
+- * You may obtain a copy of the License at
+- *
+- * http://www.apache.org/licenses/LICENSE-2.0
+- *
+- * Unless required by applicable law or agreed to in writing, software
+- * distributed under the License is distributed on an "AS IS" BASIS,
+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+- * See the License for the specific language governing permissions and
+- * limitations under the License.
+- */
+-
+-package org.springframework.transaction.jta;
+-
+-import java.util.List;
+-import javax.naming.NamingException;
+-
+-import com.ibm.websphere.uow.UOWSynchronizationRegistry;
+-import com.ibm.wsspi.uow.UOWAction;
+-import com.ibm.wsspi.uow.UOWActionException;
+-import com.ibm.wsspi.uow.UOWException;
+-import com.ibm.wsspi.uow.UOWManager;
+-import com.ibm.wsspi.uow.UOWManagerFactory;
+-
+-import org.springframework.transaction.IllegalTransactionStateException;
+-import org.springframework.transaction.InvalidTimeoutException;
+-import org.springframework.transaction.NestedTransactionNotSupportedException;
+-import org.springframework.transaction.TransactionDefinition;
+-import org.springframework.transaction.TransactionException;
+-import org.springframework.transaction.TransactionSystemException;
+-import org.springframework.transaction.support.CallbackPreferringPlatformTransactionManager;
+-import org.springframework.transaction.support.DefaultTransactionDefinition;
+-import org.springframework.transaction.support.DefaultTransactionStatus;
+-import org.springframework.transaction.support.TransactionCallback;
+-import org.springframework.transaction.support.TransactionSynchronization;
+-import org.springframework.transaction.support.TransactionSynchronizationManager;
+-import org.springframework.util.ReflectionUtils;
+-
+-/**
+- * WebSphere-specific PlatformTransactionManager implementation that delegates
+- * to a {@link com.ibm.wsspi.uow.UOWManager} instance, obtained from WebSphere's
+- * JNDI environment. This allows Spring to leverage the full power of the WebSphere
+- * transaction coordinator, including transaction suspension, in a manner that is
+- * perfectly compliant with officially supported WebSphere API.
+- *
+- * <p>The {@link CallbackPreferringPlatformTransactionManager} interface
+- * implemented by this class indicates that callers should preferably pass in
+- * a {@link TransactionCallback} through the {@link #execute} method, which
+- * will be handled through the callback-based WebSphere UOWManager API instead
+- * of through standard JTA API (UserTransaction / TransactionManager). This avoids
+- * the use of the non-public <code>javax.transaction.TransactionManager</code>
+- * API on WebSphere, staying within supported WebSphere API boundaries.
+- *
+- * <p>This transaction manager implementation derives from Spring's standard
+- * {@link JtaTransactionManager}, inheriting the capability to support programmatic
+- * transaction demarcation via <code>getTransaction</code> / <code>commit</code> /
+- * <code>rollback</code> calls through a JTA UserTransaction handle, for callers
+- * that do not use the TransactionCallback-based {@link #execute} method. However,
+- * transaction suspension is <i>not</i> supported in this <code>getTransaction</code>
+- * style (unless you explicitly specify a {@link #setTransactionManager} reference,
+- * despite the official WebSphere recommendations). Use the {@link #execute} style
+- * for any code that might require transaction suspension.
+- *
+- * <p>This transaction manager is compatible with WebSphere 6.1.0.9 and above.
+- * The default JNDI location for the UOWManager is "java:comp/websphere/UOWManager".
+- * If the location happens to differ according to your WebSphere documentation,
+- * simply specify the actual location through this transaction manager's
+- * "uowManagerName" bean property.
+- *
+- * @author Juergen Hoeller
+- * @since 2.5
+- * @see #setUowManager
+- * @see #setUowManagerName
+- * @see com.ibm.wsspi.uow.UOWManager
+- */
+-public class WebSphereUowTransactionManager extends JtaTransactionManager
+- implements CallbackPreferringPlatformTransactionManager {
+-
+- /**
+- * Default JNDI location for the WebSphere UOWManager.
+- * @see #setUowManagerName
+- */
+- public static final String DEFAULT_UOW_MANAGER_NAME = "java:comp/websphere/UOWManager";
+-
+-
+- private UOWManager uowManager;
+-
+- private String uowManagerName;
+-
+-
+- /**
+- * Create a new WebSphereUowTransactionManager.
+- */
+- public WebSphereUowTransactionManager() {
+- setAutodetectTransactionManager(false);
+- }
+-
+- /**
+- * Create a new WebSphereUowTransactionManager for the given UOWManager.
+- * @param uowManager the WebSphere UOWManager to use as direct reference
+- */
+- public WebSphereUowTransactionManager(UOWManager uowManager) {
+- this();
+- this.uowManager = uowManager;
+- }
+-
+-
+- /**
+- * Set the WebSphere UOWManager to use as direct reference.
+- * <p>Typically just used for test setups; in a J2EE environment,
+- * the UOWManager will always be fetched from JNDI.
+- * @see #setUserTransactionName
+- */
+- public void setUowManager(UOWManager uowManager) {
+- this.uowManager = uowManager;
+- }
+-
+- /**
+- * Set the JNDI name of the WebSphere UOWManager.
+- * The default "java:comp/websphere/UOWManager" is used if not set.
+- * @see #DEFAULT_USER_TRANSACTION_NAME
+- * @see #setUowManager
+- */
+- public void setUowManagerName(String uowManagerName) {
+- this.uowManagerName = uowManagerName;
+- }
+-
+-
+- @Override
+- public void afterPropertiesSet() throws TransactionSystemException {
+- initUserTransactionAndTransactionManager();
+-
+- // Fetch UOWManager handle from JNDI, if necessary.
+- if (this.uowManager == null) {
+- if (this.uowManagerName != null) {
+- this.uowManager = lookupUowManager(this.uowManagerName);
+- }
+- else {
+- this.uowManager = lookupDefaultUowManager();
+- }
+- }
+- }
+-
+- /**
+- * Look up the WebSphere UOWManager in JNDI via the configured name.
+- * @param uowManagerName the JNDI name of the UOWManager
+- * @return the UOWManager object
+- * @throws TransactionSystemException if the JNDI lookup failed
+- * @see #setJndiTemplate
+- * @see #setUowManagerName
+- */
+- protected UOWManager lookupUowManager(String uowManagerName) throws TransactionSystemException {
+- try {
+- if (logger.isDebugEnabled()) {
+- logger.debug("Retrieving WebSphere UOWManager from JNDI location [" + uowManagerName + "]");
+- }
+- return getJndiTemplate().lookup(uowManagerName, UOWManager.class);
+- }
+- catch (NamingException ex) {
+- throw new TransactionSystemException(
+- "WebSphere UOWManager is not available at JNDI location [" + uowManagerName + "]", ex);
+- }
+- }
+-
+- /**
+- * Obtain the WebSphere UOWManager from the default JNDI location
+- * "java:comp/websphere/UOWManager".
+- * @return the UOWManager object
+- * @throws TransactionSystemException if the JNDI lookup failed
+- * @see #setJndiTemplate
+- */
+- protected UOWManager lookupDefaultUowManager() throws TransactionSystemException {
+- try {
+- logger.debug("Retrieving WebSphere UOWManager from default JNDI location [" + DEFAULT_UOW_MANAGER_NAME + "]");
+- return getJndiTemplate().lookup(DEFAULT_UOW_MANAGER_NAME, UOWManager.class);
+- }
+- catch (NamingException ex) {
+- logger.debug("WebSphere UOWManager is not available at default JNDI location [" +
+- DEFAULT_UOW_MANAGER_NAME + "] - falling back to UOWManagerFactory lookup");
+- return UOWManagerFactory.getUOWManager();
+- }
+- }
+-
+- /**
+- * Registers the synchronizations as interposed JTA Synchronization on the UOWManager.
+- */
+- @Override
+- protected void doRegisterAfterCompletionWithJtaTransaction(
+- JtaTransactionObject txObject, List<TransactionSynchronization> synchronizations) {
+-
+- this.uowManager.registerInterposedSynchronization(new JtaAfterCompletionSynchronization(synchronizations));
+- }
+-
+- /**
+- * Returns <code>true</code> since WebSphere ResourceAdapters (as exposed in JNDI)
+- * implicitly perform transaction enlistment if the MessageEndpointFactory's
+- * <code>isDeliveryTransacted</code> method returns <code>true</code>.
+- * In that case we'll simply skip the {@link #createTransaction} call.
+- * @see javax.resource.spi.endpoint.MessageEndpointFactory#isDeliveryTransacted
+- * @see org.springframework.jca.endpoint.AbstractMessageEndpointFactory
+- * @see TransactionFactory#createTransaction
+- */
+- @Override
+- public boolean supportsResourceAdapterManagedTransactions() {
+- return true;
+- }
+-
+-
+- public <T> T execute(TransactionDefinition definition, TransactionCallback<T> callback) throws TransactionException {
+- if (definition == null) {
+- // Use defaults if no transaction definition given.
+- definition = new DefaultTransactionDefinition();
+- }
+-
+- if (definition.getTimeout() < TransactionDefinition.TIMEOUT_DEFAULT) {
+- throw new InvalidTimeoutException("Invalid transaction timeout", definition.getTimeout());
+- }
+- int pb = definition.getPropagationBehavior();
+- boolean existingTx = (this.uowManager.getUOWStatus() != UOWSynchronizationRegistry.UOW_STATUS_NONE &&
+- this.uowManager.getUOWType() != UOWSynchronizationRegistry.UOW_TYPE_LOCAL_TRANSACTION);
+-
+- int uowType = UOWSynchronizationRegistry.UOW_TYPE_GLOBAL_TRANSACTION;
+- boolean joinTx = false;
+- boolean newSynch = false;
+-
+- if (existingTx) {
+- if (pb == TransactionDefinition.PROPAGATION_NEVER) {
+- throw new IllegalTransactionStateException(
+- "Transaction propagation 'never' but existing transaction found");
+- }
+- if (pb == TransactionDefinition.PROPAGATION_NESTED) {
+- throw new NestedTransactionNotSupportedException(
+- "Transaction propagation 'nested' not supported for WebSphere UOW transactions");
+- }
+- if (pb == TransactionDefinition.PROPAGATION_SUPPORTS ||
+- pb == TransactionDefinition.PROPAGATION_REQUIRED || pb == TransactionDefinition.PROPAGATION_MANDATORY) {
+- joinTx = true;
+- newSynch = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
+- }
+- else if (pb == TransactionDefinition.PROPAGATION_NOT_SUPPORTED) {
+- uowType = UOWSynchronizationRegistry.UOW_TYPE_LOCAL_TRANSACTION;
+- newSynch = (getTransactionSynchronization() == SYNCHRONIZATION_ALWAYS);
+- }
+- else {
+- newSynch = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
+- }
+- }
+- else {
+- if (pb == TransactionDefinition.PROPAGATION_MANDATORY) {
+- throw new IllegalTransactionStateException(
+- "Transaction propagation 'mandatory' but no existing transaction found");
+- }
+- if (pb == TransactionDefinition.PROPAGATION_SUPPORTS ||
+- pb == TransactionDefinition.PROPAGATION_NOT_SUPPORTED || pb == TransactionDefinition.PROPAGATION_NEVER) {
+- uowType = UOWSynchronizationRegistry.UOW_TYPE_LOCAL_TRANSACTION;
+- newSynch = (getTransactionSynchronization() == SYNCHRONIZATION_ALWAYS);
+- }
+- else {
+- newSynch = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
+- }
+- }
+-
+- boolean debug = logger.isDebugEnabled();
+- if (debug) {
+- logger.debug("Creating new transaction with name [" + definition.getName() + "]: " + definition);
+- }
+- SuspendedResourcesHolder suspendedResources = (!joinTx ? suspend(null) : null);
+- try {
+- if (definition.getTimeout() > TransactionDefinition.TIMEOUT_DEFAULT) {
+- this.uowManager.setUOWTimeout(uowType, definition.getTimeout());
+- }
+- if (debug) {
+- logger.debug("Invoking WebSphere UOW action: type=" + uowType + ", join=" + joinTx);
+- }
+- UOWActionAdapter<T> action = new UOWActionAdapter<T>(
+- definition, callback, (uowType == UOWManager.UOW_TYPE_GLOBAL_TRANSACTION), !joinTx, newSynch, debug);
+- this.uowManager.runUnderUOW(uowType, joinTx, action);
+- if (debug) {
+- logger.debug("Returned from WebSphere UOW action: type=" + uowType + ", join=" + joinTx);
+- }
+- return action.getResult();
+- }
+- catch (UOWException ex) {
+- throw new TransactionSystemException("UOWManager transaction processing failed", ex);
+- }
+- catch (UOWActionException ex) {
+- throw new TransactionSystemException("UOWManager threw unexpected UOWActionException", ex);
+- }
+- finally {
+- if (suspendedResources != null) {
+- resume(null, suspendedResources);
+- }
+- }
+- }
+-
+-
+- /**
+- * Adapter that executes the given Spring transaction within the WebSphere UOWAction shape.
+- */
+- private class UOWActionAdapter<T> implements UOWAction {
+-
+- private final TransactionDefinition definition;
+-
+- private final TransactionCallback<T> callback;
+-
+- private final boolean actualTransaction;
+-
+- private final boolean newTransaction;
+-
+- private final boolean newSynchronization;
+-
+- private boolean debug;
+-
+- private T result;
+-
+- private Throwable exception;
+-
+- public UOWActionAdapter(TransactionDefinition definition, TransactionCallback<T> callback,
+- boolean actualTransaction, boolean newTransaction, boolean newSynchronization, boolean debug) {
+- this.definition = definition;
+- this.callback = callback;
+- this.actualTransaction = actualTransaction;
+- this.newTransaction = newTransaction;
+- this.newSynchronization = newSynchronization;
+- this.debug = debug;
+- }
+-
+- public void run() {
+- DefaultTransactionStatus status = prepareTransactionStatus(
+- this.definition, (this.actualTransaction ? this : null),
+- this.newTransaction, this.newSynchronization, this.debug, null);
+- try {
+- this.result = this.callback.doInTransaction(status);
+- triggerBeforeCommit(status);
+- }
+- catch (Throwable ex) {
+- this.exception = ex;
+- uowManager.setRollbackOnly();
+- }
+- finally {
+- if (status.isLocalRollbackOnly()) {
+- if (status.isDebug()) {
+- logger.debug("Transactional code has requested rollback");
+- }
+- uowManager.setRollbackOnly();
+- }
+- triggerBeforeCompletion(status);
+- if (status.isNewSynchronization()) {
+- List<TransactionSynchronization> synchronizations = TransactionSynchronizationManager.getSynchronizations();
+- TransactionSynchronizationManager.clear();
+- if (!synchronizations.isEmpty()) {
+- uowManager.registerInterposedSynchronization(new JtaAfterCompletionSynchronization(synchronizations));
+- }
+- }
+- }
+- }
+-
+- public T getResult() {
+- if (this.exception != null) {
+- ReflectionUtils.rethrowRuntimeException(this.exception);
+- }
+- return this.result;
+- }
+- }
+-
+-}
+diff --git a/org.springframework.transaction/src/test/java/org/springframework/transaction/jta/WebSphereUowTransactionManagerTests.java b/org.springframework.transaction/src/test/java/org/springframework/transaction/jta/WebSphereUowTransactionManagerTests.java
+deleted file mode 100644
+index b6dbf51..0000000
+--- a/org.springframework.transaction/src/test/java/org/springframework/transaction/jta/WebSphereUowTransactionManagerTests.java
++++ /dev/null
+@@ -1,629 +0,0 @@
+-/*
+- * Copyright 2002-2010 the original author or authors.
+- *
+- * Licensed under the Apache License, Version 2.0 (the "License");
+- * you may not use this file except in compliance with the License.
+- * You may obtain a copy of the License at
+- *
+- * http://www.apache.org/licenses/LICENSE-2.0
+- *
+- * Unless required by applicable law or agreed to in writing, software
+- * distributed under the License is distributed on an "AS IS" BASIS,
+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+- * See the License for the specific language governing permissions and
+- * limitations under the License.
+- */
+-
+-package org.springframework.transaction.jta;
+-
+-import javax.transaction.RollbackException;
+-import javax.transaction.Status;
+-import javax.transaction.UserTransaction;
+-
+-import com.ibm.wsspi.uow.UOWAction;
+-import com.ibm.wsspi.uow.UOWException;
+-import com.ibm.wsspi.uow.UOWManager;
+-import junit.framework.TestCase;
+-import org.easymock.MockControl;
+-
+-import org.springframework.dao.OptimisticLockingFailureException;
+-import org.springframework.mock.jndi.ExpectedLookupTemplate;
+-import org.springframework.transaction.IllegalTransactionStateException;
+-import org.springframework.transaction.NestedTransactionNotSupportedException;
+-import org.springframework.transaction.TransactionDefinition;
+-import org.springframework.transaction.TransactionStatus;
+-import org.springframework.transaction.TransactionSystemException;
+-import org.springframework.transaction.support.DefaultTransactionDefinition;
+-import org.springframework.transaction.support.TransactionCallback;
+-import org.springframework.transaction.support.TransactionSynchronizationManager;
+-
+-/**
+- * @author Juergen Hoeller
+- */
+-public class WebSphereUowTransactionManagerTests extends TestCase {
+-
+- public void testUowManagerFoundInJndi() {
+- MockUOWManager manager = new MockUOWManager();
+- ExpectedLookupTemplate jndiTemplate =
+- new ExpectedLookupTemplate(WebSphereUowTransactionManager.DEFAULT_UOW_MANAGER_NAME, manager);
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager();
+- ptm.setJndiTemplate(jndiTemplate);
+- ptm.afterPropertiesSet();
+-
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- return "result";
+- }
+- }));
+-
+- assertEquals(UOWManager.UOW_TYPE_GLOBAL_TRANSACTION, manager.getUOWType());
+- assertFalse(manager.getJoined());
+- assertFalse(manager.getRollbackOnly());
+- }
+-
+- public void testUowManagerAndUserTransactionFoundInJndi() throws Exception {
+- MockControl utControl = MockControl.createControl(UserTransaction.class);
+- UserTransaction ut = (UserTransaction) utControl.getMock();
+- ut.getStatus();
+- utControl.setReturnValue(Status.STATUS_NO_TRANSACTION, 1);
+- ut.getStatus();
+- utControl.setReturnValue(Status.STATUS_ACTIVE, 2);
+- ut.begin();
+- utControl.setVoidCallable(1);
+- ut.commit();
+- utControl.setVoidCallable(1);
+- utControl.replay();
+-
+- MockUOWManager manager = new MockUOWManager();
+- ExpectedLookupTemplate jndiTemplate = new ExpectedLookupTemplate();
+- jndiTemplate.addObject(WebSphereUowTransactionManager.DEFAULT_USER_TRANSACTION_NAME, ut);
+- jndiTemplate.addObject(WebSphereUowTransactionManager.DEFAULT_UOW_MANAGER_NAME, manager);
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager();
+- ptm.setJndiTemplate(jndiTemplate);
+- ptm.afterPropertiesSet();
+-
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- TransactionStatus ts = ptm.getTransaction(definition);
+- ptm.commit(ts);
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- return "result";
+- }
+- }));
+-
+- assertEquals(UOWManager.UOW_TYPE_GLOBAL_TRANSACTION, manager.getUOWType());
+- assertFalse(manager.getJoined());
+- assertFalse(manager.getRollbackOnly());
+- }
+-
+- public void testPropagationMandatoryFailsInCaseOfNoExistingTransaction() {
+- MockUOWManager manager = new MockUOWManager();
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_MANDATORY);
+-
+- try {
+- ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- return "result";
+- }
+- });
+- fail("Should have thrown IllegalTransactionStateException");
+- }
+- catch (IllegalTransactionStateException ex) {
+- // expected
+- }
+- }
+-
+- public void testNewTransactionSynchronizationUsingPropagationSupports() {
+- doTestNewTransactionSynchronization(
+- TransactionDefinition.PROPAGATION_SUPPORTS, WebSphereUowTransactionManager.SYNCHRONIZATION_ALWAYS);
+- }
+-
+- public void testNewTransactionSynchronizationUsingPropagationNotSupported() {
+- doTestNewTransactionSynchronization(
+- TransactionDefinition.PROPAGATION_NOT_SUPPORTED, WebSphereUowTransactionManager.SYNCHRONIZATION_ALWAYS);
+- }
+-
+- public void testNewTransactionSynchronizationUsingPropagationNever() {
+- doTestNewTransactionSynchronization(
+- TransactionDefinition.PROPAGATION_NEVER, WebSphereUowTransactionManager.SYNCHRONIZATION_ALWAYS);
+- }
+-
+- public void testNewTransactionSynchronizationUsingPropagationSupportsAndSynchOnActual() {
+- doTestNewTransactionSynchronization(
+- TransactionDefinition.PROPAGATION_SUPPORTS, WebSphereUowTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
+- }
+-
+- public void testNewTransactionSynchronizationUsingPropagationNotSupportedAndSynchOnActual() {
+- doTestNewTransactionSynchronization(
+- TransactionDefinition.PROPAGATION_NOT_SUPPORTED, WebSphereUowTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
+- }
+-
+- public void testNewTransactionSynchronizationUsingPropagationNeverAndSynchOnActual() {
+- doTestNewTransactionSynchronization(
+- TransactionDefinition.PROPAGATION_NEVER, WebSphereUowTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
+- }
+-
+- public void testNewTransactionSynchronizationUsingPropagationSupportsAndSynchNever() {
+- doTestNewTransactionSynchronization(
+- TransactionDefinition.PROPAGATION_SUPPORTS, WebSphereUowTransactionManager.SYNCHRONIZATION_NEVER);
+- }
+-
+- public void testNewTransactionSynchronizationUsingPropagationNotSupportedAndSynchNever() {
+- doTestNewTransactionSynchronization(
+- TransactionDefinition.PROPAGATION_NOT_SUPPORTED, WebSphereUowTransactionManager.SYNCHRONIZATION_NEVER);
+- }
+-
+- public void testNewTransactionSynchronizationUsingPropagationNeverAndSynchNever() {
+- doTestNewTransactionSynchronization(
+- TransactionDefinition.PROPAGATION_NEVER, WebSphereUowTransactionManager.SYNCHRONIZATION_NEVER);
+- }
+-
+- private void doTestNewTransactionSynchronization(int propagationBehavior, final int synchMode) {
+- MockUOWManager manager = new MockUOWManager();
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- ptm.setTransactionSynchronization(synchMode);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- definition.setPropagationBehavior(propagationBehavior);
+- definition.setReadOnly(true);
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- if (synchMode == WebSphereUowTransactionManager.SYNCHRONIZATION_ALWAYS) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertTrue(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- }
+- else {
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- }
+- return "result";
+- }
+- }));
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(0, manager.getUOWTimeout());
+- assertEquals(UOWManager.UOW_TYPE_LOCAL_TRANSACTION, manager.getUOWType());
+- assertFalse(manager.getJoined());
+- assertFalse(manager.getRollbackOnly());
+- }
+-
+- public void testNewTransactionWithCommitUsingPropagationRequired() {
+- doTestNewTransactionWithCommit(
+- TransactionDefinition.PROPAGATION_REQUIRED, WebSphereUowTransactionManager.SYNCHRONIZATION_ALWAYS);
+- }
+-
+- public void testNewTransactionWithCommitUsingPropagationRequiresNew() {
+- doTestNewTransactionWithCommit(
+- TransactionDefinition.PROPAGATION_REQUIRES_NEW, WebSphereUowTransactionManager.SYNCHRONIZATION_ALWAYS);
+- }
+-
+- public void testNewTransactionWithCommitUsingPropagationNested() {
+- doTestNewTransactionWithCommit(
+- TransactionDefinition.PROPAGATION_NESTED, WebSphereUowTransactionManager.SYNCHRONIZATION_ALWAYS);
+- }
+-
+- public void testNewTransactionWithCommitUsingPropagationRequiredAndSynchOnActual() {
+- doTestNewTransactionWithCommit(
+- TransactionDefinition.PROPAGATION_REQUIRED, WebSphereUowTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
+- }
+-
+- public void testNewTransactionWithCommitUsingPropagationRequiresNewAndSynchOnActual() {
+- doTestNewTransactionWithCommit(
+- TransactionDefinition.PROPAGATION_REQUIRES_NEW, WebSphereUowTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
+- }
+-
+- public void testNewTransactionWithCommitUsingPropagationNestedAndSynchOnActual() {
+- doTestNewTransactionWithCommit(
+- TransactionDefinition.PROPAGATION_NESTED, WebSphereUowTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
+- }
+-
+- public void testNewTransactionWithCommitUsingPropagationRequiredAndSynchNever() {
+- doTestNewTransactionWithCommit(
+- TransactionDefinition.PROPAGATION_REQUIRED, WebSphereUowTransactionManager.SYNCHRONIZATION_NEVER);
+- }
+-
+- public void testNewTransactionWithCommitUsingPropagationRequiresNewAndSynchNever() {
+- doTestNewTransactionWithCommit(
+- TransactionDefinition.PROPAGATION_REQUIRES_NEW, WebSphereUowTransactionManager.SYNCHRONIZATION_NEVER);
+- }
+-
+- public void testNewTransactionWithCommitUsingPropagationNestedAndSynchNever() {
+- doTestNewTransactionWithCommit(
+- TransactionDefinition.PROPAGATION_NESTED, WebSphereUowTransactionManager.SYNCHRONIZATION_NEVER);
+- }
+-
+- private void doTestNewTransactionWithCommit(int propagationBehavior, final int synchMode) {
+- MockUOWManager manager = new MockUOWManager();
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- ptm.setTransactionSynchronization(synchMode);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- definition.setPropagationBehavior(propagationBehavior);
+- definition.setReadOnly(true);
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- if (synchMode != WebSphereUowTransactionManager.SYNCHRONIZATION_NEVER) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertTrue(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- }
+- else {
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- }
+- return "result";
+- }
+- }));
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(0, manager.getUOWTimeout());
+- assertEquals(UOWManager.UOW_TYPE_GLOBAL_TRANSACTION, manager.getUOWType());
+- assertFalse(manager.getJoined());
+- assertFalse(manager.getRollbackOnly());
+- }
+-
+- public void testNewTransactionWithCommitAndTimeout() {
+- MockUOWManager manager = new MockUOWManager();
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- definition.setTimeout(10);
+- definition.setReadOnly(true);
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertTrue(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- return "result";
+- }
+- }));
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(10, manager.getUOWTimeout());
+- assertEquals(UOWManager.UOW_TYPE_GLOBAL_TRANSACTION, manager.getUOWType());
+- assertFalse(manager.getJoined());
+- assertFalse(manager.getRollbackOnly());
+- }
+-
+- public void testNewTransactionWithCommitException() {
+- final RollbackException rex = new RollbackException();
+- MockUOWManager manager = new MockUOWManager() {
+- public void runUnderUOW(int type, boolean join, UOWAction action) throws UOWException {
+- throw new UOWException(rex);
+- }
+- };
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- try {
+- ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- return "result";
+- }
+- });
+- fail("Should have thrown TransactionSystemException");
+- }
+- catch (TransactionSystemException ex) {
+- // expected
+- assertTrue(ex.getCause() instanceof UOWException);
+- assertSame(rex, ex.getRootCause());
+- assertSame(rex, ex.getMostSpecificCause());
+- }
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(0, manager.getUOWTimeout());
+- }
+-
+- public void testNewTransactionWithRollback() {
+- MockUOWManager manager = new MockUOWManager();
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- try {
+- ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- throw new OptimisticLockingFailureException("");
+- }
+- });
+- fail("Should have thrown OptimisticLockingFailureException");
+- }
+- catch (OptimisticLockingFailureException ex) {
+- // expected
+- }
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(0, manager.getUOWTimeout());
+- assertEquals(UOWManager.UOW_TYPE_GLOBAL_TRANSACTION, manager.getUOWType());
+- assertFalse(manager.getJoined());
+- assertTrue(manager.getRollbackOnly());
+- }
+-
+- public void testNewTransactionWithRollbackOnly() {
+- MockUOWManager manager = new MockUOWManager();
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- status.setRollbackOnly();
+- return "result";
+- }
+- }));
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(0, manager.getUOWTimeout());
+- assertEquals(UOWManager.UOW_TYPE_GLOBAL_TRANSACTION, manager.getUOWType());
+- assertFalse(manager.getJoined());
+- assertTrue(manager.getRollbackOnly());
+- }
+-
+- public void testExistingNonSpringTransaction() {
+- MockUOWManager manager = new MockUOWManager();
+- manager.setUOWStatus(UOWManager.UOW_STATUS_ACTIVE);
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- return "result";
+- }
+- }));
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(0, manager.getUOWTimeout());
+- assertEquals(UOWManager.UOW_TYPE_GLOBAL_TRANSACTION, manager.getUOWType());
+- assertTrue(manager.getJoined());
+- assertFalse(manager.getRollbackOnly());
+- }
+-
+- public void testPropagationNeverFailsInCaseOfExistingTransaction() {
+- MockUOWManager manager = new MockUOWManager();
+- manager.setUOWStatus(UOWManager.UOW_STATUS_ACTIVE);
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_NEVER);
+-
+- try {
+- ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- return "result";
+- }
+- });
+- fail("Should have thrown IllegalTransactionStateException");
+- }
+- catch (IllegalTransactionStateException ex) {
+- // expected
+- }
+- }
+-
+- public void testPropagationNestedFailsInCaseOfExistingTransaction() {
+- MockUOWManager manager = new MockUOWManager();
+- manager.setUOWStatus(UOWManager.UOW_STATUS_ACTIVE);
+- WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED);
+-
+- try {
+- ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- return "result";
+- }
+- });
+- fail("Should have thrown NestedTransactionNotSupportedException");
+- }
+- catch (NestedTransactionNotSupportedException ex) {
+- // expected
+- }
+- }
+-
+- public void testExistingTransactionWithParticipationUsingPropagationRequired() {
+- doTestExistingTransactionWithParticipation(TransactionDefinition.PROPAGATION_REQUIRED);
+- }
+-
+- public void testExistingTransactionWithParticipationUsingPropagationSupports() {
+- doTestExistingTransactionWithParticipation(TransactionDefinition.PROPAGATION_SUPPORTS);
+- }
+-
+- public void testExistingTransactionWithParticipationUsingPropagationMandatory() {
+- doTestExistingTransactionWithParticipation(TransactionDefinition.PROPAGATION_MANDATORY);
+- }
+-
+- private void doTestExistingTransactionWithParticipation(int propagationBehavior) {
+- MockUOWManager manager = new MockUOWManager();
+- final WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- final DefaultTransactionDefinition definition2 = new DefaultTransactionDefinition();
+- definition2.setPropagationBehavior(propagationBehavior);
+- definition2.setReadOnly(true);
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- assertEquals("result2", ptm.execute(definition2, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- return "result2";
+- }
+- }));
+- return "result";
+- }
+- }));
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(0, manager.getUOWTimeout());
+- assertEquals(UOWManager.UOW_TYPE_GLOBAL_TRANSACTION, manager.getUOWType());
+- assertTrue(manager.getJoined());
+- assertFalse(manager.getRollbackOnly());
+- }
+-
+- public void testExistingTransactionWithSuspensionUsingPropagationRequiresNew() {
+- doTestExistingTransactionWithSuspension(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
+- }
+-
+- public void testExistingTransactionWithSuspensionUsingPropagationNotSupported() {
+- doTestExistingTransactionWithSuspension(TransactionDefinition.PROPAGATION_NOT_SUPPORTED);
+- }
+-
+- private void doTestExistingTransactionWithSuspension(final int propagationBehavior) {
+- MockUOWManager manager = new MockUOWManager();
+- final WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- final DefaultTransactionDefinition definition2 = new DefaultTransactionDefinition();
+- definition2.setPropagationBehavior(propagationBehavior);
+- definition2.setReadOnly(true);
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- assertEquals("result2", ptm.execute(definition2, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertEquals(propagationBehavior == TransactionDefinition.PROPAGATION_REQUIRES_NEW,
+- TransactionSynchronizationManager.isActualTransactionActive());
+- assertTrue(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- return "result2";
+- }
+- }));
+- return "result";
+- }
+- }));
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(0, manager.getUOWTimeout());
+- if (propagationBehavior == TransactionDefinition.PROPAGATION_REQUIRES_NEW) {
+- assertEquals(UOWManager.UOW_TYPE_GLOBAL_TRANSACTION, manager.getUOWType());
+- }
+- else {
+- assertEquals(UOWManager.UOW_TYPE_LOCAL_TRANSACTION, manager.getUOWType());
+- }
+- assertFalse(manager.getJoined());
+- assertFalse(manager.getRollbackOnly());
+- }
+-
+- public void testExistingTransactionUsingPropagationNotSupported() {
+- MockUOWManager manager = new MockUOWManager();
+- final WebSphereUowTransactionManager ptm = new WebSphereUowTransactionManager(manager);
+- DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+- final DefaultTransactionDefinition definition2 = new DefaultTransactionDefinition();
+- definition2.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED);
+- definition2.setReadOnly(true);
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals("result", ptm.execute(definition, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- assertEquals("result2", ptm.execute(definition2, new TransactionCallback() {
+- public Object doInTransaction(TransactionStatus status) {
+- assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertTrue(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+- return "result2";
+- }
+- }));
+- return "result";
+- }
+- }));
+-
+- assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
+- assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
+- assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
+-
+- assertEquals(0, manager.getUOWTimeout());
+- assertEquals(UOWManager.UOW_TYPE_LOCAL_TRANSACTION, manager.getUOWType());
+- assertFalse(manager.getJoined());
+- assertFalse(manager.getRollbackOnly());
+- }
+-
+-}
diff --git a/springframework-update-cglib-gid-and-aid.patch b/springframework-update-cglib-gid-and-aid.patch
new file mode 100644
index 0000000..aaa0c27
--- /dev/null
+++ b/springframework-update-cglib-gid-and-aid.patch
@@ -0,0 +1,120 @@
+diff --git a/org.springframework.aop/pom.xml b/org.springframework.aop/pom.xml
+index a9c7d9f..cd93c8c 100644
+--- a/org.springframework.aop/pom.xml
++++ b/org.springframework.aop/pom.xml
+@@ -28,8 +28,8 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>cglib</groupId>
+- <artifactId>cglib-nodep</artifactId>
++ <groupId>net.sf.cglib</groupId>
++ <artifactId>cglib</artifactId>
+ <version>2.2</version>
+ <optional>true</optional>
+ </dependency>
+diff --git a/org.springframework.beans/pom.xml b/org.springframework.beans/pom.xml
+index bc118f6..b4b09e1 100644
+--- a/org.springframework.beans/pom.xml
++++ b/org.springframework.beans/pom.xml
+@@ -39,8 +39,8 @@
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+- <groupId>cglib</groupId>
+- <artifactId>cglib-nodep</artifactId>
++ <groupId>net.sf.cglib</groupId>
++ <artifactId>cglib</artifactId>
+ <version>2.2</version>
+ <optional>true</optional>
+ </dependency>
+diff --git a/org.springframework.context/pom.xml b/org.springframework.context/pom.xml
+index 9fcfd1f..a83425d 100644
+--- a/org.springframework.context/pom.xml
++++ b/org.springframework.context/pom.xml
+@@ -76,8 +76,8 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>cglib</groupId>
+- <artifactId>cglib-nodep</artifactId>
++ <groupId>net.sf.cglib</groupId>
++ <artifactId>cglib</artifactId>
+ <version>2.2</version>
+ <optional>true</optional>
+ </dependency>
+diff --git a/org.springframework.integration-tests/pom.xml b/org.springframework.integration-tests/pom.xml
+index 78719d8..317b326 100644
+--- a/org.springframework.integration-tests/pom.xml
++++ b/org.springframework.integration-tests/pom.xml
+@@ -136,8 +136,8 @@
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+- <groupId>cglib</groupId>
+- <artifactId>cglib-nodep</artifactId>
++ <groupId>net.sf.cglib</groupId>
++ <artifactId>cglib</artifactId>
+ <version>2.2</version>
+ <scope>test</scope>
+ </dependency>
+diff --git a/org.springframework.orm/pom.xml b/org.springframework.orm/pom.xml
+index d5f1dcf..81cf6c4 100644
+--- a/org.springframework.orm/pom.xml
++++ b/org.springframework.orm/pom.xml
+@@ -83,8 +83,8 @@
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+- <groupId>cglib</groupId>
+- <artifactId>cglib-nodep</artifactId>
++ <groupId>net.sf.cglib</groupId>
++ <artifactId>cglib</artifactId>
+ <version>2.2</version>
+ <scope>test</scope>
+ </dependency>
+diff --git a/org.springframework.transaction/pom.xml b/org.springframework.transaction/pom.xml
+index 77a2d4c..d83b65f 100644
+--- a/org.springframework.transaction/pom.xml
++++ b/org.springframework.transaction/pom.xml
+@@ -106,8 +106,8 @@
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+- <groupId>cglib</groupId>
+- <artifactId>cglib-nodep</artifactId>
++ <groupId>net.sf.cglib</groupId>
++ <artifactId>cglib</artifactId>
+ <version>2.2</version>
+ <scope>test</scope>
+ </dependency>
+diff --git a/org.springframework.web.servlet/pom.xml b/org.springframework.web.servlet/pom.xml
+index d2a7ccd..3af7faa 100644
+--- a/org.springframework.web.servlet/pom.xml
++++ b/org.springframework.web.servlet/pom.xml
+@@ -254,8 +254,8 @@
+ </exclusions>
+ </dependency>
+ <dependency>
+- <groupId>cglib</groupId>
+- <artifactId>cglib-nodep</artifactId>
++ <groupId>net.sf.cglib</groupId>
++ <artifactId>cglib</artifactId>
+ <version>2.2</version>
+ <scope>test</scope>
+ </dependency>
+diff --git a/org.springframework.web/pom.xml b/org.springframework.web/pom.xml
+index 4b943f3..81a93b5 100644
+--- a/org.springframework.web/pom.xml
++++ b/org.springframework.web/pom.xml
+@@ -160,8 +160,8 @@
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+- <groupId>cglib</groupId>
+- <artifactId>cglib-nodep</artifactId>
++ <groupId>net.sf.cglib</groupId>
++ <artifactId>cglib</artifactId>
+ <version>2.2</version>
+ <scope>test</scope>
+ </dependency>
diff --git a/springframework-update-jetty-gid.patch b/springframework-update-jetty-gid.patch
new file mode 100644
index 0000000..bcfe151
--- /dev/null
+++ b/springframework-update-jetty-gid.patch
@@ -0,0 +1,42 @@
+diff --git a/org.springframework.web.servlet/pom.xml b/org.springframework.web.servlet/pom.xml
+index e315af1..d2a7ccd 100644
+--- a/org.springframework.web.servlet/pom.xml
++++ b/org.springframework.web.servlet/pom.xml
+@@ -303,14 +303,14 @@
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+- <groupId>org.mortbay.jetty</groupId>
++ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.9</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>servlet-api-2.5</artifactId>
+- <groupId>org.mortbay.jetty</groupId>
++ <groupId>org.eclipse.jetty</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+diff --git a/org.springframework.web/pom.xml b/org.springframework.web/pom.xml
+index a70618d..c877a21 100644
+--- a/org.springframework.web/pom.xml
++++ b/org.springframework.web/pom.xml
+@@ -177,14 +177,14 @@
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+- <groupId>org.mortbay.jetty</groupId>
++ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.9</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>servlet-api-2.5</artifactId>
+- <groupId>org.mortbay.jetty</groupId>
++ <groupId>org.eclipse.jetty</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
diff --git a/springframework-use-javax-ejb.patch b/springframework-use-javax-ejb.patch
new file mode 100644
index 0000000..f586b2e
--- /dev/null
+++ b/springframework-use-javax-ejb.patch
@@ -0,0 +1,14 @@
+--- a/org.springframework.transaction/pom.xml
++++ b/org.springframework.transaction/pom.xml
+@@ -23,8 +23,8 @@
+ <dependencies>
+ <dependency>
+ <groupId>javax.ejb</groupId>
+- <artifactId>com.springsource.javax.ejb</artifactId>
+- <version>3.0.0</version>
++ <artifactId>ejb</artifactId>
++ <version>1.0.1.Final</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+
diff --git a/springframework-use-jboss-jca-api.patch b/springframework-use-jboss-jca-api.patch
new file mode 100644
index 0000000..3035f96
--- /dev/null
+++ b/springframework-use-jboss-jca-api.patch
@@ -0,0 +1,43 @@
+diff --git a/org.springframework.transaction/pom.xml b/org.springframework.transaction/pom.xml
+index 01c5263..f748a3f 100644
+--- a/org.springframework.transaction/pom.xml
++++ b/org.springframework.transaction/pom.xml
+@@ -28,9 +28,9 @@
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+- <groupId>javax.resource</groupId>
+- <artifactId>com.springsource.javax.resource</artifactId>
+- <version>1.5.0</version>
++ <groupId>org.jboss.spec.javax.resource</groupId>
++ <artifactId>jboss-connector-api_1.6_spec</artifactId>
++ <version>1.0.0.Final</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+diff --git a/org.springframework.transaction/src/main/java/org/springframework/jca/support/SimpleBootstrapContext.java b/org.springframework.transaction/src/main/java/org/springframework/jca/support/SimpleBootstrapContext.java
+index 82d6a23..a5e9ad3 100644
+--- a/org.springframework.transaction/src/main/java/org/springframework/jca/support/SimpleBootstrapContext.java
++++ b/org.springframework.transaction/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,11 @@ public class SimpleBootstrapContext implements BootstrapContext {
+ return new Timer();
+ }
+
++ public TransactionSynchronizationRegistry getTransactionSynchronizationRegistry() {
++ return null;
++ }
++
++ public boolean isContextSupported(Class<? extends WorkContext> workContextClass) {
++ return true;
++ }
+ }
diff --git a/springframework.spec b/springframework.spec
new file mode 100644
index 0000000..f1511d1
--- /dev/null
+++ b/springframework.spec
@@ -0,0 +1,386 @@
+Name: springframework
+Summary: Spring Java Application Framework
+Version: 3.1.1
+Release: 2%{?dist}
+Epoch: 0
+License: ASL 2.0
+Group: Development/Libraries
+URL: http://www.springframework.org
+BuildArch: noarch
+
+# curl https://nodeload.github.com/SpringSource/spring-framework/tarball/v3.1.1.RELEASE > spring-framework-3.1.1.tar.gz
+Source0: %{name}-%{version}.tar.gz
+Source1: pom.xml
+
+# Use the group id of Jetty 8, it has to be org.eclipse.jetty instead of
+# org.mortbay.jetty:
+Patch1: %{name}-update-jetty-gid.patch
+
+# Remove the dependency on jaxws-api as this is part of the JDK:
+Patch2: %{name}-remove-jaxws-api-dependency.patch
+
+# Update the cglib group id (it should be net.sf.cglib instead of cglib) and
+# the artifact id (it should be cglib instead of cglib-nodep):
+Patch3: %{name}-update-cglib-gid-and-aid.patch
+
+# Don't rename the asm package:
+Patch4: %{name}-dont-rebundle-asm.patch
+
+# Don't use the AWS extension:
+Patch5: %{name}-dont-use-aws-extension.patch
+
+# The groovy package that we have in the distribution at the
+# moment provides the "groovy" artifact, but not the "groovy-all"
+# artifact, required by spring. We are patching spring to use
+# "groovy" instead of "groovy-all", but this should probably be
+# reviewed in the groovy package:
+Patch6: %{name}-downgrade-groovy-aid.patch
+
+# Remove the dependency on JRuby (sources using it are also removed before
+# building):
+Patch7: %{name}-remove-jruby-dependency.patch
+
+# Remove the dependency on EHCache (sources using it are also removed before
+# building):
+Patch8: %{name}-remove-ehcache-dependency.patch
+
+# Use the correct hibernate validator artifact id:
+Patch9: %{name}-fix-hibernate-validator-aid.patch
+
+# Remove the dependency on jsr-166 as this is part of the JDK:
+Patch10: %{name}-remove-jsr166-dependency.patch
+
+# Remove the dependency on WebSphere UOW as it is not open source and we will
+# never be able to build it:
+Patch11: %{name}-remove-websphere-uow-dependency.patch
+
+# Use the the standard EJB API (currently provided by geronimo-ejb) instead of
+# a spring specific one:
+Patch12: %{name}-use-javax-ejb.patch
+
+# Use the JCA API provided by JBoss:
+Patch13: %{name}-use-jboss-jca-api.patch
+
+# Use the correct Derby artifact id:
+Patch14: %{name}-fix-derby-aid.patch
+
+# Fix the tomcat catalina artifact id to use the one in Tomcat 7 as Tomcat 6
+# has no POMs:
+Patch15: %{name}-fix-tomcat-catalina-aid.patch
+
+# This will not be needed once bug 803495 in Tomcat 7 is fixed:
+Patch16: %{name}-avoid-jamonapi-transitive-dependency-on-tomcat-api-and-tomcat-util.patch
+
+# Build requirements (alphabetical):
+BuildRequires: aopalliance
+BuildRequires: apache-commons-collections
+BuildRequires: apache-commons-logging
+BuildRequires: aspectjweaver
+BuildRequires: atinject
+BuildRequires: backport-util-concurrent
+BuildRequires: bsh
+BuildRequires: c3p0
+BuildRequires: cglib
+BuildRequires: derby
+BuildRequires: geronimo-annotation
+BuildRequires: geronimo-ejb
+BuildRequires: geronimo-interceptor
+BuildRequires: geronimo-jpa
+BuildRequires: geronimo-jta
+BuildRequires: geronimo-validation
+BuildRequires: groovy
+BuildRequires: h2
+BuildRequires: hamcrest
+BuildRequires: hibernate-jpa-2.0-api
+BuildRequires: hibernate-validator
+BuildRequires: hsqldb
+BuildRequires: jamonapi >= 2.73-5
+BuildRequires: java-devel
+BuildRequires: jboss-connector-1.6-api
+BuildRequires: jboss-el-2.2-api >= 1.0.1-0.2
+BuildRequires: jetty
+BuildRequires: joda-time
+BuildRequires: jopt-simple
+BuildRequires: jpackage-utils
+BuildRequires: junit
+BuildRequires: log4j
+BuildRequires: objectweb-asm
+BuildRequires: tomcat-el-2.2-api
+
+# See 16 above:
+# BuildRequires: tomcat-lib >= 7.0.26-2
+BuildRequires: tomcat-lib
+
+# Runtime requirements (only for the main package, other requirements go in the
+# subpackages):
+Requires: apache-commons-collections
+Requires: apache-commons-logging
+Requires: aspectjweaver
+Requires: objectweb-asm
+Requires: java
+Requires: log4j
+Requires: jopt-simple
+
+
+%description
+Spring is a layered Java/J2EE application framework, based on code published in
+Expert One-on-One J2EE Design and Development by Rod Johnson (Wrox, 2002).
+
+
+%package javadoc
+Summary: Javadocs for %{name}
+Group: Documentation
+Requires: jpackage-utils
+
+%description javadoc
+This package contains javadoc for %{name}.
+
+
+%package aop
+Summary: Spring Aspect Oriented Framework
+Group: Development/Libraries
+Requires: %{name}-beans = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
+Requires: apache-commons-logging
+Requires: apache-commons-pool
+Requires: aopalliance
+Requires: aspectjweaver
+Requires: cglib
+Requires: jamonapi
+Requires: objectweb-asm
+
+%description aop
+Spring AOP is an enabling technology that allows the implementation of custom
+aspects and provides declarative transaction management without EJB.
+
+
+%package beans
+Summary: Spring Bean Factory
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: atinject
+Requires: cglib
+Requires: tomcat-el-2.2-api
+
+%description beans
+The Spring Bean Factory provides an advanced configuration mechanism capable of
+managing beans of any nature, using potentially any kind of storage facility.
+
+
+%package context
+Summary: Spring Application Context
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-aop = %{version}-%{release}
+Requires: %{name}-beans = %{version}-%{release}
+Requires: %{name}-expression = %{version}-%{release}
+Requires: %{name}-instrument = %{version}-%{release}
+Requires: aspectjweaver
+Requires: atinject
+Requires: backport-util-concurrent
+Requires: bsh
+Requires: cglib
+Requires: geronimo-annotation
+Requires: geronimo-ejb
+Requires: geronimo-interceptor
+Requires: geronimo-jpa
+Requires: geronimo-jta
+Requires: geronimo-validation
+Requires: groovy
+Requires: hamcrest
+Requires: hibernate-validator
+Requires: joda-time
+Requires: objectweb-asm
+
+%description context
+The Spring Application Context is a complete superset of a bean factory, and
+adds enhanced capabilities to it, some of them more J2EE and
+enterprise-centric.
+
+
+%package expression
+Summary: Spring Expression Language (SpEL)
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description expression
+The Spring Expression Language (SpEL for short) is a powerful expression
+language that supports querying and manipulating an object graph at runtime.
+
+
+%package instrument
+Summary: Spring Instrumentation
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description instrument
+The Spring Instrumentation Framework exposes performance and resource utilization
+metrics for the Spring container and gives you runtime control of the
+container.
+
+
+%package jdbc
+Summary: Spring JDBC
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-beans = %{version}-%{release}
+Requires: %{name}-context = %{version}-%{release}
+Requires: %{name}-tx = %{version}-%{release}
+Requires: c3p0
+Requires: geronimo-jta
+Requires: h2
+Requires: hsqldb
+Requires: derby
+
+%description jdbc
+Spring JDBC takes care of all the low-level details associated to the
+development with JDBC.
+
+
+%package tx
+Summary: Spring Transaction Management
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%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.
+
+
+%prep
+%setup -q -n SpringSource-spring-framework-79c9ca1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+
+# ERROR: XThis is not public in Bsh
+rm org.springframework.context/src/main/java/org/springframework/scripting/bsh/BshScriptFactory.java
+rm org.springframework.context/src/main/java/org/springframework/scripting/bsh/BshScriptUtils.java
+
+# ERROR: JRubyScriptUtils.java:[81,28] error: cannot access ByteList
+rm org.springframework.context/src/main/java/org/springframework/scripting/jruby/JRubyScriptFactory.java
+rm org.springframework.context/src/main/java/org/springframework/scripting/jruby/JRubyScriptUtils.java
+
+# Remove all the EHCache sources:
+rm -rf org.springframework.context/src/main/java/org/springframework/cache/ehcache
+rm -rf org.springframework.context/src/test/resources/org/springframework/cache/ehcache
+
+# Put the dummy root POM in place:
+cp %{SOURCE1} pom.xml
+
+
+%build
+
+# Build without the tests, as they bring a lot of dependecies that are not
+# available in the distribution at the moment:
+mvn-rpmbuild \
+ -Dproject.build.sourceEncoding=ISO-8859-1 \
+ -Dmaven.test.skip=true \
+ install \
+ javadoc:aggregate
+
+
+%install
+
+# Install jar and POM files:
+install -d -m 755 %{buildroot}%{_javadir}/%{name}
+install -d -m 755 %{buildroot}%{_mavenpomdir}
+while read module_name artifact_id
+do
+ pom_file="${module_name}/pom.xml"
+ jar_file="${module_name}/target/${artifact_id}-%{version}.RELEASE.jar"
+ install -p -m 644 ${pom_file} %{buildroot}%{_mavenpomdir}/JPP.%{name}-${artifact_id}.pom
+ if [ -f "${jar_file}" ]
+ then
+ install -p -m 644 ${jar_file} %{buildroot}%{_javadir}/%{name}/${artifact_id}.jar
+ %add_maven_depmap JPP.%{name}-${artifact_id}.pom %{name}/${artifact_id}.jar
+ else
+ %add_maven_depmap JPP.%{name}-${artifact_id}.pom
+ fi
+done <<'.'
+org.springframework.spring-parent spring-parent
+org.springframework.aop spring-aop
+org.springframework.beans spring-beans
+org.springframework.context spring-context
+org.springframework.core spring-core
+org.springframework.expression spring-expression
+org.springframework.instrument spring-instrument
+org.springframework.jdbc spring-jdbc
+org.springframework.transaction spring-tx
+.
+
+# Install javadoc files:
+install -d -m 755 %{buildroot}%{_javadocdir}/%{name}
+cp -pr target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/.
+
+
+%files
+%{_javadir}/%{name}/spring-core.jar
+%{_mavendepmapfragdir}/%{name}
+%{_mavenpomdir}/JPP.%{name}-spring-parent.pom
+%{_mavenpomdir}/JPP.%{name}-spring-core.pom
+%doc build-spring-framework/resources/*
+
+
+%files javadoc
+%{_javadocdir}/%{name}
+%doc build-spring-framework/resources/license.txt
+
+
+%files aop
+%{_mavenpomdir}/JPP.%{name}-spring-aop.pom
+%{_javadir}/%{name}/spring-aop.jar
+
+
+%files beans
+%{_javadir}/%{name}/spring-beans.jar
+%{_mavenpomdir}/JPP.%{name}-spring-beans.pom
+
+
+%files context
+%{_javadir}/%{name}/spring-context.jar
+%{_mavenpomdir}/JPP.%{name}-spring-context.pom
+
+
+%files expression
+%{_javadir}/%{name}/spring-expression.jar
+%{_mavenpomdir}/JPP.%{name}-spring-expression.pom
+
+
+%files instrument
+%{_javadir}/%{name}/spring-instrument.jar
+%{_mavenpomdir}/JPP.%{name}-spring-instrument.pom
+
+
+%files jdbc
+%{_javadir}/%{name}/spring-jdbc.jar
+%{_mavenpomdir}/JPP.%{name}-spring-jdbc.pom
+
+
+%files tx
+%{_javadir}/%{name}/spring-tx.jar
+%{_mavenpomdir}/JPP.%{name}-spring-tx.pom
+
+
+%changelog
+* Thu Mar 15 2012 Juan Hernandez <juan.hernandez at redhat.com> 0:3.1.1-2
+- Cleanup of the spec file
+
+* Fri Mar 1 2012 Andy Grimm <agrimm at gmail.com> 0:3.1.1-1
+- Initial build
More information about the scm-commits
mailing list