FELIX-5002 : Upgrade Jetty to 9.3.x and cometd to 3.0.x

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1723480 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/http/cometd/pom.xml b/http/cometd/pom.xml
index 6c220fd..0c6e435 100644
--- a/http/cometd/pom.xml
+++ b/http/cometd/pom.xml
@@ -38,7 +38,7 @@
     </scm>
 
     <properties>
-        <felix.java.version>7</felix.java.version>
+        <felix.java.version>8</felix.java.version>
     </properties>
 
     <build>
diff --git a/http/cometd/src/main/java/org/apache/felix/http/cometd/internal/CometdServiceImpl.java b/http/cometd/src/main/java/org/apache/felix/http/cometd/internal/CometdServiceImpl.java
index c163e69..7462f41 100644
--- a/http/cometd/src/main/java/org/apache/felix/http/cometd/internal/CometdServiceImpl.java
+++ b/http/cometd/src/main/java/org/apache/felix/http/cometd/internal/CometdServiceImpl.java
@@ -24,7 +24,7 @@
 import org.apache.felix.http.base.internal.logger.SystemLogger;
 import org.apache.felix.http.cometd.CometdService;
 import org.cometd.bayeux.server.BayeuxServer;
-import org.cometd.server.CometdServlet;
+import org.cometd.server.CometDServlet;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
@@ -46,14 +46,14 @@
     private ServiceRegistration configServiceReg;
     private ServiceTracker httpServiceTracker;
     private ServiceRegistration cometdServiceReg;
-    private CometdServlet continuationCometdServlet;
+    private CometDServlet continuationCometdServlet;
 
     public CometdServiceImpl(BundleContext context)
     {
         this.context = context;
         this.config = new CometdConfig(this.context);
     }
-    
+
     public void start()
         throws Exception
     {
@@ -77,6 +77,7 @@
         }
     }
 
+    @Override
     public void updated(Dictionary props)
     {
         this.config.update(props);
@@ -89,6 +90,7 @@
         }
     }
 
+    @Override
     public Object addingService(ServiceReference reference)
     {
         Object service = this.context.getService(reference);
@@ -96,12 +98,14 @@
         return service;
     }
 
+    @Override
     public void modifiedService(ServiceReference reference, Object service)
     {
         this.unregister((HttpService)service);
         this.register((HttpService)service);
     }
 
