[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