Upgrading rest sb protocol with jersey 2.22.2, implementing different connection test

Change-Id: Iba64847b535826f24ae4dc0ab3454a31328406ac
diff --git a/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java b/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java
index d8ebda6..2f25bb3 100644
--- a/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java
+++ b/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java
@@ -50,14 +50,7 @@
 import org.onosproject.protocol.rest.RestSBDevice;
 import org.slf4j.Logger;
 
-import javax.net.ssl.HttpsURLConnection;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Base64;
+import javax.ws.rs.ProcessingException;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
@@ -189,9 +182,8 @@
                 UNKNOWN, UNKNOWN,
                 cid,
                 annotations);
-        providerService.deviceConnected(deviceId, deviceDescription);
         nodeId.setActive(true);
-        controller.addDevice(nodeId);
+        providerService.deviceConnected(deviceId, deviceDescription);
         addedDevices.add(deviceId);
     }
 
@@ -210,7 +202,11 @@
                 toBeRemoved.removeAll(cfg.getDevicesAddresses());
                 //Adding new devices
                 cfg.getDevicesAddresses().stream()
-                        .filter(device -> testDeviceConnection(device))
+                        .filter(device -> {
+                            device.setActive(false);
+                            controller.addDevice(device);
+                            return testDeviceConnection(device);
+                        })
                         .forEach(device -> {
                             deviceAdded(device);
                         });
@@ -237,40 +233,9 @@
 
     private boolean testDeviceConnection(RestSBDevice device) {
         try {
-            URL url;
-            if (device.url() == null) {
-                url = new URL(device.protocol(), device.ip().toString(), device.port(), "");
-            } else {
-                url = new URL(device.protocol() + URL_SEPARATOR + device.url());
-            }
-            HttpURLConnection urlConn;
-            if (device.protocol().equals(HTTPS)) {
-                //FIXME this method provides no security accepting all SSL certs.
-                RestDeviceProviderUtilities.enableSslCert();
-
-                urlConn = (HttpsURLConnection) url.openConnection();
-            } else {
-                urlConn = (HttpURLConnection) url.openConnection();
-            }
-            if (device.username() != null) {
-                String pwd = device.password() == null ? "" : ":" + device.password();
-                String userPassword = device.username() + pwd;
-                String basicAuth = Base64.getEncoder()
-                        .encodeToString(userPassword.getBytes(StandardCharsets.UTF_8));
-                urlConn.setRequestProperty(AUTHORIZATION_PROPERTY, BASIC_AUTH_PREFIX + basicAuth);
-            }
-            urlConn.setConnectTimeout(TEST_CONNECT_TIMEOUT);
-            boolean open = urlConn.getResponseCode() == (HttpsURLConnection.HTTP_OK);
-            if (!open) {
-                log.error("Device {} not accessibile, response code {} ", device,
-                          urlConn.getResponseCode());
-            }
-            urlConn.disconnect();
-            return open;
-
-        } catch (IOException | NoSuchAlgorithmException | KeyManagementException e) {
-            log.error("Device {} not reachable, error creating {} connection", device,
-                      device.protocol(), e);
+            return controller.get(device.deviceId(), "", "json") != null;
+        } catch (ProcessingException e) {
+            log.warn("Cannot connect to device {}", device, e);
         }
         return false;
     }