+    @Override
     public void removedService(ServiceReference reference, Object service)
     {
         this.unregister((HttpService)service);
@@ -109,7 +113,7 @@
 
     private void register(HttpService httpService) {
         if (this.continuationCometdServlet == null) {
-            this.continuationCometdServlet = new CometdServlet();
+            this.continuationCometdServlet = new CometDServlet();
         }
         try {
           Dictionary dictionary = new Hashtable();
@@ -131,6 +135,7 @@
         }
     }
 
+    @Override
     public BayeuxServer getBayeuxServer() {
         return this.continuationCometdServlet.getBayeux();
     }
diff --git a/http/itest/pom.xml b/http/itest/pom.xml
index b9050f7..34a8c4b 100644
--- a/http/itest/pom.xml
+++ b/http/itest/pom.xml
@@ -31,7 +31,7 @@
 	</scm>
 
 	<properties>
-	    <felix.java.version>7</felix.java.version>
+	    <felix.java.version>8</felix.java.version>
 		<pax.exam.version>4.4.0</pax.exam.version>
 		<pax.url.aether.version>2.4.1</pax.url.aether.version>
 		<http.servlet.api.version>1.1.3-SNAPSHOT</http.servlet.api.version>
diff --git a/http/jetty/pom.xml b/http/jetty/pom.xml
index 16987b8..73a0781 100644
--- a/http/jetty/pom.xml
+++ b/http/jetty/pom.xml
@@ -38,7 +38,7 @@
     </scm>
     
     <properties>
-        <felix.java.version>7</felix.java.version>
+        <felix.java.version>8</felix.java.version>
     	<!-- jetty.version is moved to http-parent POM -->
     </properties>
 
diff --git a/http/parent/pom.xml b/http/parent/pom.xml
index 1132a9c..ea8a0ce 100755
--- a/http/parent/pom.xml
+++ b/http/parent/pom.xml
@@ -38,8 +38,8 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    	<jetty.version>9.2.14.v20151106</jetty.version>
-    	<cometd.version>2.8.0</cometd.version>
+    	<jetty.version>9.3.6.v20151106</jetty.version>
+    	<cometd.version>3.0.8</cometd.version>
     	<servlet.version>3.1.0</servlet.version>
         <!--
             Java API and class file compliance. This property supports
diff --git a/http/samples/cometd/pom.xml b/http/samples/cometd/pom.xml
index 823721b..ce7709a 100644
--- a/http/samples/cometd/pom.xml
+++ b/http/samples/cometd/pom.xml
@@ -37,6 +37,10 @@
         <url>http://svn.apache.org/viewvc/felix/trunk/http/samples/cometd/</url>
     </scm>
 
+    <properties>
+        <felix.java.version>8</felix.java.version>
+    </properties>
+
     <build>
         <plugins>
             <plugin>
diff --git a/http/samples/cometd/src/main/java/org/apache/felix/http/samples/cometd/TimeServlet.java b/http/samples/cometd/src/main/java/org/apache/felix/http/samples/cometd/TimeServlet.java
index 4876f2e..d9b81dd 100644
--- a/http/samples/cometd/src/main/java/org/apache/felix/http/samples/cometd/TimeServlet.java
+++ b/http/samples/cometd/src/main/java/org/apache/felix/http/samples/cometd/TimeServlet.java
@@ -31,6 +31,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.cometd.bayeux.MarkedReference;
 import org.cometd.bayeux.server.BayeuxServer;
 import org.cometd.bayeux.server.ConfigurableServerChannel;
 import org.cometd.bayeux.server.LocalSession;
@@ -58,81 +59,81 @@
         "    <script type='text/javascript' src='/js/dojo/dojo.js'></script>\n" +
         "    <script type='text/javascript'>\n" +
         "      dojo.require('dojox.cometd');\n" +
-        "dojo.addOnLoad(function()\n" + 
-        "{\n" + 
-        "    var cometd = dojox.cometd;\n" + 
-        "\n" + 
-        "    function _connectionEstablished()\n" + 
-        "    {\n" + 
-        "        dojo.byId('body').innerHTML += '<div>CometD Connection Established</div>';\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    function _connectionBroken()\n" + 
-        "    {\n" + 
-        "        dojo.byId('body').innerHTML += '<div>CometD Connection Broken</div>';\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    function _connectionClosed()\n" + 
-        "    {\n" + 
-        "        dojo.byId('body').innerHTML += '<div>CometD Connection Closed</div>';\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    // Function that manages the connection status with the Bayeux server\n" + 
-        "    var _connected = false;\n" + 
-        "    function _metaConnect(message)\n" + 
-        "    {\n" + 
-        "        if (cometd.isDisconnected())\n" + 
-        "        {\n" + 
-        "            _connected = false;\n" + 
-        "            _connectionClosed();\n" + 
-        "            return;\n" + 
-        "        }\n" + 
-        "\n" + 
-        "        var wasConnected = _connected;\n" + 
-        "        _connected = message.successful === true;\n" + 
-        "        if (!wasConnected && _connected)\n" + 
-        "        {\n" + 
-        "            _connectionEstablished();\n" + 
-        "        }\n" + 
-        "        else if (wasConnected && !_connected)\n" + 
-        "        {\n" + 
-        "            _connectionBroken();\n" + 
-        "        }\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    // Function invoked when first contacting the server and\n" + 
-        "    // when the server has lost the state of this client\n" + 
-        "    function _metaHandshake(handshake)\n" + 
-        "    {\n" + 
-        "        if (handshake.successful === true)\n" + 
-        "        {\n" + 
-        "            cometd.batch(function()\n" + 
-        "            {\n" + 
-        "                cometd.subscribe('/System/Time', function(message)\n" + 
-        "                {\n" + 
-        "                    dojo.byId('systemTime').innerHTML = '<div>' + message.data + '</div>';\n" + 
-        "                });\n" + 
-        "            });\n" + 
-        "        }\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    // Disconnect when the page unloads\n" + 
-        "    dojo.addOnUnload(function()\n" + 
-        "    {\n" + 
-        "        cometd.disconnect(true);\n" + 
-        "    });\n" + 
-        "\n" + 
-        "    var cometURL = \"http://localhost:8080/system/cometd\";\n" + 
-        "    cometd.configure({\n" + 
-        "        url: cometURL,\n" + 
-        "        logLevel: 'debug'\n" + 
-        "    });\n" + 
-        "\n" + 
-        "    cometd.addListener('/meta/handshake', _metaHandshake);\n" + 
-        "    cometd.addListener('/meta/connect', _metaConnect);\n" + 
-        "\n" + 
-        "    cometd.handshake();\n" + 
-        "});\n" + 
+        "dojo.addOnLoad(function()\n" +
+        "{\n" +
+        "    var cometd = dojox.cometd;\n" +
+        "\n" +
+        "    function _connectionEstablished()\n" +
+        "    {\n" +
+        "        dojo.byId('body').innerHTML += '<div>CometD Connection Established</div>';\n" +
+        "    }\n" +
+        "\n" +
+        "    function _connectionBroken()\n" +
+        "    {\n" +
+        "        dojo.byId('body').innerHTML += '<div>CometD Connection Broken</div>';\n" +
+        "    }\n" +
+        "\n" +
+        "    function _connectionClosed()\n" +
+        "    {\n" +
+        "        dojo.byId('body').innerHTML += '<div>CometD Connection Closed</div>';\n" +
+        "    }\n" +
+        "\n" +
+        "    // Function that manages the connection status with the Bayeux server\n" +
+        "    var _connected = false;\n" +
+        "    function _metaConnect(message)\n" +
+        "    {\n" +
+        "        if (cometd.isDisconnected())\n" +
+        "        {\n" +
+        "            _connected = false;\n" +
+        "            _connectionClosed();\n" +
+        "            return;\n" +
+        "        }\n" +
+        "\n" +
+        "        var wasConnected = _connected;\n" +
+        "        _connected = message.successful === true;\n" +
+        "        if (!wasConnected && _connected)\n" +
+        "        {\n" +
+        "            _connectionEstablished();\n" +
+        "        }\n" +
+        "        else if (wasConnected && !_connected)\n" +
+        "        {\n" +
+        "            _connectionBroken();\n" +
+        "        }\n" +
+        "    }\n" +
+        "\n" +
+        "    // Function invoked when first contacting the server and\n" +
+        "    // when the server has lost the state of this client\n" +
+        "    function _metaHandshake(handshake)\n" +
+        "    {\n" +
+        "        if (handshake.successful === true)\n" +
+        "        {\n" +
+        "            cometd.batch(function()\n" +
+        "            {\n" +
+        "                cometd.subscribe('/System/Time', function(message)\n" +
+        "                {\n" +
+        "                    dojo.byId('systemTime').innerHTML = '<div>' + message.data + '</div>';\n" +
+        "                });\n" +
+        "            });\n" +
+        "        }\n" +
+        "    }\n" +
+        "\n" +
+        "    // Disconnect when the page unloads\n" +
+        "    dojo.addOnUnload(function()\n" +
+        "    {\n" +
+        "        cometd.disconnect(true);\n" +
+        "    });\n" +
+        "\n" +
+        "    var cometURL = \"http://localhost:8080/system/cometd\";\n" +
+        "    cometd.configure({\n" +
+        "        url: cometURL,\n" +
+        "        logLevel: 'debug'\n" +
+        "    });\n" +
+        "\n" +
+        "    cometd.addListener('/meta/handshake', _metaHandshake);\n" +
+        "    cometd.addListener('/meta/connect', _metaConnect);\n" +
+        "\n" +
+        "    cometd.handshake();\n" +
+        "});\n" +
         "    </script>\n" +
         "  </head>\n" +
         "  <body>\n" +
@@ -145,14 +146,13 @@
         this.bayeuxServer = bayeuxServer;
         this.channels = new ArrayList<ServerChannel>();
         for (SystemTopics topic : SystemTopics.values()) {
-        	boolean created = bayeuxServer.createIfAbsent("/System/" + topic, new ServerChannel.Initializer() {
-				public void configureChannel(ConfigurableServerChannel channel) {
+        	MarkedReference<ServerChannel> created = bayeuxServer.createChannelIfAbsent("/System/" + topic, new ConfigurableServerChannel.Initializer() {
+				@Override
+                public void configureChannel(ConfigurableServerChannel channel) {
 					channel.setPersistent(true);
 				}
         	});
-        	if (created) {
-        		this.channels.add(topic.ordinal(), this.bayeuxServer.getChannel("/System/" + topic));
-        	}
+    		this.channels.add(topic.ordinal(), created.getReference());
         }
         this.logDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
 		this.updateTimer = new Timer("System.Time.ClientNotifier");
@@ -196,6 +196,7 @@
         extends TimerTask
     {
 
+        @Override
         public void run() {
             for (SystemTopics topic : SystemTopics.values()) {
                 String topicData;
@@ -209,7 +210,7 @@
                 ServerMessage.Mutable message = bayeuxServer.newMessage();
                 message.setChannel(channels.get(topic.ordinal()).getId());
                 message.setData(topicData);
-                channels.get(topic.ordinal()).publish(session, topicData, null);
+                channels.get(topic.ordinal()).publish(session, message);
             }
         }
     }