Skip to content

Commit cc867b0

Browse files
Reconnect Callback
1 parent aa07ef1 commit cc867b0

File tree

4 files changed

+56
-12
lines changed

4 files changed

+56
-12
lines changed

pom.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<plugin>
1212
<groupId>org.apache.maven.plugins</groupId>
1313
<artifactId>maven-compiler-plugin</artifactId>
14-
<version>3.12.1</version>
14+
<version>3.14.0</version>
1515
<configuration>
1616
<source>21</source>
1717
<target>21</target>
@@ -20,7 +20,7 @@
2020
<plugin>
2121
<groupId>org.apache.maven.plugins</groupId>
2222
<artifactId>maven-surefire-plugin</artifactId>
23-
<version>2.22.2</version>
23+
<version>3.5.3</version>
2424
</plugin>
2525
<plugin>
2626
<groupId>org.apache.maven.plugins</groupId>
@@ -44,12 +44,12 @@
4444
<dependency>
4545
<groupId>org.springframework</groupId>
4646
<artifactId>spring-web</artifactId>
47-
<version>6.1.4</version>
47+
<version>6.2.7</version>
4848
</dependency>
4949
<dependency>
5050
<groupId>com.fasterxml.jackson.core</groupId>
5151
<artifactId>jackson-databind</artifactId>
52-
<version>2.16.1</version>
52+
<version>2.18.4</version>
5353
</dependency>
5454
<dependency>
5555
<groupId>org.eclipse.paho</groupId>
@@ -59,29 +59,29 @@
5959
<dependency>
6060
<groupId>org.apache.httpcomponents.client5</groupId>
6161
<artifactId>httpclient5</artifactId>
62-
<version>5.3.1</version>
62+
<version>5.5</version>
6363
</dependency>
6464
<dependency>
6565
<groupId>org.slf4j</groupId>
6666
<artifactId>slf4j-api</artifactId>
67-
<version>2.0.12</version>
67+
<version>2.0.17</version>
6868
</dependency>
6969
<dependency>
7070
<groupId>org.mockito</groupId>
7171
<artifactId>mockito-core</artifactId>
72-
<version>5.10.0</version>
72+
<version>5.18.0</version>
7373
<scope>test</scope>
7474
</dependency>
7575
<dependency>
7676
<groupId>org.mockito</groupId>
7777
<artifactId>mockito-junit-jupiter</artifactId>
78-
<version>5.10.0</version>
78+
<version>5.18.0</version>
7979
<scope>test</scope>
8080
</dependency>
8181
<dependency>
8282
<groupId>org.junit.jupiter</groupId>
8383
<artifactId>junit-jupiter</artifactId>
84-
<version>5.10.2</version>
84+
<version>5.11.4</version>
8585
<scope>test</scope>
8686
</dependency>
8787
</dependencies>

src/main/java/com/orange/lo/sdk/LOApiClientParameters.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import com.orange.lo.sdk.externalconnector.DataManagementExtConnectorCommandCallback;
1111
import com.orange.lo.sdk.fifomqtt.DataManagementFifoCallback;
12+
import com.orange.lo.sdk.mqtt.DataManagementReconnectCallback;
1213

