diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index e6ac526..a3406cc 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -67,37 +67,37 @@ def ajaxGet(path : String)(action : => Any) : Route = super.get(path){ - request.setAttribute("AJAX", "true") + request.setAttribute(Keys.Request.Ajax, "true") action } override def ajaxGet[T](path : String, form : MappingValueType[T])(action : T => Any) : Route = super.ajaxGet(path, form){ form => - request.setAttribute("AJAX", "true") + request.setAttribute(Keys.Request.Ajax, "true") action(form) } def ajaxPost(path : String)(action : => Any) : Route = super.post(path){ - request.setAttribute("AJAX", "true") + request.setAttribute(Keys.Request.Ajax, "true") action } override def ajaxPost[T](path : String, form : MappingValueType[T])(action : T => Any) : Route = super.ajaxPost(path, form){ form => - request.setAttribute("AJAX", "true") + request.setAttribute(Keys.Request.Ajax, "true") action(form) } protected def NotFound() = - if(request.hasAttribute("AJAX")){ + if(request.hasAttribute(Keys.Request.Ajax)){ org.scalatra.NotFound() } else { org.scalatra.NotFound(html.error("Not Found")) } protected def Unauthorized()(implicit context: app.Context) = - if(request.hasAttribute("AJAX")){ + if(request.hasAttribute(Keys.Request.Ajax)){ org.scalatra.Unauthorized() } else { if(context.loginAccount.isDefined){ @@ -135,10 +135,12 @@ * Cached object are available during a request. */ def cache[A](key: String)(action: => A): A = - Option(request.getAttribute("cache." + key).asInstanceOf[A]).getOrElse { - val newObject = action - request.setAttribute("cache." + key, newObject) - newObject + defining(Keys.Request.Cache(key)){ cacheKey => + Option(request.getAttribute(cacheKey).asInstanceOf[A]).getOrElse { + val newObject = action + request.setAttribute(cacheKey, newObject) + newObject + } } } diff --git a/src/main/scala/servlet/BasicAuthenticationFilter.scala b/src/main/scala/servlet/BasicAuthenticationFilter.scala index 9a085ad..ad8a836 100644 --- a/src/main/scala/servlet/BasicAuthenticationFilter.scala +++ b/src/main/scala/servlet/BasicAuthenticationFilter.scala @@ -6,6 +6,7 @@ import org.slf4j.LoggerFactory import util.Implicits._ import util.ControlUtil._ +import util.Keys /** * Provides BASIC Authentication for [[servlet.GitRepositoryServlet]]. @@ -38,7 +39,7 @@ case null => requireAuth(response) case auth => decodeAuthHeader(auth).split(":") match { case Array(username, password) if(isWritableUser(username, password, repository)) => { - request.setAttribute("USER_NAME", username) + request.setAttribute(Keys.Request.UserName, username) chain.doFilter(req, wrappedResponse) } case _ => requireAuth(response) diff --git a/src/main/scala/servlet/GitRepositoryServlet.scala b/src/main/scala/servlet/GitRepositoryServlet.scala index f385c98..309b025 100644 --- a/src/main/scala/servlet/GitRepositoryServlet.scala +++ b/src/main/scala/servlet/GitRepositoryServlet.scala @@ -9,7 +9,7 @@ import javax.servlet.ServletConfig import javax.servlet.ServletContext import javax.servlet.http.HttpServletRequest -import util.{JGitUtil, Directory} +import util.{Keys, JGitUtil, Directory} import util.ControlUtil._ import util.Implicits._ import service._ @@ -55,7 +55,7 @@ override def create(request: HttpServletRequest, db: Repository): ReceivePack = { val receivePack = new ReceivePack(db) - val userName = request.getAttribute("USER_NAME").asInstanceOf[String] + val userName = request.getAttribute(Keys.Request.UserName).asInstanceOf[String] logger.debug("requestURI: " + request.getRequestURI) logger.debug("userName:" + userName) diff --git a/src/main/scala/util/Keys.scala b/src/main/scala/util/Keys.scala index 9dae8d0..4aabe35 100644 --- a/src/main/scala/util/Keys.scala +++ b/src/main/scala/util/Keys.scala @@ -1,10 +1,13 @@ package util /** - * Define key strings for request attributes, session attributes or flash attributes.. + * Define key strings for request attributes, session attributes or flash attributes. */ object Keys { + /** + * Define session keys. + */ object Session { /** @@ -44,4 +47,26 @@ } + /** + * Define request keys. + */ + object Request { + + /** + * Request key for the Ajax request flag. + */ + val Ajax = "AJAX" + + /** + * Request key for the username which is used during Git repository access. + */ + val UserName = "USER_NAME" + + /** + * Generate request key for the request cache. + */ + def Cache(key: String) = s"cache.${key}" + + } + }