https support added
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/TokenStore.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/TokenStore.java
index a51fed7..bd11036 100644
--- a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/TokenStore.java
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/TokenStore.java
@@ -38,8 +38,5 @@
public void save(String gwName, AccessToken token) {
tokens.put(gwName, token);
- }
-
-
-
+ }
}
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/Connection.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/Connection.java
index dc4e4b2..43ee49d 100644
--- a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/Connection.java
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/Connection.java
@@ -14,8 +14,13 @@
import java.net.URI;
import org.apache.log4j.Logger;
+import org.eclipse.jetty.util.component.Container;
+import org.eclipse.jetty.util.component.LifeCycle;
+import org.eclipse.jetty.util.component.LifeCycle.Listener;
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
import org.eclipse.jetty.websocket.client.WebSocketClient;
+import org.eclipse.jetty.websocket.common.WebSocketSession;
+import org.eclipse.jetty.websocket.common.WebSocketSessionListener;
public class Connection {
@@ -42,8 +47,61 @@
this.client = new WebSocketClient();
try {
+
+ org.eclipse.jetty.util.component.Container.Listener l = new org.eclipse.jetty.util.component.Container.Listener() {
+
+ @Override
+ public void beanRemoved(Container parent, Object child) {
+ System.out.println("a");
+
+ }
+
+ @Override
+ public void beanAdded(Container parent, Object child) {
+ System.out.println("a");
+
+ }
+ };
+
+ client.addEventListener(l);
+
+
+ client.addLifeCycleListener(new Listener() {
+
+ @Override
+ public void lifeCycleStopping(LifeCycle event) {
+ System.out.println("a");
+
+ }
+
+ @Override
+ public void lifeCycleStopped(LifeCycle event) {
+ System.out.println("a");
+
+ }
+
+ @Override
+ public void lifeCycleStarting(LifeCycle event) {
+ System.out.println("a");
+
+ }
+
+ @Override
+ public void lifeCycleStarted(LifeCycle event) {
+ System.out.println("a");
+
+ }
+
+ @Override
+ public void lifeCycleFailure(LifeCycle event, Throwable cause) {
+ System.out.println("a");
+ }
+ });
+
client.start();
client.connect(socket, url, request);
+
+
} catch (Throwable t) {
throw new ConnectException("Cant (re)connect gateway " + gatewayName + ": " + t.getMessage());
}
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/ConnectionListener.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/ConnectionListener.java
new file mode 100644
index 0000000..6e162b8
--- /dev/null
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/ConnectionListener.java
@@ -0,0 +1,21 @@
+/**
+ * Copyright (c) 2019 CEA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA - initial API and implementation and/or initial documentation
+ */
+package org.eclipse.sensinact.studio.http.services.client.connectionmanager;
+
+/**
+ * @author Etienne Gandrille
+ */
+public interface ConnectionListener {
+
+ void onConnect(String gatewayname);
+
+ void onDisconnect(String gatewayname);
+}
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/NotifDispatcher.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/NotifDispatcher.java
index ff85b3e..2c39022 100644
--- a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/NotifDispatcher.java
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/NotifDispatcher.java
@@ -27,7 +27,9 @@
private static NotifDispatcher INSTANCE = null;
- private Set<NotifSubscriptionListener> listeners = new HashSet<>();
+ private Set<NotifSubscriptionListener> notifSublisteners = new HashSet<>();
+
+ private Set<ConnectionListener> conlisteners = new HashSet<>();
private static final Logger logger = Logger.getLogger(NotifDispatcher.class);
@@ -41,13 +43,21 @@
}
public void subscribe(NotifSubscriptionListener listener) {
- listeners.add(listener);
+ notifSublisteners.add(listener);
}
public void unsubscribe(NotifSubscriptionListener listener) {
- listeners.remove(listener);
+ notifSublisteners.remove(listener);
}
+ public void subscribe(ConnectionListener listener) {
+ conlisteners.add(listener);
+ }
+
+ public void unsubscribe(ConnectionListener listener) {
+ conlisteners.remove(listener);
+ }
+
void notifyMessage(String gatewayName, String msg) {
System.out.println("Message " + msg);
@@ -93,25 +103,27 @@
}
void notifyGatewayConnected(String gatewayName) {
- System.out.println("GATEWAY CONNECTED !!!! " + gatewayName);
+ for (ConnectionListener listener : conlisteners)
+ listener.onConnect(gatewayName);
}
void notifyGatewayDisconnected(String gatewayName) {
- System.out.println("GATEWAY DISCONNECTED !!!! " + gatewayName);
+ for (ConnectionListener listener : conlisteners)
+ listener.onDisconnect(gatewayName);
}
private void notifyLocation(String gateway, List<MsgSensinact> message) {
- for (NotifSubscriptionListener listener : listeners)
+ for (NotifSubscriptionListener listener : notifSublisteners)
listener.onLocationEvent(gateway, message);
}
private void notifyLifecycle(String gateway, List<MsgSensinact> message) {
- for (NotifSubscriptionListener listener : listeners)
+ for (NotifSubscriptionListener listener : notifSublisteners)
listener.onLifecycleEvent(gateway, message);
}
private void notifyValue(String gateway, List<MsgSensinact> message) {
- for (NotifSubscriptionListener listener : listeners)
+ for (NotifSubscriptionListener listener : notifSublisteners)
listener.onValueEvent(gateway, message);
}
}
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/SensinactSocket.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/SensinactSocket.java
index c06e358..142fbf6 100644
--- a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/SensinactSocket.java
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/SensinactSocket.java
@@ -11,10 +11,6 @@
package org.eclipse.sensinact.studio.http.services.client.connectionmanager;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import org.eclipse.jetty.websocket.api.RemoteEndpoint;
diff --git a/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelUpdater.java b/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelUpdater.java
index 5c2d8f9..1bdd0b1 100644
--- a/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelUpdater.java
+++ b/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelUpdater.java
@@ -31,6 +31,7 @@
import org.eclipse.sensinact.studio.http.messages.snamessage.resourceslist.MsgResourcesList;
import org.eclipse.sensinact.studio.http.services.client.GatewayHttpClient;
import org.eclipse.sensinact.studio.http.services.client.GatewayHttpClient.RequestParameter;
+import org.eclipse.sensinact.studio.http.services.client.connectionmanager.ConnectionListener;
import org.eclipse.sensinact.studio.http.services.client.connectionmanager.NotifDispatcher;
import org.eclipse.sensinact.studio.http.services.client.connectionmanager.NotifSubscriptionListener;
import org.eclipse.sensinact.studio.model.manager.listener.devicelocation.DeviceLocationManager;
@@ -44,7 +45,7 @@
/**
* @author Nicolas Hili, Etienne Gandrille, Jander and others
*/
-public class ModelUpdater implements NotifSubscriptionListener {
+public class ModelUpdater implements NotifSubscriptionListener, ConnectionListener {
private static final Logger logger = Logger.getLogger(ModelUpdater.class);
@@ -57,7 +58,8 @@
}
private ModelUpdater() {
- NotifDispatcher.getInstance().subscribe(this);
+ NotifDispatcher.getInstance().subscribe((NotifSubscriptionListener) this);
+ NotifDispatcher.getInstance().subscribe((ConnectionListener) this);
}
/**
@@ -326,6 +328,16 @@
return tokens[3];
}
+ @Override
+ public void onConnect(String gatewayname) {
+ System.out.println("CONNECT !!!!!!!!!!!!!");
+ }
+
+ @Override
+ public void onDisconnect(String gatewayname) {
+ ModelEditor.getInstance().clearGatewayContent(gatewayname);
+ }
+
/* ========= */
/* Exception */
/* ========= */
diff --git a/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/DisconnectHandler.java b/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/DisconnectHandler.java
index c27c4b0..532bdb3 100644
--- a/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/DisconnectHandler.java
+++ b/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/DisconnectHandler.java
@@ -17,7 +17,6 @@
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.sensinact.studio.http.services.client.connectionmanager.ConnectionManager;
-import org.eclipse.sensinact.studio.model.manager.modelupdater.ModelEditor;
import org.eclipse.sensinact.studio.preferences.ConfigurationManager;
import org.eclipse.sensinact.studio.preferences.GatewayHttpConfig;
import org.eclipse.sensinact.studio.resource.Gateway;
@@ -61,7 +60,6 @@
}
private void disconnect(Shell parent, GatewayHttpConfig gwConfig) throws ConnectException {
- ModelEditor.getInstance().clearGatewayContent(gwConfig.getName());
ConnectionManager.getInstance().disconnect(gwConfig.getName());
}
}
diff --git a/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/dialog/GatewayConfigDialog.java b/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/dialog/GatewayConfigDialog.java
index 0501cc7..d018051 100644
--- a/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/dialog/GatewayConfigDialog.java
+++ b/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/dialog/GatewayConfigDialog.java
@@ -224,8 +224,8 @@
}
boolean isLocalhost = address.equals("localhost") || address.equals("http://localhost");
- boolean isIPv4 = address.matches("^(http://)?[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$");
- boolean isDnsName = address.matches("^(http://)?[0-9A-Za-z\\.]+\\.[A-Za-z]{2,8}$");
+ boolean isIPv4 = address.matches("^(http://|https://)?[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$");
+ boolean isDnsName = address.matches("^(http://|https://)?[0-9A-Za-z\\.]+\\.[A-Za-z]{2,8}$");
if (!isLocalhost && !isIPv4 & !isDnsName) {
return "The gateway address is not well formed";
}