O
- the type of option object this parser acceptspublic abstract class ParserSupport<O> extends Object implements Parser<O>
Parser
implementations.
Specializations only need to implement the Parser.parse(ratpack.handling.Context, ratpack.http.TypedData, Parse)
method.
import ratpack.exec.Promise;
import ratpack.handling.Handler;
import ratpack.handling.Context;
import ratpack.http.TypedData;
import ratpack.parse.Parse;
import ratpack.parse.ParserSupport;
import ratpack.parse.ParseException;
import ratpack.util.Types;
import java.io.UnsupportedEncodingException;
import ratpack.test.handling.HandlingResult;
import ratpack.test.handling.RequestFixture;
import static org.junit.Assert.assertEquals;
public class Example {
// The parse options
public static class StringParseOpts {
private int maxLength;
public StringParseOpts(int maxLength) {
this.maxLength = maxLength;
}
public int getMaxLength() {
return maxLength;
}
}
// A parser for this type
public static class MaxLengthStringParser extends ParserSupport<StringParseOpts> {
public MaxLengthStringParser() {
super("text/plain");
}
public <T> T parse(Context context, TypedData body, Parse<T, StringParseOpts> parse) throws UnsupportedEncodingException {
if (!parse.getType().getRawType().equals(String.class)) {
return null;
}
String rawString = body.getText();
if (rawString.length() < parse.getOpts().getMaxLength()) {
return Types.cast(rawString);
} else {
return Types.cast(rawString.substring(0, parse.getOpts().getMaxLength()));
}
}
}
public static class ToUpperCaseHandler implements Handler {
public void handle(Context context) throws Exception {
context.parse(String.class, new StringParseOpts(5)).then(string -> context.render(string));
}
}
// unit test
public static void main(String[] args) throws Exception {
HandlingResult result = RequestFixture.handle(new ToUpperCaseHandler(), fixture ->
fixture
.body("123456", "text/plain")
.registry(registry -> registry.add(new MaxLengthStringParser()))
);
assertEquals("12345", result.rendered(String.class));
}
}
NoOptParserSupport
Modifier | Constructor and Description |
---|---|
protected |
ParserSupport(String contentType)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
String |
getContentType()
The content type that this parser knows how to deserialize.
|
Class<O> |
getOptsType()
The type of option object that this parser accepts.
|
protected ParserSupport(String contentType)
contentType
- the type of request this parser can handlepublic final String getContentType()
getContentType
in interface Parser<O>
public final Class<O> getOptsType()
getOptsType
in interface Parser<O>
ParserSupport