From eaca20d2a41ba2771bd379408d87673b12646390 Wed, 27 Feb 2013 09:33:50 +0100 From: Krzysztof Daniel Date: Tue, 26 Feb 2013 21:25:42 +0100 Subject: [PATCH] Adopt jetty 9 diff --git rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/META-INF/MANIFEST.MF rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/META-INF/MANIFEST.MF index deb06c3..f993d0e 100755 --- rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/META-INF/MANIFEST.MF +++ rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/META-INF/MANIFEST.MF @@ -9,23 +9,20 @@ Import-Package: javax.servlet;version="[2.6.0,4.0.0)", javax.servlet.http;version="[2.6.0,4.0.0)", org.eclipse.equinox.http.servlet;version="1.0.0", - org.eclipse.jetty.http;version="[8.0.0,9.0.0)", - org.eclipse.jetty.io.bio;version="[8.0.0,9.0.0)", - org.eclipse.jetty.io.nio;version="[8.0.0,9.0.0)", - org.eclipse.jetty.server;version="[8.0.0,9.0.0)", - org.eclipse.jetty.server.bio;version="[8.0.0,9.0.0)", - org.eclipse.jetty.server.handler;version="[8.0.0,9.0.0)", - org.eclipse.jetty.server.nio;version="[8.0.0,9.0.0)", - org.eclipse.jetty.server.session;version="[8.0.0,9.0.0)", - org.eclipse.jetty.server.ssl;version="[8.0.0,9.0.0)", - org.eclipse.jetty.servlet;version="[8.0.0,9.0.0)", - org.eclipse.jetty.util;version="[8.0.0,9.0.0)", - org.eclipse.jetty.util.component;version="[8.0.0,9.0.0)", - org.eclipse.jetty.util.log;version="[8.0.0,9.0.0)", + org.eclipse.jetty.http;version="[9.0.0,10.0.0)", + org.eclipse.jetty.server;version="[9.0.0,10.0.0)", + org.eclipse.jetty.server.handler;version="[9.0.0,10.0.0)", + org.eclipse.jetty.server.nio;version="[9.0.0,10.0.0)", + org.eclipse.jetty.server.session;version="[9.0.0,10.0.0)", + org.eclipse.jetty.servlet;version="[9.0.0,10.0.0)", + org.eclipse.jetty.util;version="[9.0.0,10.0.0)", + org.eclipse.jetty.util.component;version="[9.0.0,10.0.0)", + org.eclipse.jetty.util.log;version="[9.0.0,10.0.0)", + org.eclipse.jetty.util.ssl;version="[9.0.0,10.0.0)", org.osgi.framework;version="1.3.0", org.osgi.service.cm;version="1.2.0", org.osgi.service.startlevel;version="1.0" -Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Export-Package: org.eclipse.equinox.http.jetty;version="1.1.0" Comment-Header: Both Eclipse-LazyStart and Bundle-ActivationPolicy are specified for compatibility with 3.2 Eclipse-LazyStart: true diff --git rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/jetty6-to-jetty7.patch rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/jetty6-to-jetty7.patch deleted file mode 100644 index d55a157..0000000 --- rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/jetty6-to-jetty7.patch +++ /dev/null @@ -1,204 +0,0 @@ -Index: .project -=================================================================== -RCS file: /cvsroot/rt/org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty6/.project,v -retrieving revision 1.3 -diff -u -r1.3 .project ---- .project 25 Apr 2008 14:38:54 -0000 1.3 -+++ .project 16 Apr 2010 21:35:58 -0000 -@@ -1,6 +1,6 @@ - - -- org.eclipse.equinox.http.jetty6 -+ org.eclipse.equinox.http.jetty7 - - - -Index: META-INF/MANIFEST.MF -=================================================================== -RCS file: /cvsroot/rt/org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty6/META-INF/MANIFEST.MF,v -retrieving revision 1.24 -diff -u -r1.24 MANIFEST.MF ---- META-INF/MANIFEST.MF 24 Apr 2009 20:54:41 -0000 1.24 -+++ META-INF/MANIFEST.MF 16 Apr 2010 21:35:58 -0000 -@@ -4,23 +4,28 @@ - Bundle-Vendor: %providerName - Bundle-Localization: plugin - Bundle-SymbolicName: org.eclipse.equinox.http.jetty --Bundle-Version: 2.0.0.qualifier -+Bundle-Version: 3.0.0.qualifier - Bundle-Activator: org.eclipse.equinox.http.jetty.internal.Activator - Import-Package: javax.servlet;version="[2.5.0,2.6.0)", - javax.servlet.http;version="[2.5.0,2.6.0)", - org.eclipse.equinox.http.servlet;version="1.0.0", -- org.mortbay.component;version="[6.1.0,7.0.0)", -- org.mortbay.jetty;version="[6.1.0,7.0.0)", -- org.mortbay.jetty.bio;version="[6.1.0,7.0.0)", -- org.mortbay.jetty.handler;version="[6.1.0,7.0.0)", -- org.mortbay.jetty.nio;version="[6.1.0,7.0.0)", -- org.mortbay.jetty.security;version="[6.1.0,7.0.0)", -- org.mortbay.jetty.servlet;version="[6.1.0,7.0.0)", -- org.mortbay.log;version="[6.1.0,7.0.0)", -+ org.eclipse.jetty.http;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.io.bio;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.io.nio;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.server;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.server.bio;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.server.handler;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.server.nio;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.server.session;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.server.ssl;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.servlet;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.util;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.util.component;version="[7.0.0,8.0.0)", -+ org.eclipse.jetty.util.log;version="[7.0.0,8.0.0)", - org.osgi.framework;version="1.3.0", - org.osgi.service.cm;version="1.2.0", - org.osgi.service.startlevel;version="1.0" --Bundle-RequiredExecutionEnvironment: J2SE-1.4 -+Bundle-RequiredExecutionEnvironment: J2SE-1.5 - Export-Package: org.eclipse.equinox.http.jetty;version="1.1.0" - Comment-Header: Both Eclipse-LazyStart and Bundle-ActivationPolicy are specified for compatibility with 3.2 - Eclipse-LazyStart: true -Index: src/org/eclipse/equinox/http/jetty/JettyCustomizer.java -=================================================================== -RCS file: /cvsroot/rt/org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty6/src/org/eclipse/equinox/http/jetty/JettyCustomizer.java,v -retrieving revision 1.2 -diff -u -r1.2 JettyCustomizer.java ---- src/org/eclipse/equinox/http/jetty/JettyCustomizer.java 17 Apr 2009 21:58:58 -0000 1.2 -+++ src/org/eclipse/equinox/http/jetty/JettyCustomizer.java 16 Apr 2010 21:35:58 -0000 -@@ -33,13 +33,13 @@ - * framework. Changing those may cause breakage and thus must be avoided. - *

