/*
Kooboo is a content management system based on ASP.NET MVC framework. Copyright 2009 Yardi Technology Limited.
This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.kooboo.com/gpl3/.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.IO;
using Everest.Library;
using Everest.CmsServices.Models;
using Everest.Library.ExtensionMethod;
namespace Everest.CmsServices.Web{
/// <summary>
/// the plugin controller factory.
/// </summary>
public class CmsControllerFactory : IControllerFactory
{
/// <summary>
/// Gets or sets the default controller factory.
/// </summary>
/// <value>The default controller factory.</value>
public IControllerFactory DefaultControllerFactory { get; private set; }
public CmsControllerFactory(IControllerFactory controllerFactory)
{
this.DefaultControllerFactory = controllerFactory;
}
#region IControllerFactory Members
/// <summary>
/// Creates the controller.
/// </summary>
/// <param name="requestContext">The request context.</param>
/// <param name="controllerName">Name of the controller,ignorecase.</param>
/// <returns></returns>
public IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName)
{
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
IController controller = DefaultControllerFactory.CreateController(requestContext, controllerName);
EverestContext.CreateEverestContext(true, baseDirectory);
return controller;
}
public void ReleaseController(IController controller)
{
IDisposable disposable = controller as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}
#endregion
}
}
|