From ee56ffa346373e161d6ac34bddba8c345ad8669d Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Wed, 9 Sep 2020 10:16:19 +0800 Subject: [PATCH] --- src/org/redkale/mq/HttpMessageRequest.java | 33 ++++++++++++++++++++++ src/org/redkale/net/http/HttpRequest.java | 13 ++++----- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/org/redkale/mq/HttpMessageRequest.java b/src/org/redkale/mq/HttpMessageRequest.java index 8611b8921..30e6deaa3 100644 --- a/src/org/redkale/mq/HttpMessageRequest.java +++ b/src/org/redkale/mq/HttpMessageRequest.java @@ -5,6 +5,7 @@ */ package org.redkale.mq; +import org.redkale.convert.*; import org.redkale.net.http.*; /** @@ -20,13 +21,45 @@ public class HttpMessageRequest extends HttpRequest { protected MessageRecord message; + protected Convert diyConvert; + public HttpMessageRequest(HttpContext context, MessageRecord message) { super(context, message.decodeContent(HttpSimpleRequestCoder.getInstance())); this.message = message; this.currentUserid = message.getUserid(); + if (message.getFormat() != ConvertType.JSON) { + this.diyConvert = ConvertFactory.findConvert(message.getFormat()); + } } public void setRequestURI(String uri) { this.requestURI = uri; } + + @Override + public T getBodyJson(java.lang.reflect.Type type) { + if (diyConvert != null) return (T) diyConvert.convertFrom(type, getBody()); + return super.getBodyJson(type); + } + + @Override + public String getParameter(String name) { + if (diyConvert != null) return (String) diyConvert.convertFrom(String.class, getBody()); + return super.getParameter(name); + } + + @Override + public String getParameter(String name, String defaultValue) { + if (diyConvert != null) { + String val = (String) diyConvert.convertFrom(String.class, getBody()); + return val == null ? defaultValue : val; + } + return super.getParameter(name, defaultValue); + } + + @Override + public T getJsonParameter(java.lang.reflect.Type type, String name) { + if (diyConvert != null) return (T) diyConvert.convertFrom(type, getBody()); + return super.getJsonParameter(type, name); + } } diff --git a/src/org/redkale/net/http/HttpRequest.java b/src/org/redkale/net/http/HttpRequest.java index 81604c64d..d5394abab 100644 --- a/src/org/redkale/net/http/HttpRequest.java +++ b/src/org/redkale/net/http/HttpRequest.java @@ -14,7 +14,7 @@ import java.nio.channels.Channels; import java.nio.charset.*; import java.util.*; import java.util.logging.Level; -import org.redkale.convert.ConvertDisabled; +import org.redkale.convert.*; import org.redkale.convert.json.JsonConvert; import org.redkale.net.*; import org.redkale.util.*; @@ -559,16 +559,15 @@ public class HttpRequest extends Request { * 获取请求内容的JavaBean对象 * * @param 泛型 - * @param convert JsonConvert + * @param convert Convert * @param type 类型 * * @return 内容 */ - public T getBodyJson(JsonConvert convert, java.lang.reflect.Type type) { - String str = array.toString(StandardCharsets.UTF_8); - if (str == null || str.isEmpty()) return null; - return convert.convertFrom(type, str); - } + public T getBodyJson(Convert convert, java.lang.reflect.Type type) { + if (array.size() < 1) return null; + return (T) convert.convertFrom(type, array.directBytes()); + } /** * 获取请求内容的byte[]