=htc #19418 avoid LUB calculation problem, see SI-9621

This commit is contained in:
Konrad Malawski 2016-01-14 14:25:43 +01:00
parent be0c8af4c0
commit 9fd543bff0
2 changed files with 77 additions and 67 deletions

View file

@ -1,67 +0,0 @@
/**
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
*/
package akka.http.javadsl.model;
/**
* Represents an Http media-type. A media-type consists of a main-type and a sub-type.
*/
public interface MediaType {
/**
* The main-type of this media-type.
*/
String mainType();
/**
* The sub-type of this media-type.
*/
String subType();
/**
* True when this media-type is generally compressible.
*/
boolean isCompressible();
/**
* True when this media-type is not character-based.
*/
boolean binary();
boolean isApplication();
boolean isAudio();
boolean isImage();
boolean isMessage();
boolean isMultipart();
boolean isText();
boolean isVideo();
/**
* Creates a media-range from this media-type.
*/
MediaRange toRange();
/**
* Creates a media-range from this media-type with a given qValue.
*/
MediaRange toRange(float qValue);
interface Binary extends MediaType {
ContentType.Binary toContentType();
}
interface NonBinary extends MediaType {
}
interface WithFixedCharset extends NonBinary {
ContentType.WithFixedCharset toContentType();
}
interface WithOpenCharset extends NonBinary {
ContentType.WithCharset toContentType(HttpCharset charset);
}
interface Multipart extends WithOpenCharset {
}
}

View file

@ -0,0 +1,77 @@
/**
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
*/
package akka.http.javadsl.model
/**
* Represents an Http media-type. A media-type consists of a main-type and a sub-type.
*
* Has to be defined in Scala even though it's JavaDSL because of: https://issues.scala-lang.org/browse/SI-9621
*/
object MediaType {
trait Binary extends MediaType {
def toContentType: ContentType.Binary
}
trait NonBinary extends MediaType {
}
trait WithFixedCharset extends NonBinary {
def toContentType: ContentType.WithFixedCharset
}
trait WithOpenCharset extends NonBinary {
def toContentType(charset: HttpCharset): ContentType.WithCharset
}
trait Multipart extends WithOpenCharset {
}
}
trait MediaType {
/**
* The main-type of this media-type.
*/
def mainType: String
/**
* The sub-type of this media-type.
*/
def subType: String
/**
* True when this media-type is generally compressible.
*/
def isCompressible: Boolean
/**
* True when this media-type is not character-based.
*/
def binary: Boolean
def isApplication: Boolean
def isAudio: Boolean
def isImage: Boolean
def isMessage: Boolean
def isMultipart: Boolean
def isText: Boolean
def isVideo: Boolean
/**
* Creates a media-range from this media-type.
*/
def toRange: MediaRange
/**
* Creates a media-range from this media-type with a given qValue.
*/
def toRange(qValue: Float): MediaRange
}