Skip to content

Instantly share code, notes, and snippets.

@machisuji
Created November 3, 2010 11:47
Show Gist options
  • Save machisuji/660995 to your computer and use it in GitHub Desktop.
Save machisuji/660995 to your computer and use it in GitHub Desktop.
overriding method + in trait MapLike of type [B1 >: String](kv: (String, B1))scala.collection.mutable.Map[String,B1];
[error] method + has incompatible type
[error] override def +[B1 >: String](kv: (String, B1)): Parameters = {
[error] ^
import javax.servlet.http.HttpServletRequest
import collection.JavaConversions._
class Parameters(request: HttpServletRequest) extends scala.collection.mutable.Map[String, String] {
def get(key: String): Option[String] = {
val value = request.getParameter(key)
if (value != null) Some(value) else None
}
override def +[B1 >: String](kv: (String, B1)): Parameters = {
request.asInstanceOf[RequestWrapper].setParameter(kv._1, kv._2.toString)
this
}
def +=(kv: (String, String)) = this.+(kv).asInstanceOf[Parameters.this.type]
override def -(key: String): Parameters = {
this.+(key -> null)
this
}
def -=(key: String) = this.-(key).asInstanceOf[Parameters.this.type]
override def empty: Parameters = new Parameters(request)
def iterator: Iterator[(String, String)] = request.getParameterNames().map { name =>
val param = name.toString
(param, request.getParameter(param))
}
override def size: Int = request.getParameterMap().size()
override def foreach[U](fun: ((String, String)) => U) = iterator.foreach(fun(_))
}
import javax.servlet.http.HttpServletRequest
import collection.JavaConversions._
class Parameters(request: HttpServletRequest) extends scala.collection.mutable.Map[String, Any] {
def get(key: String): Option[Any] = {
val value = request.getParameter(key)
if (value != null) Some(value) else None
}
override def +[B1 >: Any](kv: (String, B1)): Parameters = {
request.asInstanceOf[RequestWrapper].setParameter(kv._1, kv._2.toString)
this
}
def +=(kv: (String, Any)) = this.+(kv).asInstanceOf[Parameters.this.type]
override def -(key: String): Parameters = {
this.+(key -> null)
this
}
def -=(key: String) = this.-(key).asInstanceOf[Parameters.this.type]
override def empty: Parameters = new Parameters(request)
def iterator: Iterator[(String, Any)] = request.getParameterNames().map { name =>
val param = name.toString
(param, request.getParameter(param))
}
override def size: Int = request.getParameterMap().size()
override def foreach[U](fun: ((String, Any)) => U) = iterator.foreach(fun(_))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment