private void PerformOneTimeInitializationIfNecessary(HttpContext context) { locker.AcquireReaderLock(Timeout.Infinite); if (mrContainer != null) { locker.ReleaseReaderLock(); return; } locker.UpgradeToWriterLock(Timeout.Infinite); if (mrContainer != null) // remember remember the race condition { locker.ReleaseWriterLock(); return; } try { if (configuration == null) { configuration = ObtainConfiguration(context.ApplicationInstance); } var userServiceProvider = serviceProviderLocator.LocateProvider(); mrContainer = CreateDefaultMonoRailContainer(userServiceProvider, context.ApplicationInstance); } finally { locker.ReleaseWriterLock(); } }
void IMonoRailContainerEvents.Initialized(IMonoRailContainer container) { Assembly precompiled = Assembly.Load("PrecompiledViews.Views"); var factory = new SparkViewFactory(); factory.Service(container); factory.Engine.LoadBatchCompilation(precompiled); }
/// <summary> /// Resets the state (only used from test cases) /// </summary> public void ResetState() { configuration = null; mrContainer = null; urlTokenizer = null; engineContextFactory = null; serviceProviderLocator = null; controllerFactory = null; controllerContextFactory = null; staticResourceRegistry = null; }
/// <summary> /// Initializes a new instance of the <see cref="DefaultEngineContext"/> class. /// </summary> /// <param name="container">The container.</param> /// <param name="urlInfo">Url information</param> /// <param name="context">The context.</param> /// <param name="server">The server.</param> /// <param name="request">The request.</param> /// <param name="response">The response.</param> /// <param name="trace">The trace.</param> /// <param name="session">The session.</param> public DefaultEngineContext(IMonoRailContainer container, UrlInfo urlInfo, HttpContext context, IServerUtility server, IRequest request, IResponse response, ITrace trace, IDictionary session) : base(container) { this.container = container; this.UnderlyingContext = context; this.UrlInfo = urlInfo; this.Request = request; this.Response = response; this.Session = session; this.Server = server; this.Trace = trace; }
/// <summary> /// Pendent. /// </summary> /// <param name="container"></param> /// <param name="urlInfo"></param> /// <param name="context"></param> /// <param name="routeMatch"></param> /// <returns></returns> public IEngineContext Create(IMonoRailContainer container, UrlInfo urlInfo, HttpContext context, RouteMatch routeMatch) { var session = ResolveRequestSession(container, urlInfo, context); var urlBuilder = container.UrlBuilder; var serverUtility = new ServerUtilityAdapter(context.Server); var referrer = context.Request.Headers["Referer"]; return(new DefaultEngineContext(container, urlInfo, context, serverUtility, new RequestAdapter(context.Request), new ResponseAdapter(context.Response, urlInfo, urlBuilder, serverUtility, routeMatch, referrer), new TraceAdapter(context.Trace), session)); }
/// <summary> /// Pendent. /// </summary> /// <param name="container"></param> /// <param name="urlInfo"></param> /// <param name="context"></param> /// <param name="routeMatch"></param> /// <returns></returns> public IEngineContext Create(IMonoRailContainer container, UrlInfo urlInfo, HttpContext context, RouteMatch routeMatch) { var session = ResolveRequestSession(container, urlInfo, context); var urlBuilder = container.UrlBuilder; var serverUtility = new ServerUtilityAdapter(context.Server); var referrer = context.Request.Headers["Referer"]; return new DefaultEngineContext(container, urlInfo, context, serverUtility, new RequestAdapter(context.Request), new ResponseAdapter(context.Response, urlInfo, urlBuilder, serverUtility, routeMatch, referrer), new TraceAdapter(context.Trace), session); }
public void Init() { _Container = _MockRepository.CreateMock<IMonoRailContainer>(); _ServiceProviderLocatorMock = _MockRepository.CreateMock<IServiceProviderLocator>(); _ControllerFactoryMock = _MockRepository.CreateMock<IControllerFactory>(); _ControllerMock = _MockRepository.CreateMock<IController>(); _ControllerDescriptorProviderMock = _MockRepository.CreateMock<IControllerDescriptorProvider>(); _ControllerContextFactoryMock = _MockRepository.CreateMock<IControllerContextFactory>(); SetupResult.For( _Container.UrlTokenizer ).Return( new DefaultUrlTokenizer() ); SetupResult.For( _Container.UrlBuilder ).Return( new DefaultUrlBuilder() ); SetupResult.For( _Container.EngineContextFactory ).Return( new DefaultEngineContextFactory() ); SetupResult.For( _Container.ControllerFactory ).Return( _ControllerFactoryMock ); SetupResult.For( _Container.ControllerContextFactory ).Return( _ControllerContextFactoryMock ); SetupResult.For( _Container.ControllerDescriptorProvider ).Return( _ControllerDescriptorProviderMock ); SetupResult.For( _Container.StaticResourceRegistry ).Return( new DefaultStaticResourceRegistry() ); _HandlerFactory = new MonoRailHttpHandlerFactory( _ServiceProviderLocatorMock ); _HandlerFactory.ResetState(); _HandlerFactory.Configuration = new MonoRailConfiguration(); _HandlerFactory.Container = _Container; }
public void Init() { container = mockRepository.DynamicMock<IMonoRailContainer>(); serviceProviderLocatorMock = mockRepository.DynamicMock<IServiceProviderLocator>(); controllerFactoryMock = mockRepository.DynamicMock<IControllerFactory>(); controllerMock = mockRepository.DynamicMock<IAsyncController>(); controllerDescriptorProviderMock = mockRepository.DynamicMock<IControllerDescriptorProvider>(); controllerContextFactoryMock = mockRepository.DynamicMock<IControllerContextFactory>(); SetupResult.For(container.UrlTokenizer).Return(new DefaultUrlTokenizer()); SetupResult.For(container.UrlBuilder).Return(new DefaultUrlBuilder()); SetupResult.For(container.EngineContextFactory).Return(new DefaultEngineContextFactory()); SetupResult.For(container.ControllerFactory).Return(controllerFactoryMock); SetupResult.For(container.ControllerContextFactory).Return(controllerContextFactoryMock); SetupResult.For(container.ControllerDescriptorProvider).Return(controllerDescriptorProviderMock); SetupResult.For(container.StaticResourceRegistry).Return(new DefaultStaticResourceRegistry()); handlerFactory = new MonoRailHttpHandlerFactory(serviceProviderLocatorMock); handlerFactory.ResetState(); handlerFactory.Configuration = new MonoRailConfiguration(); handlerFactory.Container = container; }
public void Init() { container = mockRepository.DynamicMock <IMonoRailContainer>(); serviceProviderLocatorMock = mockRepository.DynamicMock <IServiceProviderLocator>(); controllerFactoryMock = mockRepository.DynamicMock <IControllerFactory>(); controllerMock = mockRepository.DynamicMock <IAsyncController>(); controllerDescriptorProviderMock = mockRepository.DynamicMock <IControllerDescriptorProvider>(); controllerContextFactoryMock = mockRepository.DynamicMock <IControllerContextFactory>(); SetupResult.For(container.UrlTokenizer).Return(new DefaultUrlTokenizer()); SetupResult.For(container.UrlBuilder).Return(new DefaultUrlBuilder()); SetupResult.For(container.EngineContextFactory).Return(new DefaultEngineContextFactory()); SetupResult.For(container.ControllerFactory).Return(controllerFactoryMock); SetupResult.For(container.ControllerContextFactory).Return(controllerContextFactoryMock); SetupResult.For(container.ControllerDescriptorProvider).Return(controllerDescriptorProviderMock); SetupResult.For(container.StaticResourceRegistry).Return(new DefaultStaticResourceRegistry()); handlerFactory = new MonoRailHttpHandlerFactory(serviceProviderLocatorMock); handlerFactory.ResetState(); handlerFactory.Configuration = new MonoRailConfiguration(); handlerFactory.Container = container; }
public void Init() { _Container = _MockRepository.CreateMock <IMonoRailContainer>(); _ServiceProviderLocatorMock = _MockRepository.CreateMock <IServiceProviderLocator>(); _ControllerFactoryMock = _MockRepository.CreateMock <IControllerFactory>(); _ControllerMock = _MockRepository.CreateMock <IController>(); _ControllerDescriptorProviderMock = _MockRepository.CreateMock <IControllerDescriptorProvider>(); _ControllerContextFactoryMock = _MockRepository.CreateMock <IControllerContextFactory>(); SetupResult.For(_Container.UrlTokenizer).Return(new DefaultUrlTokenizer()); SetupResult.For(_Container.UrlBuilder).Return(new DefaultUrlBuilder()); SetupResult.For(_Container.EngineContextFactory).Return(new DefaultEngineContextFactory()); SetupResult.For(_Container.ControllerFactory).Return(_ControllerFactoryMock); SetupResult.For(_Container.ControllerContextFactory).Return(_ControllerContextFactoryMock); SetupResult.For(_Container.ControllerDescriptorProvider).Return(_ControllerDescriptorProviderMock); SetupResult.For(_Container.StaticResourceRegistry).Return(new DefaultStaticResourceRegistry()); _HandlerFactory = new MonoRailHttpHandlerFactory(_ServiceProviderLocatorMock); _HandlerFactory.ResetState(); _HandlerFactory.Configuration = new MonoRailConfiguration(); _HandlerFactory.Container = _Container; }
/// <inheritdoc/> public void Service(IServiceProvider provider) { container = provider as IMonoRailContainer; }
/// <summary> /// Resolves the request session. /// </summary> protected virtual IDictionary ResolveRequestSession(IMonoRailContainer container, UrlInfo urlInfo, HttpContext context) { return(null); }
public void Initialized(IMonoRailContainer container) { }
public void Created(IMonoRailContainer container) { }
void IMonoRailContainerEvents.Created(IMonoRailContainer container) { }
///<summary> /// Gives implementors a chance to get MonoRail's services and uses it somewhere else - /// for instance, registering them on an IoC container. ///</summary> ///<param name="container"></param> public void Initialized(IMonoRailContainer container) { IAjaxProxyGenerator ajaxProxyGenerator = new JQueryAjaxProxyGenerator(); container.ServiceInitializer.Initialize(ajaxProxyGenerator, container); container.AjaxProxyGenerator = ajaxProxyGenerator; }
/// <summary> /// Resolves the request session. /// </summary> protected virtual IDictionary ResolveRequestSession(IMonoRailContainer container, UrlInfo urlInfo, HttpContext context) { return null; }
public void Initialized(IMonoRailContainer container) { container.UrlBuilder.UseExtensions = false; }