HttpResponse增加retResultHandler属性
This commit is contained in:
@@ -123,6 +123,8 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
|
|
||||||
private BiFunction<HttpResponse, ByteBuffer[], ByteBuffer[]> bufferHandler;
|
private BiFunction<HttpResponse, ByteBuffer[], ByteBuffer[]> bufferHandler;
|
||||||
|
|
||||||
|
private BiFunction<HttpResponse, org.redkale.service.RetResult, org.redkale.service.RetResult> retResultHandler;
|
||||||
|
|
||||||
private Supplier<ByteBuffer> bodyBufferSupplier;
|
private Supplier<ByteBuffer> bodyBufferSupplier;
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
|
|
||||||
@@ -203,6 +205,7 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
this.headLenPos = -1;
|
this.headLenPos = -1;
|
||||||
this.header.clear();
|
this.header.clear();
|
||||||
this.bufferHandler = null;
|
this.bufferHandler = null;
|
||||||
|
this.retResultHandler = null;
|
||||||
return super.recycle();
|
return super.recycle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -393,8 +396,11 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
*
|
*
|
||||||
* @param ret RetResult输出对象
|
* @param ret RetResult输出对象
|
||||||
*/
|
*/
|
||||||
public void finishJson(final org.redkale.service.RetResult ret) {
|
public void finishJson(org.redkale.service.RetResult ret) {
|
||||||
this.contentType = this.jsonContentType;
|
this.contentType = this.jsonContentType;
|
||||||
|
if (this.retResultHandler != null) {
|
||||||
|
ret = this.retResultHandler.apply(this, ret);
|
||||||
|
}
|
||||||
if (this.recycleListener != null) this.output = ret;
|
if (this.recycleListener != null) this.output = ret;
|
||||||
if (ret != null && !ret.isSuccess()) {
|
if (ret != null && !ret.isSuccess()) {
|
||||||
this.header.addValue("retcode", String.valueOf(ret.getRetcode()));
|
this.header.addValue("retcode", String.valueOf(ret.getRetcode()));
|
||||||
@@ -411,8 +417,11 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
* @param convert 指定的JsonConvert
|
* @param convert 指定的JsonConvert
|
||||||
* @param ret RetResult输出对象
|
* @param ret RetResult输出对象
|
||||||
*/
|
*/
|
||||||
public void finishJson(final JsonConvert convert, final org.redkale.service.RetResult ret) {
|
public void finishJson(final JsonConvert convert, org.redkale.service.RetResult ret) {
|
||||||
this.contentType = this.jsonContentType;
|
this.contentType = this.jsonContentType;
|
||||||
|
if (this.retResultHandler != null) {
|
||||||
|
ret = this.retResultHandler.apply(this, ret);
|
||||||
|
}
|
||||||
if (this.recycleListener != null) this.output = ret;
|
if (this.recycleListener != null) this.output = ret;
|
||||||
if (ret != null && !ret.isSuccess()) {
|
if (ret != null && !ret.isSuccess()) {
|
||||||
this.header.addValue("retcode", String.valueOf(ret.getRetcode()));
|
this.header.addValue("retcode", String.valueOf(ret.getRetcode()));
|
||||||
@@ -482,7 +491,7 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
* @param obj 输出对象
|
* @param obj 输出对象
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void finish(final Convert convert, final Type type, final Object obj) {
|
public void finish(final Convert convert, final Type type, Object obj) {
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
finish("null");
|
finish("null");
|
||||||
} else if (obj instanceof CompletableFuture) {
|
} else if (obj instanceof CompletableFuture) {
|
||||||
@@ -549,6 +558,10 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
if (this.recycleListener != null) this.output = obj;
|
if (this.recycleListener != null) this.output = obj;
|
||||||
if (obj instanceof org.redkale.service.RetResult) {
|
if (obj instanceof org.redkale.service.RetResult) {
|
||||||
org.redkale.service.RetResult ret = (org.redkale.service.RetResult) obj;
|
org.redkale.service.RetResult ret = (org.redkale.service.RetResult) obj;
|
||||||
|
if (this.retResultHandler != null) {
|
||||||
|
ret = this.retResultHandler.apply(this, ret);
|
||||||
|
obj = ret;
|
||||||
|
}
|
||||||
if (!ret.isSuccess()) {
|
if (!ret.isSuccess()) {
|
||||||
this.header.addValue("retcode", String.valueOf(ret.getRetcode())).addValue("retinfo", ret.getRetinfo());
|
this.header.addValue("retcode", String.valueOf(ret.getRetcode())).addValue("retinfo", ret.getRetinfo());
|
||||||
}
|
}
|
||||||
@@ -1161,6 +1174,24 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
this.bufferHandler = bufferHandler;
|
this.bufferHandler = bufferHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取输出RetResult时的拦截器
|
||||||
|
*
|
||||||
|
* @return 拦截器
|
||||||
|
*/
|
||||||
|
protected BiFunction<HttpResponse, org.redkale.service.RetResult, org.redkale.service.RetResult> getRetResultHandler() {
|
||||||
|
return retResultHandler;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置输出RetResult时的拦截器
|
||||||
|
*
|
||||||
|
* @param retResultHandler 拦截器
|
||||||
|
*/
|
||||||
|
protected void setRetResultHandler(BiFunction<HttpResponse, org.redkale.service.RetResult, org.redkale.service.RetResult> retResultHandler) {
|
||||||
|
this.retResultHandler = retResultHandler;
|
||||||
|
}
|
||||||
|
|
||||||
protected final class TransferFileHandler implements CompletionHandler<Integer, ByteBuffer> {
|
protected final class TransferFileHandler implements CompletionHandler<Integer, ByteBuffer> {
|
||||||
|
|
||||||
private final File file;
|
private final File file;
|
||||||
|
|||||||
Reference in New Issue
Block a user