/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.xml.ws.http.fragment;
import gw.internal.xml.ws.http.HttpParseContext;
import java.util.ArrayList;
import java.util.List;
public class HttpMediaType extends HttpFragment {
private final HttpToken _type;
private final HttpToken _subtype;
private final List<HttpParameter> _parameters;
public HttpMediaType( HttpToken type, HttpToken subtype, List<HttpParameter> parameters ) {
_type = type;
_subtype = subtype;
_parameters = new ArrayList<HttpParameter>( parameters );
}
public HttpMediaType( HttpParseContext context ) {
_type = new HttpToken( context );
consumeChar( context, (byte) '/' );
_subtype = new HttpToken( context );
consumeOptionalWhitespace( context );
_parameters = new ArrayList<HttpParameter>();
while ( consumeOptionalChar( context, (byte) ';' ) ) {
consumeOptionalWhitespace( context );
_parameters.add( new HttpParameter( context ) );
consumeOptionalWhitespace( context );
}
}
public HttpToken getType() {
return _type;
}
public HttpToken getSubtype() {
return _subtype;
}
public List<HttpParameter> getParameters() {
return _parameters;
}
public String getMediaType() {
return _type.getText() + "/" + _subtype.getText();
}
public String getFirstParameter( String key ) {
String value = null;
for ( HttpParameter httpParameter : getParameters() ) {
if ( httpParameter.getAttribute().getText().equals( key ) ) {
value = httpParameter.getValue().getText();
break;
}
}
return value;
}
}