Skip to content

Commit f8c2bf7

Browse files
szlisieckiSzymon Lisiecki
andauthored
fix deviceCreationEvent (#32)
Co-authored-by: Szymon Lisiecki <[email protected]>
1 parent 3b46368 commit f8c2bf7

File tree

2 files changed

+35
-22
lines changed

2 files changed

+35
-22
lines changed

src/main/java/com/orange/lo/sample/lo2iothub/ApplicationConfig.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ public void init() {
100100
liveObjectsProperties.isDeviceSynchronization(),
101101
connectorHealthActuatorEndpoint
102102
);
103-
103+
MessageHandler dataManagementFifoCallback = new MessageHandler(iotHubAdapter, counters);
104104
LOApiClientParameters loApiClientParameters = loApiClientParameters(liveObjectsProperties,
105-
azureIotHubProperties, iotHubAdapter, loAdapter);
105+
azureIotHubProperties, dataManagementFifoCallback);
106106
LOApiClient loApiClient = new LOApiClient(loApiClientParameters);
107107

108108
connectorHealthActuatorEndpoint.addLoApiClient(loApiClient);
@@ -117,7 +117,7 @@ public void init() {
117117
LOG.error("Problem with connection. Check LO credentials", e);
118118
problemWithConnection = true;
119119
}
120-
120+
dataManagementFifoCallback.setLoAdapter(loAdapter);
121121
LoCommandSender loCommandSender = new LoCommandSender(loAdapter, objectMapper, commandRetryPolicy);
122122
deviceClientManager.setLoCommandSender(loCommandSender);
123123
deviceClientManager.setLoAdapter(loAdapter);
@@ -156,12 +156,13 @@ private IoTDeviceProvider createIotDeviceProvider(AzureIotHubProperties azureIot
156156
}
157157

158158
private LOApiClientParameters loApiClientParameters(LiveObjectsProperties loProperties,
159-
AzureIotHubProperties azureIotHubProperties, IotHubAdapter iotHubAdapter, LoAdapter loAdapter) {
159+
AzureIotHubProperties azureIotHubProperties, MessageHandler dataManagementFifoCallback) {
160160

161161
List<String> topics = Lists.newArrayList(azureIotHubProperties.getLoMessagesTopic());
162162
if (loProperties.isDeviceSynchronization()) {
163163
topics.add(azureIotHubProperties.getLoDevicesTopic());
164164
}
165+
165166
return LOApiClientParameters.builder()
166167
.hostname(loProperties.getHostname())
167168
.apiKey(loProperties.getApiKey())
@@ -172,7 +173,7 @@ private LOApiClientParameters loApiClientParameters(LiveObjectsProperties loProp
172173
.connectionTimeout(loProperties.getConnectionTimeout())
173174
.mqttPersistenceDataDir(loProperties.getMqttPersistenceDir())
174175
.topics(topics)
175-
.dataManagementMqttCallback(new MessageHandler(iotHubAdapter, loAdapter, counters))
176+
.dataManagementMqttCallback(dataManagementFifoCallback)
176177
.connectorType(loProperties.getConnectorType())
177178
.connectorVersion(getConnectorVersion())
178179
.build();

src/main/java/com/orange/lo/sample/lo2iothub/MessageHandler.java

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

1010
import com.orange.lo.sample.lo2iothub.azure.IotHubAdapter;
1111
import com.orange.lo.sample.lo2iothub.exceptions.DeviceSynchronizationException;
12+
import com.orange.lo.sample.lo2iothub.exceptions.IotDeviceProviderException;
1213
import com.orange.lo.sample.lo2iothub.lo.LoAdapter;
1314
import com.orange.lo.sample.lo2iothub.utils.Counters;
1415
import com.orange.lo.sdk.fifomqtt.DataManagementFifoCallback;
@@ -32,14 +33,17 @@ public class MessageHandler implements DataManagementFifoCallback {
3233
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
3334

3435
private final IotHubAdapter iotHubAdapter;
35-
private final LoAdapter loAdapter;
36+
private LoAdapter loAdapter;
3637
private final Counters counterProvider;
3738

38-
public MessageHandler(IotHubAdapter iotHubAdapter, LoAdapter loAdapter, Counters counterProvider) {
39+
public MessageHandler(IotHubAdapter iotHubAdapter, Counters counterProvider) {
3940
this.iotHubAdapter = iotHubAdapter;
40-
this.loAdapter = loAdapter;
4141
this.counterProvider = counterProvider;
4242
}
43+
public void setLoAdapter(LoAdapter loAdapter) {
44+
this.loAdapter = loAdapter;
45+
}
46+
4347

4448
@Override
4549
public void onMessage(int loMessageId, String message) {
@@ -81,29 +85,37 @@ private void handleDataMessage(int loMessageId, String message) {
8185
}
8286

8387
private void handleDeviceCreationEvent(int loMessageId, String message) {
84-
Optional<String> deviceId = getDeviceId(message);
85-
deviceId.ifPresent(iotHubAdapter::createOrGetDeviceClientManager);
86-
loAdapter.sendMessageAck(loMessageId);
88+
try {
89+
String deviceId = getDeviceId(message);
90+
iotHubAdapter.createOrGetDeviceClientManager(deviceId);
91+
} catch (JSONException e) {
92+
LOG.error("Cannot create device because of no device id in payload");
93+
} catch (Exception e) {
94+
LOG.error("Cannot create device", e);
95+
} finally {
96+
loAdapter.sendMessageAck(loMessageId);
97+
}
8798
}
8899

89100
private void handleDeviceRemovalEvent(int loMessageId, String message) {
90-
Optional<String> deviceId = getDeviceId(message);
91-
deviceId.ifPresent(iotHubAdapter::deleteDevice);
92-
loAdapter.sendMessageAck(loMessageId);
101+
try {
102+
String deviceId = getDeviceId(message);
103+
iotHubAdapter.deleteDevice(deviceId);
104+
} catch (JSONException e) {
105+
LOG.error("Cannot delete device because of no device id in payload");
106+
} catch (Exception e) {
107+
LOG.error("Cannot delete device", e);
108+
} finally {
109+
loAdapter.sendMessageAck(loMessageId);
110+
}
93111
}
94112

95113
private static String getSourceDeviceId(String msg) throws JSONException {
96114
return new JSONObject(msg).getJSONObject("metadata").getString("source");
97115
}
98116

99-
private static Optional<String> getDeviceId(String msg) {
100-
String id = null;
101-
try {
102-
id = new JSONObject(msg).getString(DEVICE_ID_FIELD);
103-
} catch (JSONException e) {
104-
LOG.error("No device id in payload");
105-
}
106-
return Optional.ofNullable(id);
117+
private static String getDeviceId(String msg) throws JSONException {
118+
return new JSONObject(msg).getString(DEVICE_ID_FIELD);
107119
}
108120

109121
private static String getMessageType(String msg) {

0 commit comments

Comments
 (0)