public object LoadObjects(object query, string domainKey) { if (useCompression && this.compressor != null) { query = this.compressor.Decompress((string)query); //domainKey = this.compressor.Decompress(domainKey); } IContext ctx = contextFactory.GetContext(domainKey); IMarshalingTransformer transformer = new MarshalingTransformer(ctx); MarshalQuery mq = (MarshalQuery)formater.Deserialize(query, typeof(MarshalQuery)); IQuery queryObject = transformer.ToQuery(mq); IList objects = ctx.GetObjectsByQuery(queryObject); MarshalObjectList mol = transformer.FromObjectList(objects); string serialized = (string)formater.Serialize(mol); ctx.Dispose(); if (useCompression && this.compressor != null) { return(this.compressor.Compress(serialized)); } else { return(serialized); } }
private MarshalQuery ToMarshalQuery(XmlNode xmlQuery) { MarshalQuery mq = new MarshalQuery(); if (!(xmlQuery.Attributes["type"] == null)) { mq.PrimitiveType = xmlQuery.Attributes["type"].Value; } if (!(xmlQuery.Attributes["query-type"] == null)) { mq.QueryType = xmlQuery.Attributes["query-type"].Value; } XmlNode xmlNode = xmlQuery.SelectSingleNode("query-string"); if (xmlNode != null) { mq.QueryString = xmlNode.InnerText; } XmlNodeList xmlNodeList = xmlQuery.SelectNodes("parameter"); foreach (XmlNode xmlParam in xmlNodeList) { mq.Parameters.Add(ToMarshalParameter(xmlParam)); } return(mq); }
public XmlNode SerializeToXmlNode(XmlDocument xmlDoc, MarshalQuery marshalQuery) { XmlNode xml = xmlDoc.CreateElement("query"); XmlAttribute xmlAttr; xmlAttr = xmlDoc.CreateAttribute("type"); xmlAttr.Value = marshalQuery.PrimitiveType; xml.Attributes.Append(xmlAttr); xmlAttr = xmlDoc.CreateAttribute("query-type"); xmlAttr.Value = marshalQuery.QueryType; xml.Attributes.Append(xmlAttr); XmlNode xmlQueryString = xmlDoc.CreateElement("query-string"); xmlQueryString.InnerText = marshalQuery.QueryString; xml.AppendChild(xmlQueryString); foreach (MarshalParameter mp in marshalQuery.Parameters) { xml.AppendChild(SerializeToXmlNode(xmlDoc, mp)); } return(xml); }
//Refresh issues!! public override IList LoadObjects(IQuery query, IList listToFill) { if (this.url.Length < 1) { throw new NPersistException("You must specify an url to your NPersist Web Service in your WebServiceRemotingEngine!"); } RemotingService rs = new RemotingService(this.Context, url); IMarshalingTransformer transformer = new MarshalingTransformer(Context); MarshalQuery mq = transformer.FromQuery(query); string xmlQuery = (string)Formatter.Serialize(mq); if (useCompression && this.compressor != null) { xmlQuery = this.compressor.Compress(xmlQuery); } bool doUseCompression = this.useCompression; if (this.compressor == null) { doUseCompression = false; } string result = rs.LoadObjects(xmlQuery, this.domainKey, doUseCompression); if (useCompression && this.compressor != null) { result = this.compressor.Decompress(result); } MarshalObjectList mol = (MarshalObjectList)Formatter.Deserialize(result, typeof(MarshalObjectList)); transformer.ToObjectList(mol, query.RefreshBehavior, listToFill); return(listToFill); }