Skip to content

Commit 0064bde

Browse files
committed
DeleteMessage Signature modification
1 parent db17b38 commit 0064bde

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

gxqueue/src/main/java/com/genexus/messaging/queue/Convert.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public class Convert {
1919

2020
protected static SimpleQueueMessage toSimpleQueueMessage(SdtMessage msg) {
2121
return new SimpleQueueMessage() {{
22-
setMessageId(msg.getgxTv_SdtMessage_Messageid());
22+
String id = msg.getgxTv_SdtMessage_Messageid();
23+
setMessageId((id.isEmpty())? java.util.UUID.randomUUID().toString() :id);
2324
setMessageBody(msg.getgxTv_SdtMessage_Messagebody());
2425
setMessageHandleId(msg.getgxTv_SdtMessage_Messagehandleid());
2526
if (msg.getgxTv_SdtMessage_Messageattributes() != null) {

gxqueue/src/main/java/com/genexus/messaging/queue/SimpleMessageQueue.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -115,33 +115,38 @@ public GXBaseCollection<SdtMessage> getMessages(SdtMessageOptions receiveOptions
115115
return receivedMessagesResult;
116116
}
117117

118-
public SdtMessageResult deleteMessage(String messageHandleId, GXBaseCollection<SdtMessages_Message>[] errorMessagesArr, boolean[] success) {
118+
public SdtMessageResult deleteMessage(SdtMessage msg, GXBaseCollection<SdtMessages_Message>[] errorMessagesArr, boolean[] success) {
119119
GXBaseCollection<SdtMessages_Message> errorMessages = errorMessagesArr[0];
120120
errorMessages.clear();
121121
SdtMessageResult sdtDelete = new SdtMessageResult();
122+
if (msg == null || msg.getgxTv_SdtMessage_Messagehandleid().isEmpty()) {
123+
sdtDelete.setgxTv_SdtMessageResult_Messagestatus(DeleteMessageResult.FAILED);
124+
appendErrorMessage(errorMessages, 1, "Message HandledId property cannot be empty");
125+
return sdtDelete;
126+
}
127+
122128
try {
123129
validQueue();
124-
DeleteMessageResult deletedMessage = queue.deleteMessage(messageHandleId);
130+
DeleteMessageResult deletedMessage = queue.deleteMessage(msg.getgxTv_SdtMessage_Messagehandleid());
125131
sdtDelete.setgxTv_SdtMessageResult_Messageid(deletedMessage.getMessageId());
126132
sdtDelete.setgxTv_SdtMessageResult_Servermessageid(deletedMessage.getMessageServerId());
127133
sdtDelete.setgxTv_SdtMessageResult_Messagestatus(deletedMessage.getMessageDeleteStatus());
128134
success[0] = true;
129135
} catch (Exception ex) {
130136
queueErrorMessagesSetup(ex, errorMessages);
131-
logger.error(String.format("Could not delete Message '%s' from Queue ", messageHandleId), ex);
137+
logger.error(String.format("Could not delete Message '%s' from Queue", msg.getgxTv_SdtMessage_Messagehandleid()), ex);
132138
}
133139
return sdtDelete;
134140
}
135141

136-
public GXBaseCollection<SdtMessageResult> deleteMessages(GXSimpleCollection<String> msgHandlesToDelete, GXBaseCollection<SdtMessages_Message>[] errorMessagesArr, boolean[] success) {
142+
public GXBaseCollection<SdtMessageResult> deleteMessages(GXBaseCollection<SdtMessage> msgHandlesToDelete, GXBaseCollection<SdtMessages_Message>[] errorMessagesArr, boolean[] success) {
137143
GXBaseCollection<SdtMessages_Message> errorMessages = errorMessagesArr[0];
138144
errorMessages.clear();
139-
140145
try {
141146
validQueue();
142147
List<String> handles = new ArrayList<>();
143-
for (String hnd : msgHandlesToDelete) {
144-
handles.add(hnd);
148+
for (SdtMessage msg : msgHandlesToDelete) {
149+
handles.add(msg.getgxTv_SdtMessage_Messagehandleid());
145150
}
146151
List<DeleteMessageResult> deletedMessage = queue.deleteMessages(handles);
147152
success[0] = true;
@@ -155,10 +160,15 @@ public GXBaseCollection<SdtMessageResult> deleteMessages(GXSimpleCollection<Stri
155160

156161
protected void queueErrorMessagesSetup(Exception ex, GXBaseCollection<SdtMessages_Message> messages) {
157162
if (messages != null && ex != null) {
158-
StructSdtMessages_Message struct = new StructSdtMessages_Message();
159-
struct.setType((byte) 1);
160-
struct.setDescription(ex.getMessage());
163+
appendErrorMessage(messages, 1, ex.getMessage());
161164
}
162165
}
163166

167+
private void appendErrorMessage(GXBaseCollection<SdtMessages_Message> messages, int errorType, String errMessage) {
168+
SdtMessages_Message struct = new SdtMessages_Message();
169+
struct.setgxTv_SdtMessages_Message_Type((byte) errorType);
170+
struct.setgxTv_SdtMessages_Message_Description(errMessage);
171+
messages.add(struct);
172+
}
173+
164174
}

gxqueueawssqs/src/test/java/com/genexus/messaging/queue/aws/TestQueueBase.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,17 @@ public void sendMessage() {
9393
Assert.assertNotEquals("", sendResult.getMessageServerId());
9494
}
9595

96+
@Test
97+
public void sendMessageWithNoId() {
98+
SimpleQueueMessage msg = createMessage();
99+
msg.setMessageId("");
100+
SendMessageResult sendResult = queue.sendMessage(msg);
101+
Assert.assertNotNull(sendResult);
102+
Assert.assertEquals(SendMessageResult.SENT, sendResult.getMessageSentStatus());
103+
Assert.assertNotEquals("", sendResult.getMessageId());
104+
Assert.assertNotEquals("", sendResult.getMessageServerId());
105+
}
106+
96107
/*@Test
97108
public void sendMessageWithFactoryQueue() {
98109
try {

0 commit comments

Comments
 (0)