Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse;
import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult;
import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters;

public interface DeleteMessageService extends MessagingService<DeleteMessageParameters> {}
public interface DeleteMessageService extends MessagingService<DeleteMessageParameters> {

/**
* Delete all messages in the feed. The function will delete all messages based on the time
* interval of 4 weeks (which is the maximum of time the messages are stored within the
* agrirouter).
*
* @param onboardingResponse The onboard response for the endpoint.
* @return The message ID.
*/
String deleteAll(OnboardingResponse onboardingResponse);

/**
* Delete all messages in the feed. The function will delete all messages based on the time
* interval of 4 weeks (which is the maximum of time the messages are stored within the
* agrirouter).
*
* @param onboardingResponse The onboard response for the endpoint.
* @return The message ID.
*/
HttpAsyncMessageSendingResult deleteAllAsync(OnboardingResponse onboardingResponse);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse;
import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult;
import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters;

public interface DeleteMessageService extends MessagingService<DeleteMessageParameters> {}
public interface DeleteMessageService extends MessagingService<DeleteMessageParameters> {

/**
* Delete all messages in the feed. The function will delete all messages based on the time
* interval of 4 weeks (which is the maximum of time the messages are stored within the
* agrirouter).
*
* @param onboardingResponse The onboard response for the endpoint.
* @return The message ID.
*/
String deleteAll(OnboardingResponse onboardingResponse);

/**
* Delete all messages in the feed. The function will delete all messages based on the time
* interval of 4 weeks (which is the maximum of time the messages are stored within the
* agrirouter).
*
* @param onboardingResponse The onboard response for the endpoint.
* @return The message ID.
*/
MqttAsyncMessageSendingResult deleteAllAsync(OnboardingResponse onboardingResponse);
}
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,9 @@ public List<MessageParameterTuple> chunkAndEncode(
messageHeaderParameters.validate();
payloadParameters.validate();

if (messageHeaderParameters.getTechnicalMessageType().needsBase64EncodingAndHasToBeChunkedIfNecessary()) {
if (messageHeaderParameters
.getTechnicalMessageType()
.needsBase64EncodingAndHasToBeChunkedIfNecessary()) {
if (payloadParameters.shouldBeChunked()) {
getNativeLogger()
.debug(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.dke.data.agrirouter.impl.messaging.helper;

import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse;
import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters;
import com.dke.data.agrirouter.impl.common.UtcTimeService;
import org.jetbrains.annotations.NotNull;

import java.util.Collections;

/**
* Interface to avaoid duplicate parameter creation.
*/
public interface DeleteAllMessagesParameterCreator {

/**
* Create message parameters to delete all messages.
*
* @param onboardingResponse -
* @return -
*/
@NotNull
default DeleteMessageParameters createMessageParametersToDeleteAllMessages(
OnboardingResponse onboardingResponse) {
final DeleteMessageParameters deleteMessageParameters = new DeleteMessageParameters();
deleteMessageParameters.setOnboardingResponse(onboardingResponse);
deleteMessageParameters.setMessageIds(Collections.emptyList());
deleteMessageParameters.setSenderIds(Collections.emptyList());
deleteMessageParameters.setSentFromInSeconds(
UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond());
deleteMessageParameters.setSentToInSeconds(UtcTimeService.now().toEpochSecond());
return deleteMessageParameters;
}

}
Original file line number Diff line number Diff line change
@@ -1,25 +1,30 @@
package com.dke.data.agrirouter.impl.messaging.mqtt;

import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage;
import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse;
import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException;
import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult;
import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService;
import com.dke.data.agrirouter.api.service.messaging.mqtt.DeleteMessageService;
import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters;
import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters;
import com.dke.data.agrirouter.impl.common.UtcTimeService;
import com.dke.data.agrirouter.impl.messaging.MessageBodyCreator;
import com.dke.data.agrirouter.impl.messaging.MessageEncoder;
import com.dke.data.agrirouter.impl.messaging.MqttService;
import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl;
import java.util.Collections;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;

import com.dke.data.agrirouter.impl.messaging.helper.DeleteAllMessagesParameterCreator;
import org.eclipse.paho.client.mqttv3.IMqttClient;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.jetbrains.annotations.NotNull;

public class DeleteMessageServiceImpl extends MqttService
implements DeleteMessageService, MessageBodyCreator, MessageEncoder {
implements DeleteMessageService, MessageBodyCreator, MessageEncoder, DeleteAllMessagesParameterCreator {

private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl();

Expand Down Expand Up @@ -59,4 +64,19 @@ public MqttAsyncMessageSendingResult sendAsync(DeleteMessageParameters parameter
public EncodeMessageService getEncodeMessageService() {
return encodeMessageService;
}

@Override
public String deleteAll(OnboardingResponse onboardingResponse) {
final DeleteMessageParameters deleteMessageParameters =
createMessageParametersToDeleteAllMessages(onboardingResponse);
return send(deleteMessageParameters);
}

@Override
public MqttAsyncMessageSendingResult deleteAllAsync(OnboardingResponse onboardingResponse) {
final DeleteMessageParameters deleteMessageParameters =
createMessageParametersToDeleteAllMessages(onboardingResponse);
return sendAsync(deleteMessageParameters);
}

}
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
package com.dke.data.agrirouter.impl.messaging.rest;

import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage;
import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse;
import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult;
import com.dke.data.agrirouter.api.messaging.MessageSendingResponse;
import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService;
import com.dke.data.agrirouter.api.service.messaging.http.DeleteMessageService;
import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters;
import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters;
import com.dke.data.agrirouter.impl.common.UtcTimeService;
import com.dke.data.agrirouter.impl.messaging.MessageEncoder;
import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl;
import com.dke.data.agrirouter.impl.messaging.helper.DeleteAllMessagesParameterCreator;
import com.dke.data.agrirouter.impl.validation.ResponseValidator;
import java.util.Collections;
import java.util.concurrent.CompletableFuture;
import org.jetbrains.annotations.NotNull;

public class DeleteMessageServiceImpl
implements DeleteMessageService, MessageSender, ResponseValidator, MessageEncoder {
implements DeleteMessageService, MessageSender, ResponseValidator, MessageEncoder, DeleteAllMessagesParameterCreator {

private final EncodeMessageService encodeMessageService;

Expand Down Expand Up @@ -52,4 +56,19 @@ public HttpAsyncMessageSendingResult sendAsync(DeleteMessageParameters parameter
public EncodeMessageService getEncodeMessageService() {
return this.encodeMessageService;
}

@Override
public String deleteAll(OnboardingResponse onboardingResponse) {
final DeleteMessageParameters deleteMessageParameters =
createMessageParametersToDeleteAllMessages(onboardingResponse);
return send(deleteMessageParameters);
}

@Override
public HttpAsyncMessageSendingResult deleteAllAsync(OnboardingResponse onboardingResponse) {
final DeleteMessageParameters deleteMessageParameters =
createMessageParametersToDeleteAllMessages(onboardingResponse);
return sendAsync(deleteMessageParameters);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,29 @@
import java.nio.file.Paths;
import java.util.Base64;

/**
* Generic content reader for the testcases.
*/
/** Generic content reader for the testcases. */
public class ContentReader {

private static final String FOLDER = "./message-content/";
private static final String FOLDER = "./message-content/";

public static String readBase64EncodedMessageContent(Identifier identifier) throws Throwable {
Path path = Paths.get(FOLDER.concat(identifier.getFileName()));
final byte[] rawData = Files.readAllBytes(path);
return new String(Base64.getEncoder().encode(rawData));
}

public enum Identifier {
BIG_TASK_DATA("big_taskdata.zip"),
SMALL_TASK_DATA("small_taskdata.zip");
public static String readBase64EncodedMessageContent(Identifier identifier) throws Throwable {
Path path = Paths.get(FOLDER.concat(identifier.getFileName()));
final byte[] rawData = Files.readAllBytes(path);
return new String(Base64.getEncoder().encode(rawData));
}

private final String fileName;
public enum Identifier {
BIG_TASK_DATA("big_taskdata.zip"),
SMALL_TASK_DATA("small_taskdata.zip");

Identifier(String fileName) {
this.fileName = fileName;
}
private final String fileName;

public String getFileName() {
return fileName;
}
Identifier(String fileName) {
this.fileName = fileName;
}

public String getFileName() {
return fileName;
}
}
}
Loading