All Downloads are FREE. Search and download functionalities are using the official Maven repository.

xitrum.Component.scala Maven / Gradle / Ivy

The newest version!
package xitrum

import io.netty.handler.codec.http.cookie.Cookie
import xitrum.scope.request.At

import java.util.{List => JList, Locale}
import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer

trait Component extends Action {
  private var parent: Action = _

  def apply(action: Action): Unit = {
    parent = action
    this.handlerEnv = action.handlerEnv
  }

  def execute(): Unit = {}

  override def jsAddToView(js: Any): Unit = { parent.jsAddToView(js) }

  //----------------------------------------------------------------------------
  // Things that must be in sync with parent

  override lazy val at: At = parent.at

  override def language: String = parent.language
  override def locale: Locale = parent.locale
  override def language_=(language: String): Unit = { parent.language = language }

  //----------------------------------------------------------------------------
  // Reuse things from parent, things that can be calculated from handlerEnv,
  // but takes time to calculate

  override lazy val requestCookies: collection.Map[String, String] = parent.requestCookies
  override lazy val responseCookies: ArrayBuffer[Cookie] = parent.responseCookies
  override lazy val session: mutable.Map[String, Any] = parent.session

  override lazy val remoteIp: String = parent.remoteIp
  override lazy val isSsl: Boolean = parent.isSsl

  override lazy val serverName: String = parent.serverName
  override lazy val serverPort: Int = parent.serverPort

  override lazy val browserLanguages: JList[Locale.LanguageRange] = parent.browserLanguages
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy