예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }