Author: cziegeler
Date: Tue Jul 11 08:26:08 2017
New Revision: 1801567

URL: http://svn.apache.org/viewvc?rev=1801567&view=rev
Log:
FELIX-5664 : Update Jetty to 9.3.20.v20170531 or 9.4.6.v20170531 to fix 
CVE-2017-9735Adjust ittest to R6 implementation

Modified:
    
felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/EventListenerTest.java
    
felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java
    felix/trunk/http/jetty/pom.xml
    
felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyActivator.java
    
felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java

Modified: 
felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/EventListenerTest.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/EventListenerTest.java?rev=1801567&r1=1801566&r2=1801567&view=diff
==============================================================================
--- 
felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/EventListenerTest.java
 (original)
+++ 
felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/EventListenerTest.java
 Tue Jul 11 08:26:08 2017
@@ -65,7 +65,7 @@ public class EventListenerTest extends B
 {
     private Dictionary<String, Object> getListenerProps()
     {
-        final Dictionary<String, Object> props = new Hashtable<String, 
Object>();
+        final Dictionary<String, Object> props = new Hashtable<>();
         props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER, "true");
 
         return props;
@@ -73,7 +73,7 @@ public class EventListenerTest extends B
 
     private Dictionary<String, Object> getServletProps(final String pattern)
     {
-        final Dictionary<String, Object> props = new Hashtable<String, 
Object>();
+        final Dictionary<String, Object> props = new Hashtable<>();
         props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, 
pattern);
 
         return props;
@@ -480,7 +480,7 @@ public class EventListenerTest extends B
         };
 
         // register with all contexts
-        final Dictionary<String, Object> props = new Hashtable<String, 
Object>();
+        final Dictionary<String, Object> props = new Hashtable<>();
         props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER, "true");
         props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT, "(" 
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME + "=*)");
         final ServiceRegistration<ServletRequestListener> reg = 
m_context.registerService(ServletRequestListener.class, listener, props);

Modified: 
felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java?rev=1801567&r1=1801566&r2=1801567&view=diff
==============================================================================
--- 
felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java
 (original)
+++ 
felix/trunk/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java
 Tue Jul 11 08:26:08 2017
@@ -614,10 +614,9 @@ public class HttpServiceRuntimeTest exte
         ServletContextDTO defaultContextDTO = runtimeDTO.servletContextDTOs[2];
         long contextServiceId = defaultContextDTO.serviceId;
 
-        assertEquals(Arrays.toString(defaultContextDTO.servletDTOs), 2, 
defaultContextDTO.servletDTOs.length);
-        assertServlet(defaultContextDTO.servletDTOs, "default servlet", 
contextServiceId);
-        assertServlet(defaultContextDTO.servletDTOs, "default error page", 
contextServiceId);
-
+        assertEquals(1, defaultContextDTO.servletDTOs.length);
+        assertEquals("default servlet", defaultContextDTO.servletDTOs[0].name);
+        assertEquals(contextServiceId, 
defaultContextDTO.servletDTOs[0].servletContextId);
         assertEquals(1, defaultContextDTO.filterDTOs.length);
         assertEquals("default filter", defaultContextDTO.filterDTOs[0].name);
         assertEquals(contextServiceId, 
defaultContextDTO.filterDTOs[0].servletContextId);
@@ -631,10 +630,9 @@ public class HttpServiceRuntimeTest exte
         ServletContextDTO testContextDTO = runtimeDTO.servletContextDTOs[1];
         contextServiceId = testContextDTO.serviceId;
 
-        assertEquals(2, testContextDTO.servletDTOs.length);
-        assertServlet(testContextDTO.servletDTOs, "context servlet", 
contextServiceId);
-        assertServlet(testContextDTO.servletDTOs, "context error page", 
contextServiceId);
-
+        assertEquals(1, testContextDTO.servletDTOs.length);
+        assertEquals("context servlet", testContextDTO.servletDTOs[0].name);
+        assertEquals(contextServiceId, 
testContextDTO.servletDTOs[0].servletContextId);
         assertEquals(1, testContextDTO.filterDTOs.length);
         assertEquals("context filter", testContextDTO.filterDTOs[0].name);
         assertEquals(contextServiceId, 
testContextDTO.filterDTOs[0].servletContextId);
@@ -1285,8 +1283,9 @@ public class HttpServiceRuntimeTest exte
         assertTrue(0 > 
runtimeDTO.servletContextDTOs[0].servletDTOs[0].serviceId);
     }
 
+    // As specified in OSGi Compendium Release 6, Chapter 140.9
     @Test
-    public void namedServletIsNotIgnored() throws InterruptedException
+    public void serviceWithoutRequiredPropertiesIsIgnored() throws 
InterruptedException
     {
         // Neither pattern nor error page specified
         Dictionary<String, ?> properties = 
createDictionary(HTTP_WHITEBOARD_SERVLET_NAME, "servlet");
@@ -1301,9 +1300,7 @@ public class HttpServiceRuntimeTest exte
 
         assertEquals(0, runtimeDTO.failedServletContextDTOs.length);
         ServletContextDTO defaultContext = assertDefaultContext(runtimeDTO);
-        assertEquals(1, defaultContext.servletDTOs.length);
-        assertEquals(0, defaultContext.servletDTOs[0].patterns.length);
-        assertEquals("servlet", defaultContext.servletDTOs[0].name);
+        assertEquals(0, defaultContext.servletDTOs.length);
     }
 
     @Test

Modified: felix/trunk/http/jetty/pom.xml
URL: 
http://svn.apache.org/viewvc/felix/trunk/http/jetty/pom.xml?rev=1801567&r1=1801566&r2=1801567&view=diff
==============================================================================
--- felix/trunk/http/jetty/pom.xml (original)
+++ felix/trunk/http/jetty/pom.xml Tue Jul 11 08:26:08 2017
@@ -39,7 +39,7 @@
     
     <properties>
         <felix.java.version>8</felix.java.version>
-        <jetty.version>9.3.15.v20161220</jetty.version>
+        <jetty.version>9.3.20.v20170531</jetty.version>
     </properties>
 
     <build>
@@ -47,7 +47,7 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
-                <version>3.2.0</version>
+                <version>3.3.0</version>
                 <configuration>
                     <instructions>
                        <X-Jetty-Version>
@@ -89,7 +89,7 @@
                             org.osgi.service.http;version="[1.2.1,1.3)",
                             org.osgi.service.http.context;version="[1.0,1.1)",
                             org.osgi.service.http.runtime;version="[1.0,1.1)",
-                            
org.osgi.service.http.runtime.dto;version="[1.1,1.2)",
+                            
org.osgi.service.http.runtime.dto;version="[1.0,1.1)",
                             *
                         </Import-Package>
                         <DynamicImport-Package>
@@ -188,12 +188,12 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.http.api</artifactId>
-            <version>3.0.1-SNAPSHOT</version>
+            <version>3.0.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.http.base</artifactId>
-            <version>3.0.19-SNAPSHOT</version>
+            <version>3.0.18</version>
         </dependency>
         <dependency>
             <groupId>commons-fileupload</groupId>

Modified: 
felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyActivator.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyActivator.java?rev=1801567&r1=1801566&r2=1801567&view=diff
==============================================================================
--- 
felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyActivator.java
 (original)
+++ 
felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyActivator.java
 Tue Jul 11 08:26:08 2017
