public Element getPayload() {
        if (payload == null && payloadXML != null) {
            synchronized (this) {
                if (payload == null) {
                    // payload initialized as XML string from DB
                    try {
                        payload = SAXReaderUtil.readRootElement(payloadXML);
                    } catch (Exception ex) {
                        log.error("Failed to parse payload XML", ex);
                        if (ex instanceof InterruptedException) {
                            Thread.currentThread().interrupt();
                        }
                    }
                }
            }
        }
        return payload;
    }
Returns the payload included when publishing the item. A published item may or may not
have a payload. Transient nodes that are configured to not broadcast payloads may allow
published items to have no payload.

@return the payload included when publishing the item or {@code null} if none was found.
xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PublishedItem.java