Apply patch 2/2 for submodule web
diff --git a/web/build.gradle b/web/build.gradle
index d5ceedc..a9ef31d 100644
--- a/web/build.gradle
+++ b/web/build.gradle
@@ -2,7 +2,7 @@
     dependencies {
         testCompile group: 'org.easymock', name: 'easymock', version: easymockVersion
         testCompile group: "org.eclipse.virgo.mirrored", name: "org.apache.commons.logging", version: commonsLoggingVersion, ext: "jar"
-        testCompile group: "org.eclipse.virgo.mirrored", name: "org.springframework.test", version: springframeworkVersion,ext: "jar"
+        testCompile group: springframeworkGroupId, name: springframeworkArtifactPrefix + "test", version: springframeworkVersion,ext: "jar"
         testCompile project(':test:org.eclipse.virgo.test.stubs')
         testCompile project(':kernel:org.eclipse.virgo.kernel.stubs')
 
@@ -34,7 +34,7 @@
 project(':web:org.eclipse.virgo.web.dm') {
     dependencies {
         testCompile group: 'org.easymock', name: 'easymock', version: easymockVersion
-        testCompile group: "org.eclipse.virgo.mirrored", name: "org.springframework.test", version: springframeworkVersion,ext: "jar"
+        testCompile group: springframeworkGroupId, name: springframeworkArtifactPrefix + "test", version: springframeworkVersion,ext: "jar"
         testCompile group: "org.eclipse.virgo.mirrored", name: "org.apache.commons.logging", version: commonsLoggingVersion, ext: "jar"
 
         compile group: "org.slf4j", name: "slf4j-api", version: slf4jVersion
@@ -46,11 +46,11 @@
         compile group: "org.eclipse.gemini.blueprint", name: "gemini-blueprint-core", version: geminiBlueprintVersion, ext: "jar"
         compile group: "org.eclipse.gemini.blueprint", name: "gemini-blueprint-extender", version: geminiBlueprintVersion, ext: "jar"
 
-        compile group: "org.eclipse.virgo.mirrored", name: "org.springframework.aop", version: springframeworkVersion, ext: "jar"
-        compile group: "org.eclipse.virgo.mirrored", name: "org.springframework.core", version: springframeworkVersion, ext: "jar"
-        compile group: "org.eclipse.virgo.mirrored", name: "org.springframework.beans", version: springframeworkVersion, ext: "jar"
-        compile group: "org.eclipse.virgo.mirrored", name: "org.springframework.context", version: springframeworkVersion, ext: "jar"
-        compile group: "org.eclipse.virgo.mirrored", name: "org.springframework.web", version: springframeworkVersion, ext: "jar"
+        compile group: springframeworkGroupId, name: springframeworkArtifactPrefix + "aop", version: springframeworkVersion, ext: "jar"
+        compile group: springframeworkGroupId, name: springframeworkArtifactPrefix + "core", version: springframeworkVersion, ext: "jar"
+        compile group: springframeworkGroupId, name: springframeworkArtifactPrefix + "beans", version: springframeworkVersion, ext: "jar"
+        compile group: springframeworkGroupId, name: springframeworkArtifactPrefix + "context", version: springframeworkVersion, ext: "jar"
+        compile group: springframeworkGroupId, name: springframeworkArtifactPrefix + "web", version: springframeworkVersion, ext: "jar"
 
         compile project(':medic:org.eclipse.virgo.medic')
         compile project(':nano:org.eclipse.virgo.nano.core')
diff --git a/web/org.eclipse.virgo.web.dm/template.mf b/web/org.eclipse.virgo.web.dm/template.mf
index f4525a6..649f2c0 100644
--- a/web/org.eclipse.virgo.web.dm/template.mf
+++ b/web/org.eclipse.virgo.web.dm/template.mf
@@ -9,7 +9,8 @@
  org.apache.commons.logging.*;version="${commonsLoggingVersion:[=.=.=, +1)}",
  org.aspectj.*;version="${aspectjVersion:[=.=.=, +1)}",
  org.osgi.framework.*;version="0",
- org.springframework.*;version="${springframeworkVersion:[3.1, +1)}",
+ org.springframework.*;version="${springframeworkVersion:[4.2.1, +1)}",
  org.eclipse.gemini.blueprint.*;version="${geminiBlueprintVersion:[=.=.=, +1)}",
  org.eclipse.virgo.medic.*;version="${version:[=.=.=, +1)}",
  org.slf4j.*;version="${slf4jVersion:[=.=.=, +1)}"
+Export-Template: org.eclipse.virgo.web.dm
diff --git a/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/AppLoaderClasspathExtenderClassLoadingHookTests.java b/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/AppLoaderClasspathExtenderClassLoadingHookTests.java
index 82fbe35..8df3742 100755
--- a/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/AppLoaderClasspathExtenderClassLoadingHookTests.java
+++ b/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/AppLoaderClasspathExtenderClassLoadingHookTests.java
@@ -19,9 +19,10 @@
 import java.util.Hashtable;

 

 import org.easymock.EasyMock;

-import org.eclipse.osgi.baseadaptor.loader.BaseClassLoader;

-import org.eclipse.osgi.baseadaptor.loader.ClasspathEntry;

-import org.eclipse.osgi.baseadaptor.loader.ClasspathManager;

+import org.eclipse.osgi.internal.loader.ModuleClassLoader;

+import org.eclipse.osgi.internal.loader.classpath.ClasspathEntry;

+import org.eclipse.osgi.internal.loader.classpath.ClasspathManager;

+import org.eclipse.osgi.storage.BundleInfo.Generation;

 import org.junit.After;

 import org.junit.Assert;

 import org.junit.Before;

@@ -94,14 +95,15 @@
     public void testAddClassPathEntryPositive() throws IOException {

         File jpaIntegrationFile = prepare();

         ArrayList<ClasspathEntry> cpEntries = new ArrayList<ClasspathEntry>();

-        BaseClassLoader classloader = EasyMock.createMock(BaseClassLoader.class);

-        BaseDataStub data = new BaseDataStub(0, null);

+        ModuleClassLoader classloader = EasyMock.createMock(ModuleClassLoader.class);

+        // BaseDataStub data = new BaseDataStub(0, null);

         Dictionary<String, String> manifest = new Hashtable<String, String>();

         manifest.put(WEB_CONTEXTPATH_HEADER, TESTAPP);

-        data.setManifest(manifest);

-        ClasspathManager classpathmanager = new ClasspathManagerStub(data, new String[] {}, classloader);

+        Generation data = null;

+        // data.setManifest(manifest);

+        ClasspathManager classpathmanager = new ClasspathManagerStub(data, classloader);

         AppLoaderClasspathExtenderClassLoadingHook hook = new AppLoaderClasspathExtenderClassLoadingHook();

-        boolean result = hook.addClassPathEntry(cpEntries, "", classpathmanager, data, new ProtectionDomain(null, null));

+        boolean result = hook.addClassPathEntry(cpEntries, "", classpathmanager, data);

         Assert.assertTrue("Classpath entry should be added successfully but it is not", result);

         Assert.assertTrue("There should be added only one classapth entry, but they are " + cpEntries.size(), cpEntries.size() == 1);

         ClasspathEntry entry = cpEntries.get(0);

@@ -112,24 +114,24 @@
     @Test

     public void testAddClassPathEntryNegativeNotAppBundle() {

         ArrayList<ClasspathEntry> cpEntries = new ArrayList<ClasspathEntry>();

-        BaseClassLoader classloader = EasyMock.createMock(BaseClassLoader.class);

-        BaseDataStub data = new BaseDataStub(0, null);

+        ModuleClassLoader classloader = EasyMock.createMock(ModuleClassLoader.class);

+        Generation data = null;

         Dictionary<String, String> manifest = new Hashtable<String, String>();

-        data.setManifest(manifest);

-        ClasspathManager classpathmanager = new ClasspathManagerStub(data, new String[] {}, classloader);

+//        data.setManifest(manifest);

+        ClasspathManager classpathmanager = new ClasspathManagerStub(data, classloader);

         AppLoaderClasspathExtenderClassLoadingHook hook = new AppLoaderClasspathExtenderClassLoadingHook();

-        boolean result = hook.addClassPathEntry(cpEntries, "", classpathmanager, data, new ProtectionDomain(null, null));

+        boolean result = hook.addClassPathEntry(cpEntries, "", classpathmanager, data);

         Assert.assertFalse("Classpath entry should not be added because this is not an application bundle but it is", result);

     }

 

     @Test

     public void testAddClassPathEntryNegativeAlreadyAdded() {

         ArrayList<ClasspathEntry> cpEntries = new ArrayList<ClasspathEntry>();

-        BaseClassLoader classloader = EasyMock.createMock(BaseClassLoader.class);

+        ModuleClassLoader classloader = EasyMock.createMock(ModuleClassLoader.class);

         BaseDataStub data = new BaseDataStub(0, null);

         Dictionary<String, String> manifest = new Hashtable<String, String>();

         data.setManifest(manifest);

-        ClasspathManager classpathmanager = new ClasspathManagerStub(data, new String[] {}, classloader);

+        ClasspathManager classpathmanager = new ClasspathManagerStub(data, classloader);

         File libDir = new File(new File("."), LIB_DIR);

         File libPersistenceDir = new File(libDir, PERSISTENCE_DIR);

         String classpath = new File(libPersistenceDir, PERSISTENCE_INTEGRATION_JAR).getAbsolutePath();

@@ -143,7 +145,7 @@
     @Test

     public void testAddClassPathEntryNegativeExceptionThrown() {

         ArrayList<ClasspathEntry> cpEntries = new ArrayList<ClasspathEntry>();

-        BaseClassLoader classloader = EasyMock.createMock(BaseClassLoader.class);

+        ModuleClassLoader classloader = EasyMock.createMock(ModuleClassLoader.class);

         BaseDataStub data = new BaseDataStub(0, null);

         Dictionary<String, String> manifest = new Hashtable<String, String>();

         manifest.put(WEB_CONTEXTPATH_HEADER, TESTAPP);

@@ -308,7 +310,7 @@
     @Test

     public void determinePersistenceIntegrationPathPositive() throws IOException {

         File jpaIntegrationFile = prepare();

-        BaseClassLoader classloader = EasyMock.createMock(BaseClassLoader.class);

+        ModuleClassLoader classloader = EasyMock.createMock(ModuleClassLoader.class);

         BaseDataStub data = new BaseDataStub(0, null);

         Dictionary<String, String> manifest = new Hashtable<String, String>();

         manifest.put(WEB_CONTEXTPATH_HEADER, TESTAPP);

@@ -328,7 +330,7 @@
     @Test

     public void determinePersistenceIntegrationPathThrowsException() throws IOException {

         prepare();

-        BaseClassLoader classloader = EasyMock.createMock(BaseClassLoader.class);

+        ModuleClassLoader classloader = EasyMock.createMock(ModuleClassLoader.class);

         BaseDataStub data = new BaseDataStub(0, null);

         Dictionary<String, String> manifest = new Hashtable<String, String>();

         manifest.put(WEB_CONTEXTPATH_HEADER, TESTAPP);

diff --git a/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/BundleFileStub.java b/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/BundleFileStub.java
index d27be0a..66ec055 100755
--- a/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/BundleFileStub.java
+++ b/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/BundleFileStub.java
@@ -15,8 +15,8 @@
 import java.io.IOException;

 import java.util.Enumeration;

 

-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;

-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;

+import org.eclipse.osgi.storage.bundlefile.BundleEntry;

+import org.eclipse.osgi.storage.bundlefile.BundleFile;

 

 public class BundleFileStub extends BundleFile {

 	private String classpath;

@@ -24,8 +24,10 @@
 	public String getClassPath() {

 		return classpath;

 	}

-	

+

 	public BundleFileStub(String classpath) {

+	    // TODO create new File()?!

+	    super(null);

 		this.classpath = classpath;

 	}

 	

@@ -61,5 +63,10 @@
 	@Override

 	public void open() throws IOException {

 	}

+

+    @Override

+    public Enumeration<String> getEntryPaths(String arg0, boolean arg1) {

+        return null;

+    }

 	

 }

diff --git a/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/ClasspathManagerStub.java b/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/ClasspathManagerStub.java
index e45c80d..69a36a6 100755
--- a/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/ClasspathManagerStub.java
+++ b/web/org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook/src/test/java/org/eclipse/virgo/web/enterprise/persistence/openejb/classloading/hook/ClasspathManagerStub.java
@@ -13,29 +13,29 @@
 

 import java.security.ProtectionDomain;

 

-import org.eclipse.osgi.baseadaptor.BaseData;

-import org.eclipse.osgi.baseadaptor.loader.BaseClassLoader;

-import org.eclipse.osgi.baseadaptor.loader.ClasspathEntry;

-import org.eclipse.osgi.baseadaptor.loader.ClasspathManager;

+import org.eclipse.osgi.internal.loader.ModuleClassLoader;

+import org.eclipse.osgi.internal.loader.classpath.ClasspathEntry;

+import org.eclipse.osgi.internal.loader.classpath.ClasspathManager;

+import org.eclipse.osgi.storage.BundleInfo.Generation;

 

 public class ClasspathManagerStub extends ClasspathManager {

-	private boolean shouldReturnNull = false;

 

-	public ClasspathManagerStub(BaseData data, String[] classpath,

-			BaseClassLoader classloader) {

-		super(data, classpath, classloader);

-	}

-	

-	public ClasspathEntry getExternalClassPath(String cp, BaseData sourcedata, ProtectionDomain sourcedomain) {

-		if (shouldReturnNull) {

-			return null;

-		}

-		

-		return new ClasspathEntry(new BundleFileStub(cp), sourcedomain);

-	}

-	

-	public void setShouldReturnNull(boolean shouldReturnNull) {

-		this.shouldReturnNull = shouldReturnNull;

-	}

+    private boolean shouldReturnNull = false;

+

+    public ClasspathManagerStub(Generation data, ModuleClassLoader classloader) {

+        super(data, classloader);

+    }

+

+    public ClasspathEntry getExternalClassPath(String cp, Generation sourcedata, ProtectionDomain sourcedomain) {

+        if (shouldReturnNull) {

+            return null;

+        }

+

+        return new ClasspathEntry(new BundleFileStub(cp), sourcedomain, sourcedata);

+    }

+

+    public void setShouldReturnNull(boolean shouldReturnNull) {

+        this.shouldReturnNull = shouldReturnNull;

+    }

 

 }

diff --git a/web/org.eclipse.virgo.web.spring.integration/template.mf b/web/org.eclipse.virgo.web.spring.integration/template.mf
index e4e0ec4..2dd0472 100644
--- a/web/org.eclipse.virgo.web.spring.integration/template.mf
+++ b/web/org.eclipse.virgo.web.spring.integration/template.mf
@@ -4,4 +4,4 @@
 Bundle-SymbolicName: org.eclipse.virgo.web.spring.integration
 Bundle-Version: ${version}
 Fragment-host: org.apache.catalina
-Import-Package: org.springframework.web
+Import-Template: org.springframework.web.*;version="${springframeworkVersion:[2.5.6, +1)}"