public JsonRpcProxyGenerator(MessageBroker messageBroker) : base(messageBroker) { _generators = new Hashtable(); _generators.Add("default", new DefaultJsonRpcProxyGenerator()); try { JsonRpcGeneratorCollection generatorSettings = FluorineConfiguration.Instance.FluorineSettings.JSonSettings.JsonRpcGenerators; for (int i = 0; i < generatorSettings.Count; i++) { JsonRpcGenerator generatorSetting = generatorSettings[i]; IJsonRpcProxyGenerator generator = ObjectFactory.CreateInstance(generatorSetting.Type) as IJsonRpcProxyGenerator; if (generator != null) { _generators.Add(generatorSetting.Name, generator); } else { if (log.IsErrorEnabled) { log.Error(string.Format("JsonRpcGenerator {0} was not found", generatorSetting.Name)); } } } } catch (Exception ex) { log.Fatal("Creating JsonRpcProxyGenerator failed", ex); } }
public JsonRpcProxyGenerator(MessageBroker messageBroker) : base(messageBroker) { this._lastModifiedTime = DateTime.MinValue; this._generators = new Hashtable(); this._generators.Add("default", new DefaultJsonRpcProxyGenerator()); try { JsonRpcGeneratorCollection jsonRpcGenerators = FluorineConfiguration.Instance.FluorineSettings.JSonSettings.JsonRpcGenerators; for (int i = 0; i < jsonRpcGenerators.Count; i++) { JsonRpcGenerator generator = jsonRpcGenerators[i]; IJsonRpcProxyGenerator generator2 = ObjectFactory.CreateInstance(generator.Type) as IJsonRpcProxyGenerator; if (generator2 != null) { this._generators.Add(generator.Name, generator2); } else if (log.get_IsErrorEnabled()) { log.Error(string.Format("JsonRpcGenerator {0} was not found", generator.Name)); } } } catch (Exception exception) { log.Fatal("Creating JsonRpcProxyGenerator failed", exception); } }
protected override void ProcessRequest() { Destination destination = null; string source = this.Request.QueryString["source"]; if (!StringUtils.IsNullOrEmpty(source)) { string destinationId = this.MessageBroker.GetDestinationId(source); destination = this.MessageBroker.GetDestination(destinationId); } else { string destinationId = this.Request.QueryString["destination"]; if (!StringUtils.IsNullOrEmpty(destinationId)) { destination = this.MessageBroker.GetDestination(destinationId); source = destination.Source; } } Type type; FactoryInstance factoryInstance = destination.GetFactoryInstance(); lock (factoryInstance) { factoryInstance.Source = source; type = factoryInstance.GetInstanceClass(); } if (type != null) { ServiceClass serviceClass = JsonRpcServiceReflector.FromType(type); UpdateLastModifiedTime(type); if (!Modified()) { this.Response.StatusCode = 304; return; } if (_lastModifiedTime != DateTime.MinValue) { this.Response.Cache.SetCacheability(HttpCacheability.Public); this.Response.Cache.SetLastModified(_lastModifiedTime); } Response.ContentType = "text/javascript"; string clientFileName = serviceClass.Name + "Proxy.js"; Response.AppendHeader("Content-Disposition", "attachment; filename=" + clientFileName); //WriteProxy(serviceClass, new IndentedTextWriter(Response.Output)); string generatorName = "default"; if (!StringUtils.IsNullOrEmpty(this.Request.QueryString["generator"])) { generatorName = this.Request.QueryString["generator"]; } if (_generators.Contains(generatorName)) { IJsonRpcProxyGenerator generator = _generators[generatorName] as IJsonRpcProxyGenerator; generator.WriteProxy(serviceClass, new IndentedTextWriter(Response.Output), this.Request); } else { if (log.IsErrorEnabled) { log.Error(string.Format("JsonRpcGenerator {0} was not found", generatorName)); } } } }