@@ -25,7 +25,6 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceFactory;
 import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.cm.ManagedServiceFactory;
 
 public final class JettyActivator extends AbstractHttpActivator
 {
@@ -39,7 +38,7 @@ public final class JettyActivator extend
     protected void doStart() throws Exception
     {
         super.doStart();
-        final Dictionary<String, Object> properties = new Hashtable<String, 
Object>();
+        final Dictionary<String, Object> properties = new Hashtable<>();
         properties.put(Constants.SERVICE_DESCRIPTION, "Metatype provider for 
Jetty Http Service");
         properties.put(Constants.SERVICE_VENDOR, "The Apache Software 
Foundation");
         properties.put("metatype.pid", JettyService.PID);
@@ -63,7 +62,7 @@ public final class JettyActivator extend
         this.jetty = new JettyService(getBundleContext(), 
getHttpServiceController());
         this.jetty.start();
 
-        final Dictionary<String, Object> propertiesCustomizer = new 
Hashtable<String, Object>();
+        final Dictionary<String, Object> propertiesCustomizer = new 
Hashtable<>();
         propertiesCustomizer.put(Constants.SERVICE_DESCRIPTION, "Load Balancer 
Customizer Factory for Jetty Http Service");
         propertiesCustomizer.put(Constants.SERVICE_VENDOR, "The Apache 
Software Foundation");
         loadBalancerCustomizerFactoryReg = 
this.getBundleContext().registerService(LoadBalancerCustomizerFactory.class,

Modified: 
felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java?rev=1801567&r1=1801566&r2=1801567&view=diff
==============================================================================
--- 
felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
 (original)
+++ 
felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
 Tue Jul 11 08:26:08 2017
@@ -42,9 +42,9 @@ import javax.servlet.SessionTrackingMode
 import org.apache.felix.http.base.internal.HttpServiceController;
 import org.apache.felix.http.base.internal.logger.SystemLogger;
 import org.eclipse.jetty.http.HttpVersion;
+import org.eclipse.jetty.io.ConnectionStatistics;
 import org.eclipse.jetty.security.HashLoginService;
 import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.ConnectorStatistics;
 import org.eclipse.jetty.server.HttpConfiguration;
 import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.server.SecureRequestCustomizer;
@@ -54,6 +54,7 @@ import org.eclipse.jetty.server.SessionM
 import org.eclipse.jetty.server.SslConnectionFactory;
 import org.eclipse.jetty.server.handler.ContextHandlerCollection;
 import org.eclipse.jetty.server.handler.StatisticsHandler;
+import org.eclipse.jetty.server.session.SessionHandler;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.eclipse.jetty.util.component.AbstractLifeCycle;
@@ -111,7 +112,7 @@ public final class JettyService extends
         this.context = context;
         this.config = new JettyConfig(this.context);
         this.controller = controller;
-        this.deployments = new LinkedHashMap<String, Deployment>();
+        this.deployments = new LinkedHashMap<>();
         this.executor = Executors.newSingleThreadExecutor(new ThreadFactory()
         {
             @Override
@@ -139,13 +140,13 @@ public final class JettyService extends
         startJetty();
 
         if (this.registerManagedService) {
-                       final Dictionary<String, Object> props = new 
Hashtable<String, Object>();
+                       final Dictionary<String, Object> props = new 
Hashtable<>();
                        props.put(Constants.SERVICE_PID, PID);
                        this.configServiceReg = 
this.context.registerService("org.osgi.service.cm.ManagedService",
                                new JettyManagedService(this), props);
         }
 
-        this.eventAdmintTracker = new ServiceTracker<EventAdmin, 
EventAdmin>(this.context, EventAdmin.class,
+        this.eventAdmintTracker = new ServiceTracker<>(this.context, 
EventAdmin.class,
                 new ServiceTrackerCustomizer<EventAdmin, EventAdmin>()
         {
             @Override
@@ -171,7 +172,7 @@ public final class JettyService extends
         });
         this.eventAdmintTracker.open();
 
-        this.bundleTracker = new BundleTracker<Deployment>(this.context, 
Bundle.ACTIVE | Bundle.STARTING,
+        this.bundleTracker = new BundleTracker<>(this.context, Bundle.ACTIVE | 
Bundle.STARTING,
                 new BundleTrackerCustomizer<Deployment>() {
 
             @Override
@@ -253,7 +254,7 @@ public final class JettyService extends
 
     private Hashtable<String, Object> getServiceProperties()
     {
-        Hashtable<String, Object> props = new Hashtable<String, Object>();
+        Hashtable<String, Object> props = new Hashtable<>();
         // Add some important configuration properties...
         this.config.setServiceProperties(props);
         addEndpointProperties(props, null);
@@ -340,7 +341,9 @@ public final class JettyService extends
 
             this.parent = new ContextHandlerCollection();
 
-            ServletContextHandler context = new 
ServletContextHandler(this.parent, this.config.getContextPath(), 
ServletContextHandler.SESSIONS);
+            ServletContextHandler context = new 
ServletContextHandler(this.parent,
+                    this.config.getContextPath(),
+                    ServletContextHandler.SESSIONS);
 
             configureSessionManager(context);
             this.controller.getEventDispatcher().setActive(true);
@@ -559,7 +562,7 @@ public final class JettyService extends
 
         if (this.config.isRegisterMBeans())
         {
-            connector.addBean(new ConnectorStatistics());
+            connector.addBean(new ConnectionStatistics());
         }
     }
 
@@ -580,19 +583,18 @@ public final class JettyService extends
         //Changed from 8.x to 9.x
         //maxIdleTime -> ServerConnector.setIdleTimeout
         //requestBufferSize -> HttpConnectionFactory.setInputBufferSize
-        //statsOn -> ServerConnector.addBean(new ConnectorStatistics());
+        //statsOn -> ServerConnector.addBean(new ConnectionStatistics());
     }
 
     private void configureSessionManager(final ServletContextHandler context)
     {
-        final SessionManager manager = 
context.getSessionHandler().getSessionManager();
+        final SessionHandler sessionHandler = context.getSessionHandler();
+        
sessionHandler.getSessionManager().setMaxInactiveInterval(this.config.getSessionTimeout()
 * 60);
+        
sessionHandler.getSessionManager().setSessionIdPathParameterName(this.config.getProperty(JettyConfig.FELIX_JETTY_SERVLET_SESSION_ID_PATH_PARAMETER_NAME,
 SessionManager.__DefaultSessionIdPathParameterName));
+        
sessionHandler.getSessionManager().setCheckingRemoteSessionIdEncoding(this.config.getBooleanProperty(JettyConfig.FELIX_JETTY_SERVLET_CHECK_REMOTE_SESSION_ENCODING,
 true));
+        
sessionHandler.getSessionManager().setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
 
-        manager.setMaxInactiveInterval(this.config.getSessionTimeout() * 60);
-        
manager.setSessionIdPathParameterName(this.config.getProperty(JettyConfig.FELIX_JETTY_SERVLET_SESSION_ID_PATH_PARAMETER_NAME,
 SessionManager.__DefaultSessionIdPathParameterName));
-        
manager.setCheckingRemoteSessionIdEncoding(this.config.getBooleanProperty(JettyConfig.FELIX_JETTY_SERVLET_CHECK_REMOTE_SESSION_ENCODING,
 true));
-        
manager.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
-
-        SessionCookieConfig cookieConfig = manager.getSessionCookieConfig();
+        final SessionCookieConfig cookieConfig = 
sessionHandler.getSessionManager().getSessionCookieConfig();
         
cookieConfig.setName(this.config.getProperty(JettyConfig.FELIX_JETTY_SERVLET_SESSION_COOKIE_NAME,
 SessionManager.__DefaultSessionCookie));
         
cookieConfig.setDomain(this.config.getProperty(JettyConfig.FELIX_JETTY_SERVLET_SESSION_DOMAIN,
 SessionManager.__DefaultSessionDomain));
         
cookieConfig.setPath(this.config.getProperty(JettyConfig.FELIX_JETTY_SERVLET_SESSION_PATH,
 context.getContextPath()));
@@ -677,7 +679,7 @@ public final class JettyService extends
 
     private List<String> getEndpoints(final Connector connector, final 
List<NetworkInterface> interfaces)
     {
-        final List<String> endpoints = new ArrayList<String>();
+        final List<String> endpoints = new ArrayList<>();
         for (final NetworkInterface ni : interfaces)
         {
             final Enumeration<InetAddress> ias = ni.getInetAddresses();
@@ -696,7 +698,7 @@ public final class JettyService extends
 
     private void addEndpointProperties(final Hashtable<String, Object> props, 
Object container)
     {
-        final List<String> endpoints = new ArrayList<String>();
+        final List<String> endpoints = new ArrayList<>();
 
         final Connector[] connectors = this.server.getConnectors();
         if (connectors != null)
@@ -709,8 +711,8 @@ public final class JettyService extends
                 {
                     try
                     {
-                        final List<NetworkInterface> interfaces = new 
ArrayList<NetworkInterface>();
-                        final List<NetworkInterface> loopBackInterfaces = new 
ArrayList<NetworkInterface>();
+                        final List<NetworkInterface> interfaces = new 
ArrayList<>();
+                        final List<NetworkInterface> loopBackInterfaces = new 
ArrayList<>();
                         final Enumeration<NetworkInterface> nis = 
NetworkInterface.getNetworkInterfaces();
                         while (nis.hasMoreElements())
                         {
@@ -817,7 +819,7 @@ public final class JettyService extends
                     JettyService.this.parent.addHandler(context);
                     context.start();
 
-                    Dictionary<String, Object> props = new Hashtable<String, 
Object>();
+                    Dictionary<String, Object> props = new Hashtable<>();
                     props.put(WEB_SYMBOLIC_NAME, 
webAppBundle.getSymbolicName());
                     props.put(WEB_VERSION, webAppBundle.getVersion());
                     props.put(WEB_CONTEXT_PATH, deployment.getContextPath());


Reply via email to