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());
}
Aggregations