!htc #16494 provide content negotiation fallback to exception handlers

This commit is contained in:
2beaucoup 2014-12-10 12:35:50 +01:00 committed by André Rüdiger
parent a1d7c33663
commit ec7156698a
7 changed files with 45 additions and 6 deletions

View file

@ -13,6 +13,8 @@ import akka.http.model.japi.MediaRange;
public abstract class Accept extends akka.http.model.HttpHeader {
public abstract Iterable<MediaRange> getMediaRanges();
public abstract boolean acceptsAll();
public static Accept create(MediaRange... mediaRanges) {
return new akka.http.model.headers.Accept(akka.http.model.japi.Util.<MediaRange, akka.http.model.MediaRange>convertArray(mediaRanges));
}

View file

@ -22,6 +22,7 @@ sealed abstract class MediaRange extends japi.MediaRange with Renderable with Wi
def isMultipart = false
def isText = false
def isVideo = false
def isWildcard = mainType == "*"
/**
* Returns a copy of this instance with the params replaced by the given ones.
@ -123,6 +124,7 @@ object MediaRanges extends ObjectRegistry[String, MediaRange] {
def matches(mediaType: MediaType) = true
def specimen = MediaTypes.`text/plain`
}
val `*/*(minQ)` = `*/*`.withQValue(Float.MinPositiveValue)
val `application/*` = new PredefinedMediaRange("application/*") {
def matches(mediaType: MediaType) = mediaType.isApplication
override def isApplication = true

View file

@ -129,6 +129,7 @@ final case class Accept(mediaRanges: immutable.Seq[MediaRange]) extends japi.hea
import Accept.mediaRangesRenderer
def renderValue[R <: Rendering](r: R): r.type = r ~~ mediaRanges
protected def companion = Accept
def acceptsAll = mediaRanges.exists(mr mr.isWildcard && mr.qValue > 0f)
/** Java API */
def getMediaRanges: Iterable[japi.MediaRange] = mediaRanges.asJava