From 2979fcc33ded3f60f0619f337135836a9db0f900 Mon Sep 17 00:00:00 2001
From: Redkale <22250530@qq.com>
Date: Mon, 27 Feb 2017 11:19:40 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0javadoc=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/org/redkale/net/http/HttpContext.java | 7 +-
.../redkale/net/http/HttpPrepareServlet.java | 35 ++++++----
.../redkale/net/http/HttpResourceServlet.java | 3 +-
src/org/redkale/net/http/HttpServer.java | 67 ++++++++++++++++++-
src/org/redkale/net/http/MimeType.java | 2 +
src/org/redkale/net/http/MultiContext.java | 12 ++++
src/org/redkale/net/http/RestCookie.java | 21 +++++-
src/org/redkale/net/http/RestHeader.java | 21 +++++-
src/org/redkale/net/http/RestMapping.java | 51 +++++++++++---
src/org/redkale/net/http/RestParam.java | 31 +++++++--
src/org/redkale/net/http/WebInitParam.java | 19 +++++-
src/org/redkale/net/http/WebServlet.java | 32 ++++++++-
src/org/redkale/util/Utility.java | 18 +++++
13 files changed, 282 insertions(+), 37 deletions(-)
diff --git a/src/org/redkale/net/http/HttpContext.java b/src/org/redkale/net/http/HttpContext.java
index 8deda414b..3cd94165b 100644
--- a/src/org/redkale/net/http/HttpContext.java
+++ b/src/org/redkale/net/http/HttpContext.java
@@ -16,6 +16,7 @@ import org.redkale.util.*;
import org.redkale.watch.*;
/**
+ * HTTP服务的上下文对象
*
*
* 详情见: https://redkale.org
@@ -27,10 +28,10 @@ public class HttpContext extends Context {
protected final SecureRandom random = new SecureRandom();
public HttpContext(long serverStartTime, Logger logger, ExecutorService executor, int bufferCapacity, ObjectPool bufferPool,
- ObjectPool responsePool, int maxbody, Charset charset, InetSocketAddress address, PrepareServlet prepare,
- WatchFactory watch, int readTimeoutSecond, int writeTimeoutSecond) {
+ ObjectPool responsePool, int maxbody, Charset charset, InetSocketAddress address, PrepareServlet prepare,
+ WatchFactory watch, int readTimeoutSecond, int writeTimeoutSecond) {
super(serverStartTime, logger, executor, bufferCapacity, bufferPool, responsePool, maxbody, charset,
- address, prepare, watch, readTimeoutSecond, writeTimeoutSecond);
+ address, prepare, watch, readTimeoutSecond, writeTimeoutSecond);
random.setSeed(Math.abs(System.nanoTime()));
}
diff --git a/src/org/redkale/net/http/HttpPrepareServlet.java b/src/org/redkale/net/http/HttpPrepareServlet.java
index 29e0e36b5..81deb7223 100644
--- a/src/org/redkale/net/http/HttpPrepareServlet.java
+++ b/src/org/redkale/net/http/HttpPrepareServlet.java
@@ -17,6 +17,8 @@ import org.redkale.util.*;
import org.redkale.watch.*;
/**
+ * HTTP Servlet的总入口,请求在HttpPrepareServlet中进行分流。
+ * 一个HttpServer只有一个HttpPrepareServlet, 用于管理所有HttpServlet。
*
*
* 详情见: https://redkale.org
@@ -89,6 +91,7 @@ public class HttpPrepareServlet extends PrepareServlet
* 详情见: https://redkale.org
@@ -268,7 +269,7 @@ public class HttpResourceServlet extends HttpServlet {
public void update() {
if (this.file == null) return;
- if (this.content != null) {
+ if (this.content != null) {
this.servlet.cachedLength.add(0L - this.content.remaining());
this.content = null;
}
diff --git a/src/org/redkale/net/http/HttpServer.java b/src/org/redkale/net/http/HttpServer.java
index 5144c3125..d2e2d4e8e 100644
--- a/src/org/redkale/net/http/HttpServer.java
+++ b/src/org/redkale/net/http/HttpServer.java
@@ -16,6 +16,7 @@ import org.redkale.util.*;
import org.redkale.watch.WatchFactory;
/**
+ * Http服务器
*
*
* 详情见: https://redkale.org
@@ -37,24 +38,88 @@ public final class HttpServer extends Server Service
+ * @param RestHttpServlet
+ * @param name Service的资源名
+ * @param serviceType Service的类型
+ * @param service Service对象
+ * @param baseServletClass RestHttpServlet基类
+ * @param prefix url前缀
+ *
+ * @return RestHttpServlet
+ */
public RestHttpServlet addRestServlet(String name, Class serviceType, S service, Class baseServletClass, String prefix) {
return addRestServlet(name, serviceType, service, baseServletClass, prefix, null);
}
+ /**
+ * 添加RestHttpServlet
+ *
+ * @param Service
+ * @param RestHttpServlet
+ * @param name Service的资源名
+ * @param serviceType Service的类型
+ * @param service Service对象
+ * @param baseServletClass RestHttpServlet基类
+ * @param prefix url前缀
+ * @param conf 配置信息
+ *
+ * @return RestHttpServlet
+ */
public RestHttpServlet addRestServlet(
final String name, Class serviceType, final S service, final Class baseServletClass, final String prefix, AnyValue conf) {
RestHttpServlet servlet = null;
diff --git a/src/org/redkale/net/http/MimeType.java b/src/org/redkale/net/http/MimeType.java
index ad4301055..c3a76ae62 100644
--- a/src/org/redkale/net/http/MimeType.java
+++ b/src/org/redkale/net/http/MimeType.java
@@ -8,6 +8,7 @@ package org.redkale.net.http;
import java.util.*;
/**
+ * MimeType
*
*
* 详情见: https://redkale.org
@@ -100,6 +101,7 @@ public class MimeType {
contentTypes.put("oda", "application/oda");
contentTypes.put("ogg", "application/ogg");
contentTypes.put("out", "text/plain");
+ contentTypes.put("pac", "application/x-javascript-config");
contentTypes.put("pbm", "image/x-portable-bitmap");
contentTypes.put("pct", "image/pict");
contentTypes.put("pdf", "application/pdf");
diff --git a/src/org/redkale/net/http/MultiContext.java b/src/org/redkale/net/http/MultiContext.java
index f28fb7286..77195e4d8 100644
--- a/src/org/redkale/net/http/MultiContext.java
+++ b/src/org/redkale/net/http/MultiContext.java
@@ -15,6 +15,7 @@ import java.util.regex.*;
import org.redkale.util.AnyValue.DefaultAnyValue;
/**
+ * HTTP的文件上传请求的上下文对象
*
*
* 详情见: https://redkale.org
@@ -77,10 +78,21 @@ public final class MultiContext {
return null;
}
+ /**
+ * 判断请求是否包含上传文件
+ *
+ * @return
+ */
public boolean isMultipart() {
return this.boundary != null;
}
+ /**
+ * 获取上传文件信息列表
+ *
+ * @return
+ * @throws IOException
+ */
public Iterable parts() throws IOException {
if (!isMultipart()) return emptyIterable;
final String boundarystr = "--" + this.boundary;
diff --git a/src/org/redkale/net/http/RestCookie.java b/src/org/redkale/net/http/RestCookie.java
index f7c1ce899..a1d260727 100644
--- a/src/org/redkale/net/http/RestCookie.java
+++ b/src/org/redkale/net/http/RestCookie.java
@@ -22,9 +22,24 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
public @interface RestCookie {
- String name(); //cookie名
+ /**
+ * cookie名
+ *
+ * @return String
+ */
+ String name();
- int radix() default 10; //转换数字byte/short/int/long时所用的进制数, 默认10进制
+ /**
+ * 转换数字byte/short/int/long时所用的进制数, 默认10进制
+ *
+ * @return int
+ */
+ int radix() default 10;
- String comment() default ""; //备注描述
+ /**
+ * 备注描述
+ *
+ * @return String
+ */
+ String comment() default "";
}
diff --git a/src/org/redkale/net/http/RestHeader.java b/src/org/redkale/net/http/RestHeader.java
index 28020a6f1..9c4f93c79 100644
--- a/src/org/redkale/net/http/RestHeader.java
+++ b/src/org/redkale/net/http/RestHeader.java
@@ -22,9 +22,24 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
public @interface RestHeader {
- String name(); //参数名
+ /**
+ * Header参数名
+ *
+ * @return
+ */
+ String name();
- int radix() default 10; //转换数字byte/short/int/long时所用的进制数, 默认10进制
+ /**
+ * 转换数字byte/short/int/long时所用的进制数, 默认10进制
+ *
+ * @return int
+ */
+ int radix() default 10;
- String comment() default ""; //备注描述
+ /**
+ * 备注描述
+ *
+ * @return String
+ */
+ String comment() default "";
}
diff --git a/src/org/redkale/net/http/RestMapping.java b/src/org/redkale/net/http/RestMapping.java
index d8a13feea..54592ed0b 100644
--- a/src/org/redkale/net/http/RestMapping.java
+++ b/src/org/redkale/net/http/RestMapping.java
@@ -24,25 +24,60 @@ import static java.lang.annotation.RetentionPolicy.*;
@Repeatable(RestMappings.class)
public @interface RestMapping {
- boolean ignore() default false; //是否屏蔽该方法的转换
+ /**
+ * 是否屏蔽该方法的转换
+ *
+ * @return boolean
+ */
+ boolean ignore() default false;
/**
* 请求的方法名, 不能含特殊字符
* 默认为方法名的小写(若方法名以createXXX、updateXXX、deleteXXX、queryXXX、findXXX、existsXXX且XXXService为Service的类名将只截取XXX之前)
*
- * @return name
+ * @return String
*/
String name() default "";
- String comment() default ""; //备注描述, 对应@WebAction.comment
+ /**
+ * 备注描述, 对应@WebAction.comment
+ *
+ * @return String
+ */
+ String comment() default "";
- boolean auth() default false; //是否鉴权,默认不鉴权, 对应@AuthIgnore
+ /**
+ * 是否鉴权,默认不鉴权, 对应@AuthIgnore
+ *
+ * @return boolean
+ */
+ boolean auth() default false;
- int actionid() default 0; //操作ID值,鉴权时用到, 对应@WebAction.actionid
+ /**
+ * 操作ID值,鉴权时用到, 对应@WebAction.actionid
+ *
+ * @return int
+ */
+ int actionid() default 0;
- int cacheseconds() default 0; // 结果缓存的秒数, 为0表示不缓存, 对应@HttpCacheable.seconds
+ /**
+ * 结果缓存的秒数, 为0表示不缓存, 对应@HttpCacheable.seconds
+ *
+ * @return int
+ */
+ int cacheseconds() default 0;
- String[] methods() default {};//允许方法(不区分大小写),如:GET/POST/PUT,为空表示允许所有方法, 对应@WebAction.methods
+ /**
+ * 允许方法(不区分大小写),如:GET/POST/PUT,为空表示允许所有方法, 对应@WebAction.methods
+ *
+ * @return String[]
+ */
+ String[] methods() default {};
- String jsvar() default ""; //以application/javascript输出对象是指明js的对象名,该值存在时则忽略contentType()的值
+ /**
+ * 以application/javascript输出对象是指明js的对象名,该值存在时则忽略contentType()的值
+ *
+ * @return String
+ */
+ String jsvar() default "";
}
diff --git a/src/org/redkale/net/http/RestParam.java b/src/org/redkale/net/http/RestParam.java
index 537bbd66a..f8a9c7ab4 100644
--- a/src/org/redkale/net/http/RestParam.java
+++ b/src/org/redkale/net/http/RestParam.java
@@ -26,11 +26,34 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
public @interface RestParam {
- String name(); //参数名 name='&'表示当前用户; name='#'表示截取uri最后一段; name='#xxx:'表示从uri中/pipes/xxx:v/截取xxx:的值
+ /**
+ * 参数名 n
+ * ame='&'表示当前用户;
+ * name='#'表示截取uri最后一段;
+ * name='#xxx:'表示从uri中/pipes/xxx:v/截取xxx:的值
+ *
+ * @return String
+ */
+ String name();
- int radix() default 10; //转换数字byte/short/int/long时所用的进制数, 默认10进制
+ /**
+ * 转换数字byte/short/int/long时所用的进制数, 默认10进制
+ *
+ * @return int
+ */
+ int radix() default 10;
- boolean required() default true; //参数是否必传
+ /**
+ * 参数是否必传
+ *
+ * @return boolean
+ */
+ boolean required() default true;
- String comment() default ""; //备注描述
+ /**
+ * 备注描述
+ *
+ * @return String
+ */
+ String comment() default "";
}
diff --git a/src/org/redkale/net/http/WebInitParam.java b/src/org/redkale/net/http/WebInitParam.java
index 0803bcf7d..7151b99c2 100644
--- a/src/org/redkale/net/http/WebInitParam.java
+++ b/src/org/redkale/net/http/WebInitParam.java
@@ -10,7 +10,9 @@ import java.lang.annotation.*;
/**
* 功能同JSR 315 (java-servlet 3.0) 规范中的 @WebInitParam
*
- * 详情见: https://redkale.org
+ *
+ * 详情见: https://redkale.org
+ *
* @author zhangjx
*/
@Target({ElementType.TYPE})
@@ -18,9 +20,24 @@ import java.lang.annotation.*;
@Documented
public @interface WebInitParam {
+ /**
+ * 参数名
+ *
+ * @return String
+ */
String name();
+ /**
+ * 参数值
+ *
+ * @return String
+ */
String value();
+ /**
+ * 参数描述
+ *
+ * @return
+ */
String description() default "";
}
diff --git a/src/org/redkale/net/http/WebServlet.java b/src/org/redkale/net/http/WebServlet.java
index 757dd5790..967a09cef 100644
--- a/src/org/redkale/net/http/WebServlet.java
+++ b/src/org/redkale/net/http/WebServlet.java
@@ -21,15 +21,45 @@ import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
public @interface WebServlet {
+ /**
+ * HttpServlet资源名
+ *
+ * @return String
+ */
String name() default "";
+ /**
+ * 是否自动添加url前缀
+ *
+ * @return boolean
+ */
boolean repair() default true;
+ /**
+ * url匹配规则
+ *
+ * @return String[]
+ */
String[] value() default {};
+ /**
+ * 模块ID,一个HttpServlet尽量只有提供一个模块的服务
+ *
+ * @return int
+ */
int moduleid() default 0;
+ /**
+ * 参数
+ *
+ * @return WebInitParam[]
+ */
WebInitParam[] initParams() default {};
- String comment() default ""; //备注描述
+ /**
+ * 备注描述
+ *
+ * @return String
+ */
+ String comment() default "";
}
diff --git a/src/org/redkale/util/Utility.java b/src/org/redkale/util/Utility.java
index bc6d57130..b4a6cbdf0 100644
--- a/src/org/redkale/util/Utility.java
+++ b/src/org/redkale/util/Utility.java
@@ -175,6 +175,24 @@ public final class Utility {
return news;
}
+ /**
+ * 判断字符串是否包含指定的字符,包含返回true
+ *
+ * @param string 字符串
+ * @param values 字符集合
+ *
+ * @return boolean
+ */
+ public static boolean contains(String string, char... values) {
+ if (string == null) return false;
+ for (char ch : Utility.charArray(string)) {
+ for (char ch2 : values) {
+ if (ch == ch2) return true;
+ }
+ }
+ return false;
+ }
+
/**
* 删除掉字符串数组中包含指定的字符串
*