- * @param context -- * the Jetty context; in case of Jetty 6 the context is of -- * type org.mortbay.jetty.servlet.Context -+ * the Jetty context; in case of Jetty 7 the context is of -+ * type org.eclipse.jetty.servlet.ServletContextHandler - * @param settings - * the settings as passed to {@link JettyConfigurator#startServer(String, Dictionary)} - * @return context -- * the customized context; in case of Jetty 6 the context is of -- * type org.mortbay.jetty.servlet.Context -+ * the customized context; in case of Jetty 7 the context is of -+ * type org.eclipse.jetty.servlet.ServletContextHandler - */ - public Object customizeContext(Object context, Dictionary settings) { - return context; -@@ -52,13 +52,13 @@ - * Implementors may perform additional configuration of the Jetty Connector. - *

- * @param connector -- * the Jetty connector; in case of Jetty 6 the context is of -- * type org.mortbay.jetty.Connector -+ * the Jetty connector; in case of Jetty 7 the context is of -+ * type org.eclipse.jetty.server.Connector - * @param settings - * the settings as passed to {@link JettyConfigurator#startServer(String, Dictionary)} - * @return connector - * the customized connector; in case of Jetty 6 the connector is of -- * type org.mortbay.jetty.Connector -+ * type org.eclipse.jetty.server.Connector - */ - public Object customizeHttpConnector(Object connector, Dictionary settings) { - return connector; -@@ -71,13 +71,13 @@ - * Implementors may perform additional configuration of the Jetty Connector. - *

- * @param connector -- * the Jetty connector; in case of Jetty 6 the connector is of -- * type org.mortbay.jetty.Connector -+ * the Jetty connector; in case of Jetty 7 the connector is of -+ * type oorg.eclipse.jetty.server.Connector - * @param settings - * the settings as passed to {@link JettyConfigurator#startServer(String, Dictionary)} - * @return connector -- * the customized connector; in case of Jetty 6 the connector is of -- * type org.mortbay.jetty.Connector -+ * the customized connector; in case of Jetty 7 the connector is of -+ * type org.eclipse.jetty.server.Connector - */ - public Object customizeHttpsConnector(Object connector, Dictionary settings) { - return connector; -Index: src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java -=================================================================== -RCS file: /cvsroot/rt/org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty6/src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java,v -retrieving revision 1.20 -diff -u -r1.20 HttpServerManager.java ---- src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java 20 May 2009 21:12:37 -0000 1.20 -+++ src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java 16 Apr 2010 21:35:58 -0000 -@@ -18,12 +18,15 @@ - import org.eclipse.equinox.http.jetty.JettyConstants; - import org.eclipse.equinox.http.jetty.JettyCustomizer; - import org.eclipse.equinox.http.servlet.HttpServiceServlet; --import org.mortbay.jetty.Connector; --import org.mortbay.jetty.Server; --import org.mortbay.jetty.bio.SocketConnector; --import org.mortbay.jetty.nio.SelectChannelConnector; --import org.mortbay.jetty.security.SslSocketConnector; --import org.mortbay.jetty.servlet.*; -+import org.eclipse.jetty.server.Connector; -+import org.eclipse.jetty.server.Server; -+import org.eclipse.jetty.server.bio.SocketConnector; -+import org.eclipse.jetty.server.nio.SelectChannelConnector; -+import org.eclipse.jetty.server.session.HashSessionManager; -+import org.eclipse.jetty.server.session.SessionHandler; -+import org.eclipse.jetty.server.ssl.SslSocketConnector; -+import org.eclipse.jetty.servlet.ServletContextHandler; -+import org.eclipse.jetty.servlet.ServletHolder; - import org.osgi.framework.Constants; - import org.osgi.service.cm.ConfigurationException; - import org.osgi.service.cm.ManagedServiceFactory; -@@ -98,12 +101,12 @@ - if (otherInfo != null) - holder.setInitParameter(JettyConstants.OTHER_INFO, otherInfo); - -- Context httpContext = createHttpContext(dictionary); -+ ServletContextHandler httpContext = createHttpContext(dictionary); - if (null != customizer) -- httpContext = (Context) customizer.customizeContext(httpContext, dictionary); -+ httpContext = (ServletContextHandler) customizer.customizeContext(httpContext, dictionary); - - httpContext.addServlet(holder, "/*"); //$NON-NLS-1$ -- server.addHandler(httpContext); -+ server.setHandler(httpContext); - - try { - server.start(); -@@ -241,8 +244,8 @@ - return sslConnector; - } - -- private Context createHttpContext(Dictionary dictionary) { -- Context httpContext = new Context(); -+ private ServletContextHandler createHttpContext(Dictionary dictionary) { -+ ServletContextHandler httpContext = new ServletContextHandler(); - httpContext.setAttribute(INTERNAL_CONTEXT_CLASSLOADER, Thread.currentThread().getContextClassLoader()); - httpContext.setClassLoader(this.getClass().getClassLoader()); - -Index: src/org/slf4j/Logger.java -=================================================================== -RCS file: /cvsroot/rt/org.eclipse.equinox/compendium/bundles/org.eclipse.equinox.http.jetty6/src/org/slf4j/Logger.java,v -retrieving revision 1.2 -diff -u -r1.2 Logger.java ---- src/org/slf4j/Logger.java 17 Apr 2009 20:24:43 -0000 1.2 -+++ src/org/slf4j/Logger.java 16 Apr 2010 21:35:58 -0000 -@@ -10,8 +10,8 @@ - *******************************************************************************/ - package org.slf4j; - --import org.mortbay.log.Log; --import org.mortbay.log.StdErrLog; -+import org.eclipse.jetty.util.log.Log; -+import org.eclipse.jetty.util.log.StdErrLog; - - // NOTE: This class is not a real SLF4J implementation and MUST NOT be exported as a general implementation! - // It is a place-holder to allow overriding the default logging done in Jetty -@@ -80,7 +80,7 @@ - setDebugEnabled(true); - } - -- public org.mortbay.log.Logger getLogger(String name) { -+ public org.eclipse.jetty.util.log.Logger getLogger(String name) { - if ((name == null && this.localName == null) || (name != null && name.equals(this.localName))) - return this; - return new Logger(name); diff --git rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java index c9224bd..4435b86 100755 --- rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java +++ rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty8/src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java @@ -18,21 +18,21 @@ import org.eclipse.equinox.http.jetty.JettyConstants; import org.eclipse.equinox.http.jetty.JettyCustomizer; import org.eclipse.equinox.http.servlet.HttpServiceServlet; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.bio.SocketConnector; -import org.eclipse.jetty.server.nio.SelectChannelConnector; +import org.eclipse.jetty.server.*; import org.eclipse.jetty.server.session.HashSessionManager; import org.eclipse.jetty.server.session.SessionHandler; -import org.eclipse.jetty.server.ssl.SslSocketConnector; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.util.ssl.SslContextFactory; import org.osgi.framework.Constants; import org.osgi.service.cm.ConfigurationException; import org.osgi.service.cm.ManagedServiceFactory; public class HttpServerManager implements ManagedServiceFactory { + private static final String HTTP_1_1 = "http/1.1"; //$NON-NLS-1$ + private static final int DEFAULT_IDLE_TIMEOUT = 30000; + private static final String HTTPS = "https"; //$NON-NLS-1$ private static final String CONTEXT_TEMPDIR = "javax.servlet.context.tempdir"; //$NON-NLS-1$ private static final String DIR_PREFIX = "pid_"; //$NON-NLS-1$ private static final String INTERNAL_CONTEXT_CLASSLOADER = "org.eclipse.equinox.http.jetty.internal.ContextClassLoader"; //$NON-NLS-1$ @@ -69,18 +69,38 @@ JettyCustomizer customizer = createJettyCustomizer(dictionary); - Connector httpConnector = createHttpConnector(dictionary); - if (null != customizer) - httpConnector = (Connector) customizer.customizeHttpConnector(httpConnector, dictionary); + /** + * May be modified by createHttp(s)Connector. + */ + HttpConfiguration http_config = new HttpConfiguration(); - if (httpConnector != null) + ServerConnector httpConnector = createHttpConnector(dictionary, server, http_config); + + ServerConnector httpsConnector = createHttpsConnector(dictionary, server, http_config); + + if (null != customizer) + httpConnector = (ServerConnector) customizer.customizeHttpConnector(httpConnector, dictionary); + + if (httpConnector != null) { + try { + httpConnector.open(); + } catch (IOException e) { + e.printStackTrace(); + } server.addConnector(httpConnector); + } - Connector httpsConnector = createHttpsConnector(dictionary); if (null != customizer) - httpsConnector = (Connector) customizer.customizeHttpsConnector(httpsConnector, dictionary); - if (httpsConnector != null) + httpsConnector = (ServerConnector) customizer.customizeHttpsConnector(httpsConnector, dictionary); + + if (httpsConnector != null) { + try { + httpsConnector.open(); + } catch (IOException e) { + e.printStackTrace(); + } server.addConnector(httpsConnector); + } ServletHolder holder = new ServletHolder(new InternalHttpServiceServlet()); holder.setInitOrder(0); @@ -112,9 +132,74 @@ try { server.start(); } catch (Exception e) { - throw new ConfigurationException(pid, e.getMessage(), e); + //throw new ConfigurationException(pid, e.getMessage(), e); } servers.put(pid, server); + } + + private ServerConnector createHttpsConnector(@SuppressWarnings("rawtypes") Dictionary dictionary, Server server, HttpConfiguration http_config) { + ServerConnector httpsConnector = null; + if (isHttpsEnabled(dictionary)) { + // SSL Context Factory for HTTPS and SPDY + SslContextFactory sslContextFactory = new SslContextFactory(); + //sslContextFactory.setKeyStore(KeyS) + //Not sure if the next tree are properly migrated from jetty 8... + sslContextFactory.setKeyStorePath((String) dictionary.get(JettyConstants.SSL_KEYSTORE)); + sslContextFactory.setKeyStorePassword((String) dictionary.get(JettyConstants.SSL_PASSWORD)); + sslContextFactory.setKeyManagerPassword((String) dictionary.get(JettyConstants.SSL_KEYPASSWORD)); + + String keystoreType = (String) dictionary.get(JettyConstants.SSL_KEYSTORETYPE); + if (keystoreType != null) { + sslContextFactory.setKeyStoreType(keystoreType); + } + + String protocol = (String) dictionary.get(JettyConstants.SSL_PROTOCOL); + if (protocol != null) { + sslContextFactory.setProtocol(protocol); + } + + Object wantClientAuth = dictionary.get(JettyConstants.SSL_WANTCLIENTAUTH); + if (wantClientAuth != null) { + if (wantClientAuth instanceof String) + wantClientAuth = Boolean.valueOf((String) wantClientAuth); + + sslContextFactory.setWantClientAuth((Boolean) wantClientAuth); + } + + Object needClientAuth = dictionary.get(JettyConstants.SSL_NEEDCLIENTAUTH); + if (needClientAuth != null) { + if (needClientAuth instanceof String) + needClientAuth = Boolean.valueOf((String) needClientAuth); + + sslContextFactory.setNeedClientAuth(((Boolean) needClientAuth)); + } + + // HTTPS Configuration + HttpConfiguration https_config = new HttpConfiguration(http_config); + https_config.addCustomizer(new SecureRequestCustomizer()); + + // HTTPS connector + httpsConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory, HTTP_1_1), new HttpConnectionFactory(https_config)); + httpsConnector.setPort(getIntProperty(dictionary, JettyConstants.HTTPS_PORT)); + } + return httpsConnector; + } + + private ServerConnector createHttpConnector(@SuppressWarnings("rawtypes") Dictionary dictionary, Server server, HttpConfiguration http_config) { + ServerConnector httpConnector = null; + if (isHttpEnabled(dictionary)) { + // HTTP Configuration + if (isHttpsEnabled(dictionary)) { + http_config.setSecureScheme(HTTPS); + http_config.setSecurePort(getIntProperty(dictionary, JettyConstants.HTTPS_PORT)); + } + // HTTP connector + httpConnector = new ServerConnector(server, new HttpConnectionFactory(http_config)); + httpConnector.setPort(getIntProperty(dictionary, JettyConstants.HTTP_PORT)); + httpConnector.setHost((String) dictionary.get(JettyConstants.HTTP_HOST)); + httpConnector.setIdleTimeout(DEFAULT_IDLE_TIMEOUT); + } + return httpConnector; } public synchronized void shutdown() throws Exception { @@ -125,176 +210,46 @@ servers.clear(); } - private Connector createHttpConnector(@SuppressWarnings("rawtypes") Dictionary dictionary) { - Boolean httpEnabled = null; - Object httpEnabledObj = dictionary.get(JettyConstants.HTTP_ENABLED); - if (httpEnabledObj instanceof Boolean) - { - httpEnabled = (Boolean) httpEnabledObj; - } - else - if (httpEnabledObj instanceof String) - { - httpEnabled = Boolean.parseBoolean(httpEnabledObj.toString()); - } - if (httpEnabled != null && !httpEnabled.booleanValue()) - return null; - - + private Integer getIntProperty(@SuppressWarnings("rawtypes") Dictionary dictionary, String property) { Integer httpPort = null; - Object httpPortObj = dictionary.get(JettyConstants.HTTP_PORT); - if (httpPortObj instanceof Integer) - { + Object httpPortObj = dictionary.get(property); + if (httpPortObj instanceof Integer) { httpPort = (Integer) httpPortObj; + } else if (httpPortObj instanceof String) { + httpPort = Integer.valueOf(httpPortObj.toString()); } - else - if (httpPortObj instanceof String) - { - httpPort = Integer.valueOf(httpPortObj.toString()); - } - if (httpPort == null) - return null; - - Boolean nioEnabled = null; - Object nioEnabledObj = dictionary.get(JettyConstants.HTTP_NIO); - if (nioEnabledObj instanceof Boolean) - { - nioEnabled = (Boolean) nioEnabledObj; + if (httpPort == null) { + throw new IllegalArgumentException("Expected " + property + "property, but it is not set."); //$NON-NLS-1$//$NON-NLS-2$ } - else - if (nioEnabledObj instanceof String) - { - nioEnabled = Boolean.parseBoolean(nioEnabledObj.toString()); - } - if (nioEnabled == null) - nioEnabled = getDefaultNIOEnablement(); - - Connector connector; - if (nioEnabled.booleanValue()) - connector = new SelectChannelConnector(); - else - connector = new SocketConnector(); - - connector.setPort(httpPort.intValue()); - - String httpHost = (String) dictionary.get(JettyConstants.HTTP_HOST); - if (httpHost != null) { - connector.setHost(httpHost); - } - - if (connector.getPort() == 0) { - try { - connector.open(); - } catch (IOException e) { - // this would be unexpected since we're opening the next available port - e.printStackTrace(); - } - } - return connector; + return httpPort; } - private Boolean getDefaultNIOEnablement() { - Properties systemProperties = System.getProperties(); - String javaVendor = systemProperties.getProperty("java.vendor", ""); //$NON-NLS-1$ //$NON-NLS-2$ - if (javaVendor.equals("IBM Corporation")) { //$NON-NLS-1$ - String javaVersion = systemProperties.getProperty("java.version", ""); //$NON-NLS-1$ //$NON-NLS-2$ - if (javaVersion.startsWith("1.4")) //$NON-NLS-1$ - return Boolean.FALSE; - // Note: no problems currently logged with 1.5 - if (javaVersion.equals("1.6.0")) { //$NON-NLS-1$ - String jclVersion = systemProperties.getProperty("java.jcl.version", ""); //$NON-NLS-1$ //$NON-NLS-2$ - if (jclVersion.startsWith("2007")) //$NON-NLS-1$ - return Boolean.FALSE; - if (jclVersion.startsWith("2008") && !jclVersion.startsWith("200811") && !jclVersion.startsWith("200812")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - return Boolean.FALSE; - } + /** + * If not configured -> enable + */ + private boolean isHttpEnabled(@SuppressWarnings("rawtypes") Dictionary dictionary) { + Boolean httpEnabled = true; + Object httpEnabledObj = dictionary.get(JettyConstants.HTTP_ENABLED); + if (httpEnabledObj instanceof Boolean) { + httpEnabled = (Boolean) httpEnabledObj; + } else if (httpEnabledObj instanceof String) { + httpEnabled = Boolean.parseBoolean(httpEnabledObj.toString()); } - return Boolean.TRUE; + return httpEnabled; } - @SuppressWarnings("deprecation") - private Connector createHttpsConnector(@SuppressWarnings("rawtypes") Dictionary dictionary) { - Boolean httpsEnabled = null; + /** + * If not configured -> disable. + */ + private boolean isHttpsEnabled(@SuppressWarnings("rawtypes") Dictionary dictionary) { + Boolean httpsEnabled = false; Object httpsEnabledObj = dictionary.get(JettyConstants.HTTPS_ENABLED); - if (httpsEnabledObj instanceof Boolean) - { - httpsEnabled = (Boolean) httpsEnabledObj; + if (httpsEnabledObj instanceof Boolean) { + httpsEnabled = (Boolean) httpsEnabledObj; + } else if (httpsEnabledObj instanceof String) { + httpsEnabled = Boolean.parseBoolean(httpsEnabledObj.toString()); } - else - if (httpsEnabledObj instanceof String) - { - httpsEnabled = Boolean.parseBoolean(httpsEnabledObj.toString()); - } - if (httpsEnabled == null || !httpsEnabled.booleanValue()) - return null; - - Integer httpsPort = null; - Object httpsPortObj = dictionary.get(JettyConstants.HTTPS_PORT); - if (httpsPortObj instanceof Integer) - { - httpsPort = (Integer) httpsPortObj; - } - else - if (httpsPortObj instanceof String) - { - httpsPort = Integer.valueOf(httpsPortObj.toString()); - } - if (httpsPort == null) - return null; - - SslSocketConnector sslConnector = new SslSocketConnector(); - sslConnector.setPort(httpsPort.intValue()); - - String httpsHost = (String) dictionary.get(JettyConstants.HTTPS_HOST); - if (httpsHost != null) { - sslConnector.setHost(httpsHost); - } - - String keyStore = (String) dictionary.get(JettyConstants.SSL_KEYSTORE); - if (keyStore != null) - sslConnector.setKeystore(keyStore); - - String password = (String) dictionary.get(JettyConstants.SSL_PASSWORD); - if (password != null) - sslConnector.setPassword(password); - - String keyPassword = (String) dictionary.get(JettyConstants.SSL_KEYPASSWORD); - if (keyPassword != null) - sslConnector.setKeyPassword(keyPassword); - - Object needClientAuth = dictionary.get(JettyConstants.SSL_NEEDCLIENTAUTH); - if (needClientAuth != null) { - if (needClientAuth instanceof String) - needClientAuth = Boolean.valueOf((String) needClientAuth); - - sslConnector.setNeedClientAuth(((Boolean) needClientAuth).booleanValue()); - } - - Object wantClientAuth = dictionary.get(JettyConstants.SSL_WANTCLIENTAUTH); - if (wantClientAuth != null) { - if (wantClientAuth instanceof String) - wantClientAuth = Boolean.valueOf((String) wantClientAuth); - - sslConnector.setWantClientAuth(((Boolean) wantClientAuth).booleanValue()); - } - - String protocol = (String) dictionary.get(JettyConstants.SSL_PROTOCOL); - if (protocol != null) - sslConnector.setProtocol(protocol); - - String keystoreType = (String) dictionary.get(JettyConstants.SSL_KEYSTORETYPE); - if (keystoreType != null) - sslConnector.setKeystoreType(keystoreType); - - if (sslConnector.getPort() == 0) { - try { - sslConnector.open(); - } catch (IOException e) { - // this would be unexpected since we're opening the next available port - e.printStackTrace(); - } - } - return sslConnector; + return httpsEnabled; } private ServletContextHandler createHttpContext(@SuppressWarnings("rawtypes") Dictionary dictionary) { @@ -316,15 +271,11 @@ HashSessionManager sessionManager = new HashSessionManager(); Integer sessionInactiveInterval = null; Object sessionInactiveIntervalObj = dictionary.get(JettyConstants.CONTEXT_SESSIONINACTIVEINTERVAL); - if (sessionInactiveIntervalObj instanceof Integer) - { + if (sessionInactiveIntervalObj instanceof Integer) { sessionInactiveInterval = (Integer) sessionInactiveIntervalObj; + } else if (sessionInactiveIntervalObj instanceof String) { + sessionInactiveInterval = Integer.valueOf(sessionInactiveIntervalObj.toString()); } - else - if (sessionInactiveIntervalObj instanceof String) - { - sessionInactiveInterval = Integer.valueOf(sessionInactiveIntervalObj.toString()); - } if (sessionInactiveInterval != null) sessionManager.setMaxInactiveInterval(sessionInactiveInterval.intValue());