public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg) { string errorMessage; if (!Validate(out errorMessage)) { throw new ArgumentException(errorMessage); } var contentReader = new ContentReader(); const int bufferSize = 0x280; const int thresholdSize = 0x100000; Stream virtualStream = new VirtualStream(bufferSize, thresholdSize); Stream data = new ReadOnlySeekableStream(pInMsg.BodyPart.GetOriginalDataStream(), virtualStream, bufferSize); if (contentReader.IsXmlContent(data) && contentReader.NamespacExists(data, NamespaceToModify)) { var encoding = contentReader.Encoding(data); pInMsg.BodyPart.Data = new ContentWriter().ModifyNamespace(data, NamespaceToModify, NewNamespace, encoding); if (ShouldUpdateMessageTypeContext) { var rootName = contentReader.GetRootNode(data); var contextReader = new ContextReader(); contextReader.UpdateMessageTypeContext(pInMsg.Context, NewNamespace, rootName); } } else { data.Seek(0, SeekOrigin.Begin); pInMsg.BodyPart.Data = data; } return(pInMsg); }
public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg) { string errorMessage; if (!Validate(out errorMessage)) { throw new ArgumentException(errorMessage); } var contentReader = new ContentReader(); //Stream virtualStream = new VirtualStream(); //Stream data = new ReadOnlySeekableStream(pInMsg.BodyPart.GetOriginalDataStream(), virtualStream); var data = pInMsg.BodyPart.GetOriginalDataStream(); if (contentReader.IsXmlContent(data)) { var encoding = contentReader.Encoding(data); pInMsg.BodyPart.Data = new ContentWriter().AddNamespace(data, NewNamespace, NamespaceForm, XPath, encoding); if (ShouldUpdateMessageTypeContext) { var rootName = contentReader.GetRootNode(data); var contextReader = new ContextReader(); contextReader.UpdateMessageTypeContext(pInMsg.Context, NewNamespace, rootName); } } else { data.Seek(0, SeekOrigin.Begin); pInMsg.BodyPart.Data = data; } return(pInMsg); }