diff --git a/jabber-workitem/pom.xml b/jabber-workitem/pom.xml index c38e6b046..75f6c1bb2 100644 --- a/jabber-workitem/pom.xml +++ b/jabber-workitem/pom.xml @@ -18,11 +18,15 @@ - jivesoftware - smack + org.igniterealtime.smack + smack-core + true + + + org.igniterealtime.smack + smack-tcp true - org.kie kie-api @@ -49,6 +53,11 @@ mockito-core test + + org.mockito + mockito-inline + test + org.slf4j slf4j-api diff --git a/jabber-workitem/src/main/java/org/jbpm/process/workitem/jabber/JabberWorkItemHandler.java b/jabber-workitem/src/main/java/org/jbpm/process/workitem/jabber/JabberWorkItemHandler.java index f0161f02d..05b642083 100644 --- a/jabber-workitem/src/main/java/org/jbpm/process/workitem/jabber/JabberWorkItemHandler.java +++ b/jabber-workitem/src/main/java/org/jbpm/process/workitem/jabber/JabberWorkItemHandler.java @@ -31,6 +31,7 @@ import org.jivesoftware.smack.ChatManager; import org.jivesoftware.smack.ConnectionConfiguration; import org.jivesoftware.smack.XMPPConnection; +import org.jivesoftware.smack.tcp.XMPPTCPConnection; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Presence; import org.kie.api.runtime.process.WorkItem; @@ -117,11 +118,11 @@ public void executeWorkItem(WorkItem workItem, if (server != null && !server.equals("") && port != 0) { if (connection == null) { - connection = new XMPPConnection(conf); + connection = new XMPPTCPConnection(conf); } } else { if (connection == null) { - connection = new XMPPConnection(service); + connection = new XMPPTCPConnection(service); } } @@ -138,7 +139,7 @@ public void executeWorkItem(WorkItem workItem, for (String toUser : toUsers) { - ChatManager chatmanager = connection.getChatManager(); + ChatManager chatmanager = ChatManager.getInstanceFor(connection); Chat chat = chatmanager.createChat(toUser, null); diff --git a/jabber-workitem/src/test/java/org/jbpm/process/workitem/jabber/JabberWorkItemHandlerTest.java b/jabber-workitem/src/test/java/org/jbpm/process/workitem/jabber/JabberWorkItemHandlerTest.java index 55c9329cc..9653a7b40 100644 --- a/jabber-workitem/src/test/java/org/jbpm/process/workitem/jabber/JabberWorkItemHandlerTest.java +++ b/jabber-workitem/src/test/java/org/jbpm/process/workitem/jabber/JabberWorkItemHandlerTest.java @@ -29,9 +29,13 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.junit.MockitoJUnitRunner; import static org.junit.Assert.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyObject; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.Silent.class) @@ -53,14 +57,16 @@ public class JabberWorkItemHandlerTest { public void testSendMessage() throws Exception { ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(Message.class); + try (MockedStatic chatManagerMock = mockStatic(ChatManager.class)) { + doNothing().when(xmppConnection).connect(); doNothing().when(xmppConnection).login(anyString(), anyString()); doNothing().when(xmppConnection).sendPacket(any(Presence.class)); doNothing().when(xmppConnection).disconnect(); - when(xmppConnection.getChatManager()).thenReturn(chatManager); - when(chatManager.createChat(anyString(), - anyObject())).thenReturn(chat); + + chatManagerMock.when(() -> ChatManager.getInstanceFor(xmppConnection)).thenReturn(chatManager); + when(chatManager.createChat(anyString(), anyObject())).thenReturn(chat); TestWorkItemManager manager = new TestWorkItemManager(); WorkItemImpl workItem = new WorkItemImpl(); @@ -91,23 +97,26 @@ public void testSendMessage() throws Exception { manager.getResults().size()); assertTrue(manager.getResults().containsKey(workItem.getId())); - verify(chat).sendMessage(messageCaptor.capture()); + verify(chat).sendMessage(messageCaptor.capture()); assertEquals("hello world", - messageCaptor.getValue().getBody()); + messageCaptor.getValue().getBody()); + } } @Test(expected = WorkItemHandlerRuntimeException.class) public void testSendMessageInvalidParams() throws Exception { ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(Message.class); + try (MockedStatic chatManagerMock = mockStatic(ChatManager.class)) { + doNothing().when(xmppConnection).connect(); doNothing().when(xmppConnection).login(anyString(), anyString()); doNothing().when(xmppConnection).sendPacket(any(Presence.class)); doNothing().when(xmppConnection).disconnect(); - when(xmppConnection.getChatManager()).thenReturn(chatManager); - when(chatManager.createChat(anyString(), - anyObject())).thenReturn(chat); + + chatManagerMock.when(() -> ChatManager.getInstanceFor(xmppConnection)).thenReturn(chatManager); + when(chatManager.createChat(anyString(), anyObject())).thenReturn(chat); TestWorkItemManager manager = new TestWorkItemManager(); WorkItemImpl workItem = new WorkItemImpl(); @@ -122,5 +131,6 @@ public void testSendMessageInvalidParams() throws Exception { assertNotNull(manager.getResults()); assertEquals(0, manager.getResults().size()); - } + } + } }