Bug 501038: Update Apache Tomcat to version 8.5.5. Adapt the changes in the APIs.
diff --git a/build-web-container/copyJavaxToOsgi.sh b/build-web-container/copyJavaxToOsgi.sh
index 2a83cbd..25074da 100755
--- a/build-web-container/copyJavaxToOsgi.sh
+++ b/build-web-container/copyJavaxToOsgi.sh
@@ -7,6 +7,7 @@
cp $SRC/javax.el-3.0.0.20150414.jar $REPO/javax.el/javax.el-3.0.0.jar
cp $SRC/javax.mail-1.4.0.v201005080615.jar $REPO/javax.mail/javax.mail-1.4.0.v201005080615.jar
cp $SRC/javax.persistence-2.1.0.v201304241213.jar $REPO/javax.persistence/javax.persistence-2.1.0.v201304241213.jar
+cp $SRC/javax.security.auth.message-1.1.0.jar $REPO/javax.security.auth.message/javax.security.auth.message-1.1.0.jar
cp $SRC/javax.servlet-3.1.0.20150414.jar $REPO/javax.servlet/javax.servlet-3.1.0.jar
cp $SRC/javax.servlet.jsp-2.3.0.jar $REPO/javax.servlet.jsp/javax.servlet.jsp-2.3.0.jar
cp $SRC/javax.transaction-1.1.0.v201205091237.jar $REPO/javax.transaction/javax.transaction-1.1.0.v201205091237.jar
diff --git a/build-web-container/copyToOsgi.sh b/build-web-container/copyToOsgi.sh
index 216244c..f93961e 100755
--- a/build-web-container/copyToOsgi.sh
+++ b/build-web-container/copyToOsgi.sh
@@ -7,18 +7,18 @@
cp $SRC/org.eclipse.virgo.util.io-3.6.3.*.jar $REPO/org.eclipse.virgo.util.io/org.eclipse.virgo.util.io-3.6.3.jar
cp $SRC/org.eclipse.virgo.util.math-3.6.3.*.jar $REPO/org.eclipse.virgo.util.math/org.eclipse.virgo.util.math-3.6.3.jar
cp $SRC/org.eclipse.virgo.util.parser.manifest-3.6.3.*.jar $REPO/org.eclipse.virgo.util.parser.manifest/org.eclipse.virgo.util.parser.manifest-3.6.3.jar
-cp $SRC/org.apache.catalina.ha-8.0.21.jar $REPO/org.apache.catalina.ha/org.apache.catalina.ha-8.0.21.jar
-cp $SRC/org.apache.catalina-8.0.21.jar $REPO/org.apache.catalina/org.apache.catalina-8.0.21.jar
-cp $SRC/org.apache.catalina.tribes-8.0.21.jar $REPO/org.apache.catalina.tribes/org.apache.catalina.tribes-8.0.21.jar
-cp $SRC/org.apache.coyote-8.0.21.jar $REPO/org.apache.coyote/org.apache.coyote-8.0.21.jar
-cp $SRC/org.apache.el-8.0.21.jar $REPO/org.apache.el/org.apache.el-8.0.21.jar
-cp $SRC/org.apache.jasper-8.0.21.jar $REPO/org.apache.jasper/org.apache.jasper-8.0.21.jar
-cp $SRC/org.apache.juli.extras-8.0.21.jar $REPO/org.apache.juli.extras/org.apache.juli.extras-8.0.21.jar
-cp $SRC/org.apache.tomcat.api-8.0.21.jar $REPO/org.apache.tomcat.api/org.apache.tomcat.api-8.0.21.jar
-cp $SRC/org.apache.tomcat.jni-8.0.21.jar $REPO/org.apache.tomcat.jni/org.apache.tomcat.jni-8.0.21.jar
-cp $SRC/org.apache.tomcat.util-8.0.21.jar $REPO/org.apache.tomcat.util/org.apache.tomcat.util-8.0.21.jar
-cp $SRC/org.apache.tomcat.util.scan-8.0.21.jar $REPO/org.apache.tomcat.util.scan/org.apache.tomcat.util.scan-8.0.21.jar
-cp $SRC/org.apache.tomcat.websocket-8.0.21.jar $REPO/org.apache.tomcat.websocket/org.apache.tomcat.websocket-8.0.21.jar
+cp $SRC/org.apache.catalina.ha-8.5.5.jar $REPO/org.apache.catalina.ha/org.apache.catalina.ha-8.5.5.jar
+cp $SRC/org.apache.catalina-8.5.5.jar $REPO/org.apache.catalina/org.apache.catalina-8.5.5.jar
+cp $SRC/org.apache.catalina.tribes-8.5.5.jar $REPO/org.apache.catalina.tribes/org.apache.catalina.tribes-8.5.5.jar
+cp $SRC/org.apache.coyote-8.5.5.jar $REPO/org.apache.coyote/org.apache.coyote-8.5.5.jar
+cp $SRC/org.apache.el-8.5.5.jar $REPO/org.apache.el/org.apache.el-8.5.5.jar
+cp $SRC/org.apache.jasper-8.5.5.jar $REPO/org.apache.jasper/org.apache.jasper-8.5.5.jar
+cp $SRC/org.apache.juli.extras-8.5.5.jar $REPO/org.apache.juli.extras/org.apache.juli.extras-8.5.5.jar
+cp $SRC/org.apache.tomcat.api-8.5.5.jar $REPO/org.apache.tomcat.api/org.apache.tomcat.api-8.5.5.jar
+cp $SRC/org.apache.tomcat.jni-8.5.5.jar $REPO/org.apache.tomcat.jni/org.apache.tomcat.jni-8.5.5.jar
+cp $SRC/org.apache.tomcat.util-8.5.5.jar $REPO/org.apache.tomcat.util/org.apache.tomcat.util-8.5.5.jar
+cp $SRC/org.apache.tomcat.util.scan-8.5.5.jar $REPO/org.apache.tomcat.util.scan/org.apache.tomcat.util.scan-8.5.5.jar
+cp $SRC/org.apache.tomcat.websocket-8.5.5.jar $REPO/org.apache.tomcat.websocket/org.apache.tomcat.websocket-8.5.5.jar
cp $SRC/org.eclipse.gemini.web.core-2.2.1.*.jar $REPO/org.eclipse.gemini.web.core/org.eclipse.gemini.web.core-2.2.1.jar
cp $SRC/org.eclipse.gemini.web.extender-2.2.1.*.jar $REPO/org.eclipse.gemini.web.extender/org.eclipse.gemini.web.extender-2.2.1.jar
cp $SRC/org.eclipse.gemini.web.tomcat-2.2.1.*.jar $REPO/org.eclipse.gemini.web.tomcat/org.eclipse.gemini.web.tomcat-2.2.1.jar
diff --git a/build-web-container/resources/About.html b/build-web-container/resources/About.html
index 393822f..9e106ef 100644
--- a/build-web-container/resources/About.html
+++ b/build-web-container/resources/About.html
@@ -45,7 +45,7 @@
This product contains software developed by the Apache Software Foundation (<a href="http://www.apache.org">http://www.apache.org</a>).
<ul>
<li>
- Apache Tomcat 8.0.21 - binary and source is available from the
+ Apache Tomcat 8.5.5 - binary and source is available from the
<a href="http://tomcat.apache.org/">Apache Tomcat project</a>
</li>
</ul>
diff --git a/build.versions b/build.versions
index 5d30a8d..e210c86 100644
--- a/build.versions
+++ b/build.versions
@@ -13,6 +13,7 @@
javax.el=3.0.0.20150414
javax.mail=1.4.0.v201005080615
javax.persistence=2.1.0.v201304241213
+javax.security.auth.message=1.1.0
javax.servlet.jsp=2.3.0
javax.servlet.jstl=1.2.0.v201105211821
javax.servlet=3.1.0.20150414
@@ -24,7 +25,7 @@
org.eclipse.osgi=3.10.100.v20150529-1857
org.eclipse.osgi.services=3.5.0.v20150519-2006
org.eclipse.equinox.event=1.3.100.v20140115-1647
-org.apache.catalina=8.0.21
+org.apache.catalina=8.5.5
org.eclipse.jdt=3.11.0.v20150602-1242
org.slf4j.api=1.7.2.v20121108-1250
org.slf4j.nop=1.7.2.v201212060727
diff --git a/org.eclipse.gemini.web.core/.classpath b/org.eclipse.gemini.web.core/.classpath
index a7adfda..8d504d0 100644
--- a/org.eclipse.gemini.web.core/.classpath
+++ b/org.eclipse.gemini.web.core/.classpath
@@ -22,12 +22,12 @@
</classpathentry>
<classpathentry kind="var" path="IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-4.7.0.jar" sourcepath="/IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-sources-4.7.0.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-1.7.2.v20121108-1250.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-sources-1.7.2.v20121108-1250.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote.source-8.0.21.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote.source-8.5.5.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-3.1.0.20150414.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-sources-3.1.0.20150414.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="/IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.equinox.event/1.3.100.v20140115-1647/org.eclipse.equinox.event-1.3.100.v20140115-1647.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.equinox.event/1.3.100.v20140115-1647/org.eclipse.equinox.event-sources-1.3.100.v20140115-1647.jar"/>
diff --git a/org.eclipse.gemini.web.test/.classpath b/org.eclipse.gemini.web.test/.classpath
index ca7184c..a1fc6f8 100644
--- a/org.eclipse.gemini.web.test/.classpath
+++ b/org.eclipse.gemini.web.test/.classpath
@@ -13,12 +13,12 @@
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.parser.launcher/3.7.0.D-20140919122012/org.eclipse.virgo.util.parser.launcher-3.7.0.D-20140919122012.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.test.launcher/3.7.0.BUILD-20150104200311/org.eclipse.virgo.test.launcher-3.7.0.BUILD-20150104200311.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-1.7.2.v20121108-1250.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-sources-1.7.2.v20121108-1250.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote.source-8.0.21.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote.source-8.5.5.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-3.1.0.20150414.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-sources-3.1.0.20150414.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.websocket/1.1.0.v201401130840/javax.websocket-1.1.0.v201401130840.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="/IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/>
diff --git a/org.eclipse.gemini.web.test/ivy.xml b/org.eclipse.gemini.web.test/ivy.xml
index c1ef25e..413aecb 100644
--- a/org.eclipse.gemini.web.test/ivy.xml
+++ b/org.eclipse.gemini.web.test/ivy.xml
@@ -35,6 +35,7 @@
<dependency org="org.eclipse.virgo.mirrored" name="com.springsource.org.apache.taglibs.standard" rev="${org.apache.taglibs}" conf="test->runtime"/>
<dependency org="org.eclipse.virgo.mirrored" name="javax.servlet.jsp.jstl" rev="${javax.servlet.jstl}" conf="test->runtime"/>
+ <dependency org="org.eclipse.virgo.mirrored" name="javax.security.auth.message" rev="${javax.security.auth.message}" conf="test->runtime"/>
<dependency org="org.eclipse.virgo.mirrored" name="javax.xml.soap" rev="${javax.xml.soap}" conf="test->runtime"/>
<dependency org="org.eclipse.virgo.mirrored" name="javax.mail" rev="${javax.mail}" conf="test->runtime"/>
<dependency org="org.eclipse.virgo.mirrored" name="javax.websocket" rev="${javax.websocket}" conf="test->runtime"/>
diff --git a/org.eclipse.gemini.web.test/src/test/resources/META-INF/test.config.properties b/org.eclipse.gemini.web.test/src/test/resources/META-INF/test.config.properties
index c99c1fc..c454ebe 100644
--- a/org.eclipse.gemini.web.test/src/test/resources/META-INF/test.config.properties
+++ b/org.eclipse.gemini.web.test/src/test/resources/META-INF/test.config.properties
@@ -14,6 +14,7 @@
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.persistence/${javax.persistence}/javax.persistence-${javax.persistence}.jar@start,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.servlet.jsp/${javax.servlet.jsp}/javax.servlet.jsp-${javax.servlet.jsp}.jar@start,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.servlet/${javax.servlet}/javax.servlet-${javax.servlet}.jar@start,\
+file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.security.auth.message/${javax.security.auth.message}/javax.security.auth.message-${javax.security.auth.message}.jar@start,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.xml.rpc/${javax.xml.rpc}/javax.xml.rpc-${javax.xml.rpc}.jar@start,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.xml.soap/${javax.xml.soap}/javax.xml.soap-${javax.xml.soap}.jar@start,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.websocket/${javax.websocket}/javax.websocket-${javax.websocket}.jar@start,\
diff --git a/org.eclipse.gemini.web.tomcat/.classpath b/org.eclipse.gemini.web.tomcat/.classpath
index e006d57..b9814b2 100644
--- a/org.eclipse.gemini.web.tomcat/.classpath
+++ b/org.eclipse.gemini.web.tomcat/.classpath
@@ -26,16 +26,16 @@
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi/3.6.3.RELEASE/org.eclipse.virgo.util.osgi-3.6.3.RELEASE.jar" sourcepath="/IVY_CACHE/org.eclispe.virgo.util/org.eclipse.virgo.util.osgi/3.6.3.RELEASE/org.eclipse.virgo.util.osgi-sources-3.6.3.RELEASE.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.common/3.6.3.RELEASE/org.eclipse.virgo.util.common-3.6.3.RELEASE.jar" sourcepath="/IVY_CACHE/org.eclispe.virgo.util/org.eclipse.virgo.util.common/3.6.3.RELEASE/org.eclipse.virgo.util.common-sources-3.6.3.RELEASE.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-1.7.2.v20121108-1250.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-sources-1.7.2.v20121108-1250.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.0.21/org.apache.tomcat.api-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.0.21/org.apache.tomcat.api.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/8.0.21/org.apache.tomcat.util-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/8.0.21/org.apache.tomcat.util.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.0.21/org.apache.tomcat.util.scan-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.0.21/org.apache.tomcat.util.scan.source-8.0.21.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/8.0.21/org.apache.tomcat.websocket-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/8.0.21/org.apache.tomcat.websocket.source-8.0.21.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.5.5/org.apache.tomcat.api-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.5.5/org.apache.tomcat.api.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/8.5.5/org.apache.tomcat.util-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/8.5.5/org.apache.tomcat.util.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.5.5/org.apache.tomcat.util.scan-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.5.5/org.apache.tomcat.util.scan.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/8.5.5/org.apache.tomcat.websocket-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/8.5.5/org.apache.tomcat.websocket.source-8.5.5.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-3.1.0.20150414.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-sources-3.1.0.20150414.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="/IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.gemini.web.core"/>
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScanner.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScanner.java
index 2ac1451..334cbae 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScanner.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScanner.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2015 VMware Inc.
+ * Copyright (c) 2009, 2016 VMware Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -18,21 +18,21 @@
import java.io.File;
import java.io.IOException;
-import java.net.JarURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
-import java.net.URLConnection;
import java.util.Set;
import javax.servlet.ServletContext;
import org.apache.jasper.servlet.JasperInitializer;
+import org.apache.tomcat.Jar;
import org.apache.tomcat.JarScanFilter;
import org.apache.tomcat.JarScanType;
import org.apache.tomcat.JarScanner;
import org.apache.tomcat.JarScannerCallback;
+import org.apache.tomcat.util.scan.JarFactory;
import org.apache.tomcat.websocket.server.WsSci;
import org.eclipse.gemini.web.tomcat.internal.loader.BundleWebappClassLoader;
import org.eclipse.gemini.web.tomcat.internal.support.BundleDependencyDeterminer;
@@ -172,14 +172,12 @@
}
private void scanBundleUrl(URL url, JarScannerCallback callback, boolean isWebapp) {
- try {
- URLConnection connection = url.openConnection();
-
- if (connection instanceof JarURLConnection) {
- callback.scan((JarURLConnection) connection, null, isWebapp);
+ if ("jar".equals(url.getProtocol()) || url.getPath().endsWith(".jar")) {
+ try (Jar jar = JarFactory.newInstance(url)) {
+ callback.scan(jar, null, isWebapp);
+ } catch (IOException e) {
+ LOGGER.warn("Failure when attempting to scan bundle via jar URL [" + url + "].", e);
}
- } catch (IOException e) {
- LOGGER.warn("Failure when attempting to scan bundle via jar URL [" + url + "].", e);
}
}
}
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleJarResourceSet.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleJarResourceSet.java
index 6ef050d..673291a 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleJarResourceSet.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleJarResourceSet.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 SAP SE
+ * Copyright (c) 2015, 2016 SAP SE
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
+import java.util.HashMap;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
import java.util.jar.Manifest;
@@ -51,11 +52,6 @@
}
try (JarInputStream jarIs = new JarInputStream(conn.getInputStream())) {
- JarEntry entry = jarIs.getNextJarEntry();
- while (entry != null) {
- getJarFileEntries().put(entry.getName(), entry);
- entry = jarIs.getNextJarEntry();
- }
setManifest(jarIs.getManifest());
} catch (IOException ioe) {
throw new IllegalArgumentException(ioe);
@@ -63,4 +59,60 @@
setBaseUrl(baseUrl);
}
+
+ @Override
+ protected HashMap<String,JarEntry> getArchiveEntries(boolean single) {
+ synchronized (archiveLock) {
+ if (archiveEntries == null && !single) {
+ URLConnection conn = null;
+ URL baseUrl = null;
+ try {
+ baseUrl = new URL(getBase());
+ conn = baseUrl.openConnection();
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ }
+
+ archiveEntries = new HashMap<>();
+ try (JarInputStream jarIs = new JarInputStream(conn.getInputStream())) {
+ JarEntry entry = jarIs.getNextJarEntry();
+ while (entry != null) {
+ archiveEntries.put(entry.getName(), entry);
+ entry = jarIs.getNextJarEntry();
+ }
+ } catch (IOException ioe) {
+ // Should never happen
+ archiveEntries = null;
+ throw new IllegalStateException(ioe);
+ }
+ }
+ return archiveEntries;
+ }
+ }
+
+ @Override
+ protected JarEntry getArchiveEntry(String pathInArchive) {
+ URLConnection conn = null;
+ URL baseUrl = null;
+ try {
+ baseUrl = new URL(getBase());
+ conn = baseUrl.openConnection();
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ }
+
+ JarEntry entry = null;
+ try (JarInputStream jarIs = new JarInputStream(conn.getInputStream())) {
+ entry = jarIs.getNextJarEntry();
+ while (entry != null && !entry.getName().equals(pathInArchive)) {
+ entry = jarIs.getNextJarEntry();
+ }
+
+ return entry;
+ } catch (IOException ioe) {
+ // Should never happen
+ throw new IllegalStateException(ioe);
+ }
+ }
+
}
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResource.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResource.java
index 532a40c..e90a6b8 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResource.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResource.java
@@ -19,6 +19,7 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -37,6 +38,7 @@
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.webresources.AbstractResource;
import org.apache.juli.logging.Log;
+import org.apache.tomcat.util.buf.UriUtil;
import org.eclipse.gemini.web.tomcat.internal.support.BundleFileResolver;
import org.eclipse.gemini.web.tomcat.internal.support.BundleFileResolverFactory;
import org.osgi.framework.Bundle;
@@ -251,6 +253,14 @@
if (this.url == null) {
this.url = getEntryFromBundle(this.path);
}
+ String urlStr = this.url.toString();
+ if (urlStr.endsWith(".jar")) {
+ try {
+ this.url = UriUtil.buildJarUrl(urlStr);
+ } catch (MalformedURLException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
return this.url;
}
diff --git a/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScannerTests.java b/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScannerTests.java
index a52d353..1cb734f 100644
--- a/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScannerTests.java
+++ b/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScannerTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2015 VMware Inc.
+ * Copyright (c) 2009, 2016 VMware Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -27,7 +27,6 @@
import java.io.File;
import java.io.IOException;
-import java.net.JarURLConnection;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.Collections;
@@ -35,6 +34,7 @@
import javax.servlet.ServletContext;
+import org.apache.tomcat.Jar;
import org.apache.tomcat.JarScannerCallback;
import org.eclipse.gemini.web.tomcat.internal.loader.BundleWebappClassLoader;
import org.eclipse.gemini.web.tomcat.internal.support.BundleDependencyDeterminer;
@@ -106,9 +106,9 @@
public void scanFile() throws IOException {
expect(this.dependencyDeterminer.getDependencies(this.bundle)).andReturn(new HashSet<>(Arrays.asList(this.dependency)));
- File dependencyFile = new File("");
+ File dependencyFile = new File("./src/test/resources/bundle.jar");
expect(this.bundleFileResolver.resolve(this.dependency)).andReturn(dependencyFile);
- this.callback.scan(isA(JarURLConnection.class), (String) isNull(), eq(true));
+ this.callback.scan(isA(Jar.class), (String) isNull(), eq(true));
ClassLoader classLoader = new BundleWebappClassLoader(this.bundle, this.classLoaderCustomizer);
expect(this.servletContext.getClassLoader()).andReturn(classLoader);
@@ -125,12 +125,12 @@
@Test
public void scanJarUrlConnection() throws IOException {
expect(this.dependencyDeterminer.getDependencies(this.bundle)).andReturn(new HashSet<>(Arrays.asList(this.dependency))).times(2);
- expect(this.dependency.getLocation()).andReturn("file:src/test/resources/bundle.jar").andReturn(
- "reference:file:src/test/resources/bundle.jar");
+ String bundleLocation = new File("./src/test/resources/bundle.jar").toURI().toString();
+ expect(this.dependency.getLocation()).andReturn(bundleLocation).andReturn("reference:" + bundleLocation);
expect(this.dependency.getSymbolicName()).andReturn("bundle").anyTimes();
expect(this.bundleFileResolver.resolve(this.dependency)).andReturn(null).times(2);
- this.callback.scan(isA(JarURLConnection.class), (String) isNull(), eq(true));
+ this.callback.scan(isA(Jar.class), (String) isNull(), eq(true));
ClassLoader classLoader = new BundleWebappClassLoader(this.bundle, this.classLoaderCustomizer);
expect(this.servletContext.getClassLoader()).andReturn(classLoader).times(2);
diff --git a/org.eclipse.gemini.web.tomcat/src/test/resources/bundle.jar b/org.eclipse.gemini.web.tomcat/src/test/resources/bundle.jar
new file mode 100644
index 0000000..6f8e200
--- /dev/null
+++ b/org.eclipse.gemini.web.tomcat/src/test/resources/bundle.jar
Binary files differ
diff --git a/test-bundles/customizer-bundle/.classpath b/test-bundles/customizer-bundle/.classpath
index 60bd826..c31d433 100755
--- a/test-bundles/customizer-bundle/.classpath
+++ b/test-bundles/customizer-bundle/.classpath
@@ -3,8 +3,9 @@
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.gemini.web.tomcat"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.0.18/org.apache.tomcat.api-8.0.18.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.0.18/org.apache.tomcat.api.source-8.0.18.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.5.5/org.apache.tomcat.api-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.5.5/org.apache.tomcat.api.source-8.5.5.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.5.5/org.apache.tomcat.util.scan-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.5.5/org.apache.tomcat.util.scan.source-8.5.5.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.10.0.v20140606-1445/org.eclipse.osgi-3.10.0.v20140606-1445.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.10.0.v20140606-1445/org.eclipse.osgi.source-3.10.0.v20140606-1445.jar"/>
- <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0/javax.servlet-3.1.0.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0/javax.servlet-sources-3.1.0.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-3.1.0.20150414.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-sources-3.1.0.20150414.jar"/>
<classpathentry kind="output" path="target"/>
</classpath>
diff --git a/test-bundles/customizer-bundle/ivy.xml b/test-bundles/customizer-bundle/ivy.xml
index 318bf0f..2362bce 100755
--- a/test-bundles/customizer-bundle/ivy.xml
+++ b/test-bundles/customizer-bundle/ivy.xml
@@ -19,6 +19,7 @@
<dependencies>
<dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="compile->runtime"/>
<dependency org="org.eclipse.virgo.mirrored" name="org.apache.tomcat.api" rev="${org.apache.catalina}" conf="compile->runtime"/>
+ <dependency org="org.eclipse.virgo.mirrored" name="org.apache.tomcat.util.scan" rev="${org.apache.catalina}" conf="compile->runtime"/>
<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="compile->runtime"/>
<dependency org="org.eclipse.gemini" name="org.eclipse.gemini.web.tomcat" rev="latest.integration" conf="compile->runtime"/>
</dependencies>
diff --git a/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java b/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java
index e3a7615..5d05dfd 100755
--- a/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java
+++ b/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2015 SAP SE
+ * Copyright (c) 2012, 2016 SAP SE
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -18,17 +18,17 @@
import java.io.File;
import java.io.IOException;
-import java.net.JarURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
-import java.net.URLConnection;
import javax.servlet.ServletContext;
+import org.apache.tomcat.Jar;
import org.apache.tomcat.JarScanFilter;
import org.apache.tomcat.JarScanType;
import org.apache.tomcat.JarScanner;
import org.apache.tomcat.JarScannerCallback;
+import org.apache.tomcat.util.scan.JarFactory;
import org.eclipse.osgi.internal.framework.EquinoxBundle;
import org.eclipse.osgi.storage.BundleInfo.Generation;
import org.eclipse.osgi.storage.bundlefile.BundleFile;
@@ -108,14 +108,12 @@
}
private void scanBundleUrl(URL url, JarScannerCallback callback) {
- try {
- URLConnection connection = url.openConnection();
-
- if (connection instanceof JarURLConnection) {
- callback.scan((JarURLConnection) connection, null, true);
+ if ("jar".equals(url.getProtocol()) || url.getPath().endsWith(".jar")) {
+ try (Jar jar = JarFactory.newInstance(url)) {
+ callback.scan(jar, null, true);
+ } catch (IOException e) {
+ System.out.println("Failure when attempting to scan bundle via jar URL '" + url + "':" + e.getMessage());
}
- } catch (IOException e) {
- System.out.println("Failure when attempting to scan bundle via jar URL '" + url + "':" + e.getMessage());
}
}
diff --git a/test-bundles/customizer-bundle/src/main/resources/META-INF/MANIFEST.MF b/test-bundles/customizer-bundle/src/main/resources/META-INF/MANIFEST.MF
index 6916b68..c70fe2c 100755
--- a/test-bundles/customizer-bundle/src/main/resources/META-INF/MANIFEST.MF
+++ b/test-bundles/customizer-bundle/src/main/resources/META-INF/MANIFEST.MF
@@ -3,6 +3,8 @@
Bundle-SymbolicName: Customizer-bundle
Bundle-Version: 1.0.0
Import-Package: org.apache.tomcat,
+ org.apache.tomcat.util.buf,
+ org.apache.tomcat.util.scan,
org.eclipse.gemini.web.tomcat.spi,
org.osgi.framework,
javax.servlet,