Skip to content

Commit d1e5457

Browse files
committed
When firmware file is not available device connection is not required.
Signed-off-by: Gerben Kroes <gerben@kroesctrl.nl>
1 parent b6d9dd9 commit d1e5457

File tree

9 files changed

+43
-8
lines changed

9 files changed

+43
-8
lines changed

osgp/protocol-adapter-dlms/osgp-protocol-adapter-dlms/src/main/java/org/opensmartgridplatform/adapter/protocol/dlms/infra/messaging/DeviceRequestMessageProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public void processMessage(final ObjectMessage message) throws JMSException {
9191
} else {
9292
device = null;
9393
}
94-
if (this.usesDeviceConnection()) {
94+
if (this.usesDeviceConnection(messageObject)) {
9595
/*
9696
* Set up a consumer to be called back with a DlmsConnectionManager for which the connection
9797
* with the device has been created. Note that when usesDeviceConnection is true, in this
@@ -249,7 +249,7 @@ protected Serializable handleMessage(
249249
*
250250
* @return Use device connection in handleMessage.
251251
*/
252-
protected boolean usesDeviceConnection() {
252+
protected boolean usesDeviceConnection(final Serializable messageObject) {
253253
return true;
254254
}
255255

osgp/protocol-adapter-dlms/osgp-protocol-adapter-dlms/src/main/java/org/opensmartgridplatform/adapter/protocol/dlms/infra/messaging/processors/AddMeterRequestMessageProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public AddMeterRequestMessageProcessor() {
2626
}
2727

2828
@Override
29-
protected boolean usesDeviceConnection() {
29+
protected boolean usesDeviceConnection(final Serializable messageObject) {
3030
return false;
3131
}
3232

osgp/protocol-adapter-dlms/osgp-protocol-adapter-dlms/src/main/java/org/opensmartgridplatform/adapter/protocol/dlms/infra/messaging/processors/DisableDebuggingRequestMessageProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public DisableDebuggingRequestMessageProcessor() {
2424
}
2525

2626
@Override
27-
protected boolean usesDeviceConnection() {
27+
protected boolean usesDeviceConnection(final Serializable messageObject) {
2828
return false;
2929
}
3030

osgp/protocol-adapter-dlms/osgp-protocol-adapter-dlms/src/main/java/org/opensmartgridplatform/adapter/protocol/dlms/infra/messaging/processors/EnableDebuggingRequestMessageProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public EnableDebuggingRequestMessageProcessor() {
2424
}
2525

2626
@Override
27-
protected boolean usesDeviceConnection() {
27+
protected boolean usesDeviceConnection(final Serializable messageObject) {
2828
return false;
2929
}
3030

osgp/protocol-adapter-dlms/osgp-protocol-adapter-dlms/src/main/java/org/opensmartgridplatform/adapter/protocol/dlms/infra/messaging/processors/GetKeysRequestMessageProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ protected GetKeysRequestMessageProcessor() {
2525
}
2626

2727
@Override
28-
protected boolean usesDeviceConnection() {
28+
protected boolean usesDeviceConnection(final Serializable messageObject) {
2929
return false;
3030
}
3131

osgp/protocol-adapter-dlms/osgp-protocol-adapter-dlms/src/main/java/org/opensmartgridplatform/adapter/protocol/dlms/infra/messaging/processors/SetDeviceCommunicationSettingsRequestMessageProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public SetDeviceCommunicationSettingsRequestMessageProcessor() {
2626
}
2727

2828
@Override
29-
protected boolean usesDeviceConnection() {
29+
protected boolean usesDeviceConnection(final Serializable messageObject) {
3030
return false;
3131
}
3232

osgp/protocol-adapter-dlms/osgp-protocol-adapter-dlms/src/main/java/org/opensmartgridplatform/adapter/protocol/dlms/infra/messaging/processors/UpdateFirmwareRequestMessageProcessor.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,23 @@ protected UpdateFirmwareRequestMessageProcessor() {
3737
super(MessageType.UPDATE_FIRMWARE);
3838
}
3939

40+
@Override
41+
protected boolean usesDeviceConnection(final Serializable messageObject) {
42+
if (messageObject instanceof final UpdateFirmwareRequestDto requestDto) {
43+
final String firmwareIdentification = requestDto.getFirmwareIdentification();
44+
final boolean usesDeviceConnection =
45+
this.firmwareService.isFirmwareFileAvailable(firmwareIdentification);
46+
if (!usesDeviceConnection) {
47+
LOGGER.info(
48+
"Firmware file [{}] not available for device {}. So no device connection required for sending GetFirmwareFile request to core.",
49+
firmwareIdentification,
50+
requestDto.getDeviceIdentification());
51+
}
52+
return usesDeviceConnection;
53+
}
54+
return super.usesDeviceConnection(messageObject);
55+
}
56+
4057
@Override
4158
protected Serializable handleMessage(
4259
final DlmsConnectionManager conn,

osgp/protocol-adapter-dlms/osgp-protocol-adapter-dlms/src/main/java/org/opensmartgridplatform/adapter/protocol/dlms/infra/messaging/processors/UpdateProtocolRequestMessageProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public UpdateProtocolRequestMessageProcessor() {
2525
}
2626

2727
@Override
28-
protected boolean usesDeviceConnection() {
28+
protected boolean usesDeviceConnection(final Serializable messageObject) {
2929
return false;
3030
}
3131

osgp/protocol-adapter-dlms/osgp-protocol-adapter-dlms/src/test/java/org/opensmartgridplatform/adapter/protocol/dlms/infra/messaging/processors/UpdateFirmwareRequestMessageProcessorTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
package org.opensmartgridplatform.adapter.protocol.dlms.infra.messaging.processors;
66

7+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
78
import static org.mockito.ArgumentMatchers.any;
89
import static org.mockito.ArgumentMatchers.nullable;
910
import static org.mockito.ArgumentMatchers.same;
@@ -19,6 +20,8 @@
1920
import org.junit.jupiter.api.BeforeEach;
2021
import org.junit.jupiter.api.Test;
2122
import org.junit.jupiter.api.extension.ExtendWith;
23+
import org.junit.jupiter.params.ParameterizedTest;
24+
import org.junit.jupiter.params.provider.ValueSource;
2225
import org.mockito.InjectMocks;
2326
import org.mockito.Mock;
2427
import org.mockito.junit.jupiter.MockitoExtension;
@@ -201,4 +204,19 @@ void processMessageTaskShouldNotUpdateFirmwareWhenFirmwareFileNotAvailable()
201204
same(updateFirmwareRequestDto),
202205
any(MessageMetadata.class));
203206
}
207+
208+
@ParameterizedTest
209+
@ValueSource(booleans = {true, false})
210+
void testUsesDeviceConnection(final boolean isFirmwareFileAvailable) {
211+
final String firmwareIdentification = "unavailable";
212+
final String deviceIdentification = "unavailableEither";
213+
final UpdateFirmwareRequestDto updateFirmwareRequestDto =
214+
new UpdateFirmwareRequestDto(firmwareIdentification, deviceIdentification);
215+
216+
when(this.firmwareService.isFirmwareFileAvailable(firmwareIdentification))
217+
.thenReturn(isFirmwareFileAvailable);
218+
219+
assertThat(this.processor.usesDeviceConnection(updateFirmwareRequestDto))
220+
.isEqualTo(isFirmwareFileAvailable);
221+
}
204222
}

0 commit comments

Comments
 (0)