package com.github.aesteve.vertx.nubes.marshallers.impl;
import com.github.aesteve.vertx.nubes.marshallers.PayloadMarshaller;
import com.github.aesteve.vertx.nubes.utils.StackTracePrinter;
import io.vertx.core.VertxException;
public class PlainTextMarshaller implements PayloadMarshaller {
@Override
@SuppressWarnings("unchecked")
public <T> T unmarshallPayload(String body, Class<T> clazz) {
if (!String.class.isAssignableFrom(clazz)) {
throw new VertxException("text/plain should only be used to marshall Strings");
}
return (T) body;
}
@Override
public String marshallPayload(Object payload) {
if (payload instanceof String) {
return payload.toString();
} else {
throw new VertxException("text/plain should only be used to marshall Strings");
}
}
@Override
public String marshallUnexpectedError(Throwable error, boolean displayDetails) {
if (displayDetails) {
return StackTracePrinter.asLineString(new StringBuilder(), error).toString();
} else {
return "Internal server error";
}
}
@Override
public String marshallHttpStatus(int statusCode, String errorMessage) {
return statusCode + " : " + errorMessage;
}
}