@Override protected boolean acceptSpecific(Message message) { return thread.equals(message.getThread()); }
@Override protected boolean acceptSpecific(Message message) { return StringUtils.isNotEmpty(message.getThread()); }
@Override public void processStanza(Stanza packet) { Message message = (Message) packet; Chat chat; if (message.getThread() == null) { // CHECKSTYLE:OFF chat = getUserChat(message.getFrom()); // CHECKSTYLE:ON } else { chat = getThreadChat(message.getThread()); } if (chat == null) { chat = createChat(message); } // The chat could not be created, abort here if (chat == null) return; // TODO: Use AsyncButOrdered (with Chat as Key?) deliverMessage(chat, message); } }, packetFilter);
/** * Creates a new {@link Chat} based on the message. May returns null if no chat could be * created, e.g. because the message comes without from. * * @param message * @return a Chat or null if none can be created */ private Chat createChat(Message message) { Jid from = message.getFrom(); // According to RFC6120 8.1.2.1 4. messages without a 'from' attribute are valid, but they // are of no use in this case for ChatManager if (from == null) { return null; } EntityJid userJID = from.asEntityJidIfPossible(); if (userJID == null) { LOGGER.warning("Message from JID without localpart: '" + message.toXML(null) + "'"); return null; } String threadID = message.getThread(); if (threadID == null) { threadID = nextID(); } return createChat(userJID, threadID, false); }
@Test public void setMessageThreadTest() throws IOException, SAXException { final String messageThread = "1234"; StringBuilder controlBuilder = new StringBuilder(); controlBuilder.append("<message>") .append("<thread>") .append(messageThread) .append("</thread>") .append("</message>"); String control = controlBuilder.toString(); Message message = getNewMessage(); message.setThread(messageThread); assertEquals(messageThread, message.getThread()); assertXMLEqual(control, message.toXML(StreamOpen.CLIENT_NAMESPACE).toString()); }
@Override protected Map<String, Object> extractStandardHeaders(Message source) { Map<String, Object> headers = new HashMap<>(); Jid from = source.getFrom(); if (from != null) { headers.put(XmppHeaders.FROM, from.toString()); } String subject = source.getSubject(); if (StringUtils.hasText(subject)) { headers.put(XmppHeaders.SUBJECT, subject); } String thread = source.getThread(); if (StringUtils.hasText(thread)) { headers.put(XmppHeaders.THREAD, thread); } Jid to = source.getTo(); if (to != null) { headers.put(XmppHeaders.TO, to.toString()); } Message.Type type = source.getType(); if (type != null) { headers.put(XmppHeaders.TYPE, type); } return headers; }
msg2.setThread(msg.getThread()); msg2.setType(Message.Type.chat); msg2.setBody("To enter a case please fill out this form and send it back to me");
public boolean accept(Packet packet) { return packet instanceof Message && thread.equals(((Message) packet).getThread()); } }
public boolean accept(Packet packet) { if (packet instanceof Message) { return thread.equals(((Message)packet).getThread()); } else { return false; } } }
@Test public void fromHeadersStandardOutbound() { DefaultXmppHeaderMapper mapper = new DefaultXmppHeaderMapper(); Map<String, Object> headerMap = new HashMap<>(); headerMap.put("userDefined1", "foo"); headerMap.put("userDefined2", "bar"); headerMap.put(XmppHeaders.THREAD, "test.thread"); headerMap.put(XmppHeaders.TO, "test.to"); headerMap.put(XmppHeaders.FROM, "test.from"); headerMap.put(XmppHeaders.SUBJECT, "test.subject"); headerMap.put(XmppHeaders.TYPE, "headline"); MessageHeaders headers = new MessageHeaders(headerMap); Message target = new Message(); mapper.fromHeadersToRequest(headers, target); // "standard" XMPP headers assertEquals("test.thread", target.getThread()); assertEquals("test.to", target.getTo().toString()); assertEquals("test.from", target.getFrom().toString()); assertEquals("test.subject", target.getSubject()); assertEquals(Message.Type.headline, target.getType()); // user-defined headers not included by default assertNull(JivePropertiesManager.getProperty(target, "userDefined1")); assertNull(JivePropertiesManager.getProperty(target, "userDefined2")); // transient headers should not be copied assertNull(JivePropertiesManager.getProperty(target, "id")); assertNull(JivePropertiesManager.getProperty(target, "timestamp")); }
assertNull(target.getThread()); assertNull(target.getTo()); assertNull(target.getFrom());
boolean bodyMatches = smackMessage.getBody().equals("Hello Kitty"); boolean toMatches = smackMessage.getTo().equals("kermit@frog.com"); boolean threadIdMatches = smackMessage.getThread().equals("123"); return bodyMatches & toMatches & threadIdMatches; }));
private void copyThread(Message xmppMessage, MuleMessage muleMessage) { String thread = xmppMessage.getThread(); if (StringUtils.isNotEmpty(thread)) { muleMessage.setOutboundProperty(XmppConnector.XMPP_THREAD, thread); } }
private Chat createChat(Message message) { String threadID = message.getThread(); if(threadID == null) { threadID = nextID(); } String userJID = message.getFrom(); return createChat(userJID, threadID, false); }
private Chat createChat(Message message) { String threadID = message.getThread(); if(threadID == null) { threadID = nextID(); } String userJID = message.getFrom(); return createChat(userJID, threadID, false); }
public void interceptPacket(Packet packet) { Message message = (Message) packet; Chat chat = connection.getChatManager().getThreadChat(message.getThread()); if (chat == null) { return; } if (updateChatState(chat, ChatState.active)) { message.addExtension(new ChatStateExtension(ChatState.active)); } } }
@Override protected void onSendBeforeWrite(WebServiceMessage message) throws IOException { responseMessage = new Message(requestMessage.getFrom(), Message.Type.chat); responseMessage.setFrom(connection.getUser()); responseMessage.setThread(requestMessage.getThread()); }
private StanzaFilter createPacketFilter() { AndFilter andFilter = new AndFilter(); andFilter.addFilter(new StanzaTypeFilter(Message.class)); andFilter.addFilter(new ThreadFilter(requestMessage.getThread())); return andFilter; }
@Override protected void onSendBeforeWrite(WebServiceMessage message) throws IOException { responseMessage = new Message(requestMessage.getFrom(), Message.Type.chat); responseMessage.setFrom(connection.getUser()); responseMessage.setThread(requestMessage.getThread()); }