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.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 ratpack.func.Action;
import ratpack.registry.RegistrySpec;
import java.io.UnsupportedEncodingException;
import ratpack.test.UnitTest;
import ratpack.test.handling.HandlingResult;
import ratpack.test.handling.RequestFixture;
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 {
public MaxLengthStringParser() {
super("text/plain");
}
public <T> T parse(Context context, TypedData requestBody, Parse<T, StringParseOpts> parse) throws UnsupportedEncodingException {
if (!parse.getType().getRawType().equals(String.class)) {
return null;
}
String rawString = requestBody.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 ParseException {
String string = context.parse(String.class, new StringParseOpts(5));
context.render(string);
}
}
// unit test
public static void main(String[] args) {
HandlingResult result = UnitTest.handle(new ToUpperCaseHandler(), new Action<RequestFixture>() {
public void execute(RequestFixture fixture) throws Exception {
fixture
.body("123456", "text/plain")
.registry(new Action<RegistrySpec>() {
public void execute(RegistrySpec registry) {
registry.add(new MaxLengthStringParser());
}
});
}
});
assert result.rendered(String.class).equals("12345");
}
}
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