Make websocket functionality operational.
diff --git a/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/DefaultsWebBundleManifestTransformer.java b/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/DefaultsWebBundleManifestTransformer.java
index bcffc27..f2ddc45 100644
--- a/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/DefaultsWebBundleManifestTransformer.java
+++ b/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/DefaultsWebBundleManifestTransformer.java
@@ -55,6 +55,8 @@
addImportInNecessary("javax.servlet.jsp.el", new Version("2.1"), manifest);
addImportInNecessary("javax.servlet.jsp.tagext", new Version("2.1"), manifest);
addImportInNecessary("javax.el", new Version("1.0"), manifest);
+ addImportInNecessary("javax.websocket", new Version("1.0"), manifest);
+ addImportInNecessary("javax.websocket.server", new Version("1.0"), manifest);
}
private void addImportInNecessary(String packageName, Version version, BundleManifest manifest) {
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 a9e28cf..d928c7a 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
@@ -16,6 +16,7 @@
file:${ivy.cache}/repository/javax.servlet/javax.servlet/${javax.servlet}/javax.servlet-${javax.servlet}.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,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/org.apache.catalina.ha/${org.apache.catalina.ha}/org.apache.catalina.ha-${org.apache.catalina.ha}.jar,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/${org.apache.catalina.tribes}/org.apache.catalina.tribes-${org.apache.catalina.tribes}.jar,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/org.apache.catalina/${org.apache.catalina}/org.apache.catalina-${org.apache.catalina}.jar@start,\
@@ -24,6 +25,7 @@
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/org.apache.jasper/${org.apache.jasper}/org.apache.jasper-${org.apache.jasper}.jar,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/org.apache.tomcat.api/${org.apache.tomcat.api}/org.apache.tomcat.api-${org.apache.tomcat.api}.jar,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/org.apache.tomcat.util/${org.apache.tomcat.util}/org.apache.tomcat.util-${org.apache.tomcat.util}.jar,\
+file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/${org.apache.tomcat.websocket}/org.apache.tomcat.websocket-${org.apache.tomcat.websocket}.jar,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/org.eclipse.jdt.core.compiler.batch/${org.eclipse.jdt}/org.eclipse.jdt.core.compiler.batch-${org.eclipse.jdt}.jar,\
file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/org.apache.juli.extras/${org.apache.juli.extras}/org.apache.juli.extras-${org.apache.juli.extras}.jar@start,\
file:${ivy.cache}/repository/org.apache.taglibs/com.springsource.org.apache.taglibs.standard/${org.apache.taglibs}/com.springsource.org.apache.taglibs.standard-${org.apache.taglibs}.jar,\
diff --git a/org.eclipse.gemini.web.tomcat/.classpath b/org.eclipse.gemini.web.tomcat/.classpath
index 6ad9300..5f1bbf9 100644
--- a/org.eclipse.gemini.web.tomcat/.classpath
+++ b/org.eclipse.gemini.web.tomcat/.classpath
@@ -35,6 +35,7 @@
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/7.0.53.v201406070630/org.apache.coyote-7.0.53.v201406070630.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/7.0.53.v201406070630/org.apache.coyote.source-7.0.53.v201406070630.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/7.0.53.v201406060720/org.apache.tomcat.api-7.0.53.v201406060720.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/7.0.53.v201406060720/org.apache.tomcat.api.source-7.0.53.v201406060720.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/7.0.53.v201406070630/org.apache.tomcat.util-7.0.53.v201406070630.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/7.0.53.v201406070630/org.apache.tomcat.util.source-7.0.53.v201406070630.jar"/>
+ <classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/7.0.53.v201406070630/org.apache.tomcat.websocket-7.0.53.v201406070630.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/7.0.53.v201406070630/org.apache.tomcat.websocket.source-7.0.53.v201406070630.jar"/>
<classpathentry kind="var" path="IVY_CACHE/javax.servlet/javax.servlet/3.0.0.v201103241009/javax.servlet-3.0.0.v201103241009.jar" sourcepath="/IVY_CACHE/javax.servlet/javax.servlet/3.0.0.v201103241009/javax.servlet-sources-3.0.0.v201103241009.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/ivy.xml b/org.eclipse.gemini.web.tomcat/ivy.xml
index cdc4aec..2d0c203 100644
--- a/org.eclipse.gemini.web.tomcat/ivy.xml
+++ b/org.eclipse.gemini.web.tomcat/ivy.xml
@@ -42,6 +42,7 @@
<dependency org="org.eclipse.virgo.mirrored" name="org.apache.juli.extras" rev="${org.apache.juli.extras}" conf="compile->runtime"/>
<dependency org="org.eclipse.virgo.mirrored" name="org.apache.tomcat.api" rev="${org.apache.tomcat.api}" conf="compile->runtime"/>
<dependency org="org.eclipse.virgo.mirrored" name="org.apache.tomcat.util" rev="${org.apache.tomcat.util}" conf="compile->runtime"/>
+ <dependency org="org.eclipse.virgo.mirrored" name="org.apache.tomcat.websocket" rev="${org.apache.tomcat.websocket}" conf="compile->runtime"/>
<dependency org="org.junit" name="com.springsource.org.junit" rev="${org.junit}" conf="test->runtime"/>
<dependency org="org.easymock" name="com.springsource.org.easymock" rev="${org.easymock}" conf="test->runtime"/>
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 352daef..20e1b48 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
@@ -30,11 +30,13 @@
import org.apache.tomcat.JarScanner;
import org.apache.tomcat.JarScannerCallback;
+import org.apache.tomcat.websocket.server.WsSci;
import org.eclipse.gemini.web.tomcat.internal.loading.BundleWebappClassLoader;
import org.eclipse.gemini.web.tomcat.internal.support.BundleDependencyDeterminer;
import org.eclipse.gemini.web.tomcat.internal.support.BundleFileResolver;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,13 +58,13 @@
/**
* By default the Bundle Dependencies Jar Scanner will exclude the bundles listed below from the scanning process as
* they do not provide TLDs and web-fragment.xml files: org.eclipse.osgi, javax.servlet, javax.servlet.jsp,
- * javax.el. The default behavior can be changed with property
+ * javax.el,javax.websocket. The default behavior can be changed with property
* <code>org.eclipse.gemini.web.tomcat.scanner.skip.bundles</code>. The syntax is
* <code>org.eclipse.gemini.web.tomcat.scanner.skip.bundles=<bundle-symbolic-name>,<bundle-symbolic-name>,...</code>
*/
static final String SCANNER_SKIP_BUNDLES_PROPERTY_NAME = "org.eclipse.gemini.web.tomcat.scanner.skip.bundles";
- private static final String SCANNER_SKIP_BUNDLES_PROPERTY_VALUE_DEFAULT = "org.eclipse.osgi,javax.servlet,javax.servlet.jsp,javax.el";
+ private static final String SCANNER_SKIP_BUNDLES_PROPERTY_VALUE_DEFAULT = "org.eclipse.osgi,javax.servlet,javax.servlet.jsp,javax.el,javax.websocket";
private static final String JAR_URL_SUFFIX = "!/";
@@ -96,6 +98,11 @@
private void scanDependentBundles(Bundle rootBundle, JarScannerCallback callback) {
Set<Bundle> dependencies = this.bundleDependencyDeterminer.getDependencies(rootBundle);
+ Bundle apacheWebsocketBundle = FrameworkUtil.getBundle(WsSci.class);
+ if (apacheWebsocketBundle != null) {
+ dependencies.add(apacheWebsocketBundle);
+ }
+
for (Bundle bundle : dependencies) {
if (!this.skipBundles.contains(bundle.getSymbolicName())) {
scanBundle(bundle, callback);