private XMLTransformer GetXMLTransformer(string key) { if (_responseTransformerList == null) { _responseTransformerList = new Dictionary <string, XMLTransformer>(); } if (_responseTransformerList.ContainsKey(key)) { return(_responseTransformerList[key]); } else { string xsltFileName = GetXsltFileName(key); if (xsltFileName == null) { return(null); } XMLTransformer t = XMLTransformer.CreateFromFile(xsltFileName, _context.Log); if (t == null) { return(null); } _responseTransformerList.Add(key, t); return(t); } }
public string GetPublishResponseMessageContent(string xsltFileName, string sourceXml) { bool res = false; string targetXml = ""; _context.Log.Write(string.Format("Begin generating response message with file: {0}.", xsltFileName)); string xslFile = ConfigHelper.GetFullPath(_context.AppArgument.ConfigFilePath, xsltFileName); XMLTransformer it = XMLTransformer.CreateFromFileWithCache(xslFile, _context.Log); res = it.TransformString(sourceXml, ref targetXml, _context.ConfigMgr.Config.InboundMessageDispatching.XSLTExtensionsForGeneratingResponse); _context.Log.Write(string.Format("End generating response message with file: {0}. Result: {1}", xsltFileName, res)); return(targetXml); }
public static XMLTransformer CreateFromFileWithCache(string xslFileName, ILog log) { if (xslFileName == null) { return(null); } XMLTransformer t = _transformerList[xslFileName] as XMLTransformer; if (t == null) { t = CreateFromFile(xslFileName, log); if (t != null) { _transformerList.Add(xslFileName, t); } } return(t); }
public bool GenerateSOAPMessage(Message msg, out string soapEnvelope) { soapEnvelope = ""; if (msg == null || msg.Header == null) { return(false); } string msgID = msg.Header.ID.ToString(); switch (_context.ConfigMgr.Config.OutboundProcessing.Model) { case MessageProcessModel.Direct: { _context.Log.Write(string.Format("Use the message body as SOAP envelop directly. Message ID: {0}", msgID)); soapEnvelope = msg.Body; return(true); } case MessageProcessModel.Xslt: { string strSoap = ""; string strMsg = msg.ToXMLString(); _context.Log.Write(string.Format("Begin transforming XDS Gateway message to SOAP message. Message ID: {0}", msgID)); XMLTransformer t = XMLTransformer.CreateFromFileWithCache (_context.ConfigMgr.Config.GetXSLTFileFullPath_XDSGatewayMessageToSOAPMessage(), _context.Log); bool res = (t != null && t.TransformString(strMsg, ref strSoap, _context.ConfigMgr.Config.OutboundProcessing.XSLTExtensions)); _context.Log.Write(string.Format("End transforming XDS Gateway message to SOAP message. Message ID: {0}. Result: {1}", msgID, res)); soapEnvelope = strSoap; return(res); } } return(false); }
public string GetSampleResponseMessageContent(string key, string xmlString) { string str = ""; bool res = false; _context.Log.Write(string.Format("Begin generating response message for requesting message with key: {0}.", key)); XMLTransformer t = GetXMLTransformer(key); if (t == null) { _context.Log.Write(LogType.Error, "Cannot find any template to generate response message, return an empty message any way."); str = "<Message><Header/><Body/></Message>"; } else { res = t.TransformString(xmlString, ref str, _context.ConfigMgr.Config.InboundMessageDispatching.XSLTExtensionsForGeneratingResponse); } _context.Log.Write(string.Format("End generating response message for requesting message with key: {0}. Result: {1}", key, res)); return(str); }
private bool GenerateXDSGWMessage(string soapEnvelope, out Message msg, out string xdsgwMsg, bool returnMsgObject, bool returnMsgString) { msg = null; xdsgwMsg = ""; if (soapEnvelope == null || soapEnvelope.Length < 1) { return(false); } switch (_context.ConfigMgr.Config.InboundProcessing.Model) { case MessageProcessModel.Direct: { msg = new Message(); msg.Header.ID = Guid.NewGuid(); //msg.Header.Type = MessageRegistry.GENERIC_ResponseMessageType; // do not need to set message type here, set message type when dispatching messages. msg.Body = Message.RemoveXmlHeader(soapEnvelope); if (returnMsgString) { xdsgwMsg = msg.ToXMLString(); } _context.Log.Write(string.Format("Use the SOAP envelope as XDS Gateway message body directly. Message ID: {0}", msg.Header.ID.ToString())); return(true); } case MessageProcessModel.Xslt: { string strMsg = ""; _context.Log.Write("Begin transforming SOAP message to XDS Gateway message. "); XMLTransformer t = XMLTransformer.CreateFromFileWithCache (_context.ConfigMgr.Config.GetXSLTFileFullPath_SOAPMessageToXDSGatewayMessage(), _context.Log); bool res = (t != null && t.TransformString(soapEnvelope, ref strMsg, _context.ConfigMgr.Config.InboundProcessing.XSLTExtensions)); _context.Log.Write(string.Format("End transforming SOAP message to XDS Gateway message. Result: {0}", res)); if (!res) { return(false); } if (returnMsgString) { xdsgwMsg = strMsg; return(true); } else if (returnMsgObject) { msg = CreateXDSGWMessage(strMsg); return(msg != null); } return(true); } } return(false); }