1314
import java.util.ArrayList;
1415
import java.util.List;
@@ -47,6 +48,7 @@ public final class LOApiClientParameters {
4748
private final List<String> topics;
4849
private final DataManagementFifoCallback dataManagementFifoCallback;
4950
private final DataManagementExtConnectorCommandCallback dataManagementExtConnectorCommandCallback;
51+
private final DataManagementReconnectCallback dataManagementReconnectCallback;
5052
private final String extConnectorCommandRequestTopic;
5153
private final String extConnectorCommandResponseTopic;
5254
private final String extConnectorStatusTopicTemplate;
@@ -74,6 +76,7 @@ private LOApiClientParameters(LOApiClientParametersBuilder builder) {
7476
this.extConnectorCommandResponseTopic = builder.extConnectorCommandResponseTopic;
7577
this.extConnectorStatusTopicTemplate = builder.extConnectorStatusTopicTemplate;
7678
this.extConnectorDataTopicTemplate = builder.extConnectorDataTopicTemplate;
79+
this.dataManagementReconnectCallback = builder.dataManagementReconnectCallback;
7780
}
7881

7982
public String getConnectorType() {
@@ -144,6 +147,10 @@ public DataManagementExtConnectorCommandCallback getDataManagementExtConnectorCo
144147
return dataManagementExtConnectorCommandCallback;
145148
}
146149

150+
public DataManagementReconnectCallback getDataManagementReconnectCallback() {
151+
return dataManagementReconnectCallback;
152+
}
153+
147154
public String getExtConnectorCommandResponseTopic() {
148155
return extConnectorCommandResponseTopic;
149156
}
@@ -183,6 +190,7 @@ public static final class LOApiClientParametersBuilder {
183190
private List<String> topics = new ArrayList<>();
184191
private DataManagementFifoCallback dataManagementFifoCallback;
185192
private DataManagementExtConnectorCommandCallback dataManagementExtConnectorCommandCallback;
193+
private DataManagementReconnectCallback dataManagementReconnectCallback;
186194
private String extConnectorCommandRequestTopic = DEFAULT_EXT_CONNECTOR_COMMAND_REQUEST_TOPIC;
187195
private String extConnectorCommandResponseTopic = DEFAULT_EXT_CONNECTOR_COMMAND_RESPONSE_TOPIC;
188196
private String extConnectorStatusTopicTemplate = DEFAULT_EXT_CONNECTOR_STATUS_TOPIC_TEMPLATE;
@@ -274,6 +282,12 @@ public LOApiClientParametersBuilder dataManagementExtConnectorCommandCallback(
274282
return this;
275283
}
276284

285+
public LOApiClientParametersBuilder dataManagementReconnectCallback(
286+
DataManagementReconnectCallback dataManagementReconnectCallback) {
287+
this.dataManagementReconnectCallback = dataManagementReconnectCallback;
288+
return this;
289+
}
290+
277291
public LOApiClientParametersBuilder extConnectorCommandRequestTopic(String extConnectorCommandRequestTopic) {
278292
this.extConnectorCommandRequestTopic = extConnectorCommandRequestTopic;
279293
return this;

src/main/java/com/orange/lo/sdk/mqtt/AbstractDataManagementMqtt.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.lang.invoke.MethodHandles;
1111
import java.util.ArrayList;
1212
import java.util.List;
13+
import java.util.Objects;
1314

1415
import org.eclipse.paho.client.mqttv3.IMqttClient;
1516
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
@@ -36,7 +37,8 @@ public abstract class AbstractDataManagementMqtt {
3637
private final MqttReconnectCallback mqttReconnectCallback;
3738

3839
public AbstractDataManagementMqtt(LOApiClientParameters parameters, MqttClientFactory mqttClientFactory) {
39-
this.mqttReconnectCallback = new MqttReconnectCallback();
40+
DataManagementReconnectCallback reconnectCallback = parameters.getDataManagementReconnectCallback();
41+
this.mqttReconnectCallback = new MqttReconnectCallback(reconnectCallback);
4042
this.mqttClient = mqttClientFactory.getMqttClient();
4143
this.mqttClient.setCallback(mqttReconnectCallback);
4244
this.parameters = parameters;
@@ -147,6 +149,11 @@ class MqttReconnectCallback implements MqttCallbackExtended {
147149
private final List<String> topicFiltersList = new ArrayList<>();
148150
private final List<Integer> qosList = new ArrayList<>();
149151
private final List<IMqttMessageListener> listenersList = new ArrayList<>();
152+
private final DataManagementReconnectCallback reconnectCallback;
153+
154+
public MqttReconnectCallback(DataManagementReconnectCallback reconnectCallback) {
155+
this.reconnectCallback = reconnectCallback;
156+
}
150157

151158
public void addSubscriptions(String[] topicFilters, int[] qos, IMqttMessageListener[] messageListeners) {
152159
// To remove duplicates causing the error "This Topic Is Already Subscribed In The Same MQTT Connection"
@@ -163,9 +170,12 @@ public void addSubscriptions(String[] topicFilters, int[] qos, IMqttMessageListe
163170
LOG.info("MqttReconnectCallback listenersList: {}", listenersList);
164171
}
165172

166-
public void connectionLost(Throwable cause) {
173+
public void connectionLost(Throwable cause) {
167174
LOG.error("Connection lost: {}", cause.getMessage());
168-
}
175+
if (thereIsA(reconnectCallback)) {
176+
reconnectCallback.connectionLost(cause);
177+
}
178+
}
169179

170180
public void messageArrived(String topic, MqttMessage message) throws Exception {
171181
}
@@ -181,6 +191,13 @@ public void connectComplete(boolean reconnect, String serverURI) {
181191
qosList.stream().mapToInt(Integer::intValue).toArray(),
182192
listenersList.toArray(new IMqttMessageListener[0]));
183193
}
194+
if (thereIsA(reconnectCallback)) {
195+
reconnectCallback.connectComplete(reconnect, serverURI);
196+
}
184197
}
198+
199+
private boolean thereIsA(Object object) {
200+
return Objects.nonNull(object);
201+
}
185202
}
186203
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* Copyright (c) Orange. All Rights Reserved.
3+
* <p>
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*/
7+
8+
package com.orange.lo.sdk.mqtt;
9+
10+
public interface DataManagementReconnectCallback {
11+
void connectComplete(boolean reconnect, String serverURI);
12+
void connectionLost(Throwable cause);
13+
}

0 commit comments

Comments
 (0)