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

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
package com.dke.data.agrirouter.api.service.messaging;

import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters;
import java.util.concurrent.CompletableFuture;

/** Service for sending a message */
public interface SendMessageService {
public interface SendMessageService<T> {

/**
* Sending a message
*
* @param sendMessageParameters -
*/
void send(SendMessageParameters sendMessageParameters);

/**
* Sending a message
*
* @param sendMessageParameters -
* @return -
*/
CompletableFuture<T> sendAsync(SendMessageParameters sendMessageParameters);
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.service.parameters.CloudOffboardingParameters;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.service.parameters.CloudOnboardingParameters;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.cancellation.CancellationToken;
import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.service.parameters.ListEndpointsParameters;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.service.parameters.MessageConfirmationParameters;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import agrirouter.feed.response.FeedResponse;
import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import agrirouter.feed.response.FeedResponse;
import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult;

/**
* Centralized service interface.
*
* @param <T> The type of parameters needed to send messages.
*/
public interface MessagingService<T> {

/**
* Send a synchronous message.
*
* @param parameters -
* @return The ID of the message.
*/
String send(T parameters);

/**
* Send an asynchronous message.
*
* @param parameters -
* @return The completable future containing the possible result.
*/
HttpAsyncMessageSendingResult sendAsync(T parameters);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.service.parameters.SetCapabilitiesParameters;

/** Service interface set capabilities. */
public interface SetCapabilityService extends MessagingService<SetCapabilitiesParameters> {}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dke.data.agrirouter.api.service.messaging;
package com.dke.data.agrirouter.api.service.messaging.http;

import com.dke.data.agrirouter.api.service.parameters.SetSubscriptionParameters;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import com.dke.data.agrirouter.api.service.parameters.CloudOffboardingParameters;

public interface CloudOffboardingService extends MessagingService<CloudOffboardingParameters> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import com.dke.data.agrirouter.api.service.parameters.CloudOnboardingParameters;

public interface CloudOnboardingService extends MessagingService<CloudOnboardingParameters> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters;

public interface DeleteMessageService extends MessagingService<DeleteMessageParameters> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import com.dke.data.agrirouter.api.service.parameters.ListEndpointsParameters;

public interface ListEndpointsService extends MessagingService<ListEndpointsParameters> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import com.dke.data.agrirouter.api.service.parameters.MessageConfirmationParameters;

public interface MessageConfirmationService
extends MessagingService<MessageConfirmationParameters> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import agrirouter.feed.response.FeedResponse;
import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder;
import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters;

public interface MessageHeaderQueryService
extends MessagingService<MessageQueryParameters>,
MessageDecoder<FeedResponse.HeaderQueryResponse> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import agrirouter.feed.response.FeedResponse;
import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder;
import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters;

public interface MessageQueryService
extends MessagingService<MessageQueryParameters>,
MessageDecoder<FeedResponse.MessageQueryResponse> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult;

/**
* Centralized service interface.
*
* @param <T> The type of parameters needed to send messages.
*/
public interface MessagingService<T> {

/**
* Send a synchronous message.
*
* @param parameters -
* @return The ID of the message.
*/
String send(T parameters);

/**
* Send an asynchronous message.
*
* @param parameters -
* @return The completable future containing the possible result.
*/
MqttAsyncMessageSendingResult sendAsync(T parameters);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import com.dke.data.agrirouter.api.service.parameters.SetCapabilitiesParameters;

/** Service interface set capabilities. */
public interface SetCapabilityService extends MessagingService<SetCapabilitiesParameters> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.dke.data.agrirouter.api.service.messaging.mqtt;

import com.dke.data.agrirouter.api.service.parameters.SetSubscriptionParameters;

/** Service to set the subscriptions for an endpoint. */
public interface SetSubscriptionService extends MessagingService<SetSubscriptionParameters> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.dke.data.agrirouter.api.messaging

import java.util.concurrent.CompletableFuture

/**
* Marker interface.
*/
interface AsyncMessageSendingResult<T> {

fun accessResult(): CompletableFuture<T>

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.dke.data.agrirouter.api.messaging

import java.util.concurrent.CompletableFuture

class HttpAsyncMessageSendingResult(
val response: CompletableFuture<MessageSendingResponse>,
val messageId: String
) : AsyncMessageSendingResult<MessageSendingResponse> {
override fun accessResult(): CompletableFuture<MessageSendingResponse> {
return response
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.dke.data.agrirouter.api.messaging

import javax.ws.rs.core.Response

/**
* Wrapper for the response from the server.
*/
class MessageSendingResponse(val nativeResponse: Response)
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.dke.data.agrirouter.api.messaging

class MessageSendingResult(val messageSendingResponse: MessageSendingResponse, val messageId : String)
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.dke.data.agrirouter.api.messaging

import java.util.concurrent.CompletableFuture

class MqttAsyncMessageSendingResult(private val result: CompletableFuture<String>) : AsyncMessageSendingResult<String> {
override fun accessResult(): CompletableFuture<String> {
return result
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import agrirouter.request.payload.account.Endpoints;
import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse;
import com.dke.data.agrirouter.api.enums.TechnicalMessageType;
import com.dke.data.agrirouter.api.service.messaging.ListEndpointsService;
import com.dke.data.agrirouter.api.service.messaging.mqtt.ListEndpointsService;
import com.dke.data.agrirouter.api.service.parameters.ListEndpointsParameters;
import com.dke.data.agrirouter.impl.messaging.mqtt.ListEndpointsServiceImpl;
import org.eclipse.paho.client.mqttv3.IMqttClient;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse;
import com.dke.data.agrirouter.api.enums.TechnicalMessageType;
import com.dke.data.agrirouter.api.env.Environment;
import com.dke.data.agrirouter.api.service.messaging.ListEndpointsService;
import com.dke.data.agrirouter.api.service.messaging.http.ListEndpointsService;
import com.dke.data.agrirouter.api.service.parameters.ListEndpointsParameters;
import com.dke.data.agrirouter.impl.messaging.rest.ListEndpointsServiceImpl;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse;
import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse;
import com.dke.data.agrirouter.api.env.Environment;
import com.dke.data.agrirouter.api.service.messaging.FetchMessageService;
import com.dke.data.agrirouter.api.service.messaging.MessageConfirmationService;
import com.dke.data.agrirouter.api.service.messaging.MessageQueryService;
import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService;
import com.dke.data.agrirouter.api.service.messaging.http.FetchMessageService;
import com.dke.data.agrirouter.api.service.messaging.http.MessageConfirmationService;
import com.dke.data.agrirouter.api.service.messaging.http.MessageQueryService;
import com.dke.data.agrirouter.api.service.parameters.MessageConfirmationForAllPendingMessagesParameters;
import com.dke.data.agrirouter.api.service.parameters.MessageConfirmationParameters;
import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage;
import com.dke.data.agrirouter.api.enums.TechnicalMessageType;
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.parameters.MessageQueryParameters;
import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters;
Expand All @@ -10,6 +12,7 @@
import com.dke.data.agrirouter.impl.messaging.rest.MessageSender;
import com.dke.data.agrirouter.impl.validation.ResponseValidator;
import java.util.Collections;
import java.util.concurrent.CompletableFuture;

public class MessageQueryHelperService extends NonEnvironmentalService
implements MessageSender, MessageEncoder, ResponseValidator {
Expand Down Expand Up @@ -41,7 +44,7 @@ public String send(MessageQueryParameters parameters) {
Collections.singletonList(encodedMessageResponse.getEncodedMessage()));

this.getNativeLogger().trace("Send and fetch message response.");
MessageSender.MessageSenderResponse response = this.sendMessage(sendMessageParameters);
MessageSendingResponse response = this.sendMessage(sendMessageParameters);

this.getNativeLogger().trace("Validate message response.");
this.assertStatusCodeIsOk(response.getNativeResponse().getStatus());
Expand All @@ -50,6 +53,30 @@ public String send(MessageQueryParameters parameters) {
return encodedMessageResponse.getApplicationMessageID();
}

public HttpAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) {
this.logMethodBegin(parameters);

this.getNativeLogger().trace("Validate parameters.");
parameters.validate();

this.getNativeLogger().trace("Encode message.");
EncodedMessage encodedMessageResponse = this.encode(this.technicalMessageType, parameters);

this.getNativeLogger().trace("Build message parameters.");
SendMessageParameters sendMessageParameters = new SendMessageParameters();
sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse());
sendMessageParameters.setEncodedMessages(
Collections.singletonList(encodedMessageResponse.getEncodedMessage()));

this.getNativeLogger().trace("Send and fetch message response.");
CompletableFuture<MessageSendingResponse> response =
this.sendMessageAsync(sendMessageParameters);

this.logMethodEnd();
return new HttpAsyncMessageSendingResult(
response, encodedMessageResponse.getApplicationMessageID());
}

@Override
public EncodeMessageService getEncodeMessageService() {
return this.encodeMessageService;
Expand Down
Loading