From bee4f31323effd9e9e31bf8a7252acaf24d256d9 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Sat, 13 May 2017 16:40:26 +0800 Subject: [PATCH] --- src/org/redkale/boot/NodeHttpServer.java | 2 +- src/org/redkale/net/http/HttpResult.java | 24 +++++++++++++++++++++-- src/org/redkale/net/http/HttpServer.java | 25 +++++++++++++++++++++--- src/org/redkale/net/http/Rest.java | 5 +++-- 4 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/org/redkale/boot/NodeHttpServer.java b/src/org/redkale/boot/NodeHttpServer.java index 252244c4c..c5c7aa034 100644 --- a/src/org/redkale/boot/NodeHttpServer.java +++ b/src/org/redkale/boot/NodeHttpServer.java @@ -174,7 +174,7 @@ public class NodeHttpServer extends NodeServer { if (!autoload && !includeValues.contains(stypename)) return; if (!restFilter.accept(stypename)) return; - HttpServlet servlet = httpServer.addRestServlet(name, stype, service, baseServletClass, prefix, (AnyValue) null); + HttpServlet servlet = httpServer.addRestServlet(name, stype, service, baseServletClass, mustsign, prefix, (AnyValue) null); resourceFactory.inject(servlet, NodeHttpServer.this); if (finest) logger.finest(threadName + " Create RestServlet(resource.name='" + name + "') = " + servlet); if (ss != null) { diff --git a/src/org/redkale/net/http/HttpResult.java b/src/org/redkale/net/http/HttpResult.java index 55f51eda3..6f69f621e 100644 --- a/src/org/redkale/net/http/HttpResult.java +++ b/src/org/redkale/net/http/HttpResult.java @@ -41,18 +41,38 @@ public class HttpResult { this.result = result; } - public HttpResult addHeader(String name, Serializable value) { + public HttpResult header(String name, Serializable value) { if (this.headers == null) this.headers = new HashMap<>(); this.headers.put(name, String.valueOf(value)); return this; } - public HttpResult addCookie(HttpCookie cookie) { + public HttpResult cookie(HttpCookie cookie) { if (this.cookies == null) this.cookies = new ArrayList<>(); this.cookies.add(cookie); return this; } + public HttpResult contentType(String contentType) { + this.contentType = contentType; + return this; + } + + public HttpResult result(T result) { + this.result = result; + return this; + } + + public HttpResult status(int status) { + this.status = status; + return this; + } + + public HttpResult message(String message) { + this.message = message; + return this; + } + public Map getHeaders() { return headers; } diff --git a/src/org/redkale/net/http/HttpServer.java b/src/org/redkale/net/http/HttpServer.java index 6410eedff..9682f4132 100644 --- a/src/org/redkale/net/http/HttpServer.java +++ b/src/org/redkale/net/http/HttpServer.java @@ -103,7 +103,7 @@ public final class HttpServer extends Server T addRestServlet(String name, Class serviceType, S service, Class baseServletClass, String prefix) { - return addRestServlet(name, serviceType, service, baseServletClass, prefix, null); + return addRestServlet(name, serviceType, service, baseServletClass, true, prefix, null); } /** @@ -115,13 +115,32 @@ public final class HttpServer extends Server T addRestServlet(String name, Class serviceType, S service, Class baseServletClass, final boolean mustsign, String prefix) { + return addRestServlet(name, serviceType, service, baseServletClass, mustsign, prefix, null); + } + + /** + * 添加RestServlet + * + * @param Service + * @param RestServlet + * @param name Service的资源名 + * @param serviceType Service的类型 + * @param service Service对象 + * @param baseServletClass RestServlet基类 + * @param mustsign 是否必须有Rest注解标记才生成Rest方法 * @param prefix url前缀 * @param conf 配置信息 * * @return RestServlet */ public T addRestServlet( - final String name, Class serviceType, final S service, final Class baseServletClass, final String prefix, AnyValue conf) { + final String name, Class serviceType, final S service, final Class baseServletClass, final boolean mustsign, final String prefix, AnyValue conf) { T servlet = null; for (final HttpServlet item : ((HttpPrepareServlet) this.prepare).getServlets()) { if (!(item instanceof HttpServlet)) continue; @@ -138,7 +157,7 @@ public final class HttpServer extends Server T createRestServlet(final Class baseServletClass, final Class serviceType) { + static T createRestServlet(final Class baseServletClass, final Class serviceType, final boolean mustsign) { if (baseServletClass == null || serviceType == null) return null; if (!HttpServlet.class.isAssignableFrom(baseServletClass)) return null; int mod = baseServletClass.getModifiers(); @@ -223,6 +223,7 @@ public final class Rest { if ("version".equals(method.getName())) continue; RestMapping[] mappings = method.getAnnotationsByType(RestMapping.class); + if (mustsign && mappings.length < 1) continue; boolean ignore = false; for (RestMapping mapping : mappings) { if (mapping.ignore()) { @@ -770,7 +771,7 @@ public final class Rest { RestSessionid rs = field.getAnnotation(RestSessionid.class); RestAddress ra = field.getAnnotation(RestAddress.class); RestBody rb = field.getAnnotation(RestBody.class); - if (rh == null && rc == null && ra == null && rb == null) continue; + if (rh == null && rc == null && ra == null && rb == null && rs == null) continue; if (rh != null && field.getType() != String.class) throw new RuntimeException("@RestHeader must on String Field in " + field); if (rc != null && field.getType() != String.class) throw new RuntimeException("@RestCookie must on String Field in " + field); if (rs != null && field.getType() != String.class) throw new RuntimeException("@RestSessionid must on String Field in " + field);