Search in sources :

Example 1 with XMPPDateTimeFormat

use of org.jivesoftware.util.XMPPDateTimeFormat in project Openfire by igniterealtime.

the class FMUCHandler method addRemoteHistoryToRoom.

private void addRemoteHistoryToRoom(@Nonnull final Message message) {
    final Element fmuc = message.getElement().element(FMUC);
    if (fmuc == null) {
        throw new IllegalArgumentException("Argument 'presence' should be an FMUC presence, but it does not appear to be: it is missing the FMUC child element.");
    }
    Log.trace("(room: '{}'): Received history from joined FMUC node '{}'. Applying it locally.", room.getJID(), outboundJoinProgress.getPeer());
    final JID userJID = new JID(fmuc.attributeValue("from"));
    final String nickname = message.getFrom().getResource();
    Date sentDate;
    final Element delay = message.getChildElement("delay", "urn:xmpp:delay");
    if (delay != null) {
        final String stamp = delay.attributeValue("stamp");
        try {
            sentDate = new XMPPDateTimeFormat().parseString(stamp);
        } catch (ParseException e) {
            Log.warn("Cannot parse 'stamp' from delay element in message as received in FMUC join: {}", message, e);
            sentDate = null;
        }
    } else {
        sentDate = null;
        Log.warn("Missing delay element in message received in FMUC join: {}", message);
    }
    final Message cleanedUpMessage = createCopyWithoutFMUC(message);
    room.getRoomHistory().addOldMessage(userJID.toString(), nickname, sentDate, cleanedUpMessage.getSubject(), cleanedUpMessage.getBody(), cleanedUpMessage.toXML());
}
Also used : XMPPDateTimeFormat(org.jivesoftware.util.XMPPDateTimeFormat) Element(org.dom4j.Element) ParseException(java.text.ParseException)

Aggregations

ParseException (java.text.ParseException)1 Element (org.dom4j.Element)1 XMPPDateTimeFormat (org.jivesoftware.util.XMPPDateTimeFormat)1