/** * Creates a clone of the given message envelope with the same contents. * @param messageEnvelope The message envelope to clone. * @return The cloned message envelope. */ public static MessageEnvelope cloneMessageEnvelope(MessageEnvelope messageEnvelope) { Graph clonedGraph = CloneUtil.cloneGraph(messageEnvelope.getGraph()); MessageEnvelope clonedMessageEnvelope = MessageEnvelope.fromGraph(clonedGraph); if (log.isTraceEnabled()) log.trace("Cloned message envelope: " + clonedMessageEnvelope); return clonedMessageEnvelope; }
@Override public List<ContextNode> replaceContextNode(ContextNode contextNode) { Relation relation = contextNode.getRelation(XDIConstants.XDI_ADD_LITERAL_VARIABLE); if (relation == null) return null; XDIAddress targetXDIAddress = relation.getTargetXDIAddress(); if (targetXDIAddress.getNumXDIArcs() > 1) return null; Object replacement = this.replacements.get(targetXDIAddress.getFirstXDIArc()); ContextNode replacedContextNode = CloneUtil.cloneContextNode(contextNode); replacedContextNode.delRelations(XDIConstants.XDI_ADD_LITERAL_VARIABLE); replacedContextNode.delLiteralNode(); replacedContextNode.setLiteralNode(replacement); if (log.isTraceEnabled()) log.trace("Replaced " + targetXDIAddress + " with " + replacement); return Collections.singletonList(replacedContextNode); } }