diff --git a/src/META-INF/application-template.xml b/src/META-INF/application-template.xml
index 4712f96cd..69353f8b1 100644
--- a/src/META-INF/application-template.xml
+++ b/src/META-INF/application-template.xml
@@ -133,6 +133,7 @@
diff --git a/src/org/redkale/boot/NodeHttpServer.java b/src/org/redkale/boot/NodeHttpServer.java
index 4a936fd96..24c589902 100644
--- a/src/org/redkale/boot/NodeHttpServer.java
+++ b/src/org/redkale/boot/NodeHttpServer.java
@@ -29,9 +29,9 @@ import org.redkale.util.*;
@NodeProtocol({"HTTP"})
public class NodeHttpServer extends NodeServer {
- protected boolean rest;
+ protected final boolean rest;
- protected boolean sncp;
+ protected final boolean sncp;
protected final HttpServer httpServer;
@@ -154,7 +154,7 @@ public class NodeHttpServer extends NodeServer {
final String threadName = "[" + Thread.currentThread().getName() + "] ";
final List> ss = sb == null ? null : new ArrayList<>();
- final Class extends RestHttpServlet> baseServletClass = (Class extends RestHttpServlet>) Class.forName(restConf.getValue("servlet", DefaultRestServlet.class.getName()));
+ final Class baseServletClass = Class.forName(restConf.getValue("servlet", DefaultRestServlet.class.getName()));
final boolean autoload = restConf.getBoolValue("autoload", true);
final boolean mustsign = restConf.getBoolValue("mustsign", true); //是否只加载标记@RestService的Service类
@@ -183,7 +183,7 @@ public class NodeHttpServer extends NodeServer {
if (!autoload && !includeValues.contains(stypename)) return;
if (!restFilter.accept(stypename)) return;
- RestHttpServlet servlet = RestServletBuilder.createRestServlet(baseServletClass, wrapper.getName(), stype, sncp);
+ RestHttpServlet servlet = Rest.createRestServlet(baseServletClass, wrapper.getName(), stype);
if (servlet == null) return;
if (finest) logger.finest("Create RestServlet = " + servlet);
try {
diff --git a/src/org/redkale/net/http/RestServletBuilder.java b/src/org/redkale/net/http/Rest.java
similarity index 97%
rename from src/org/redkale/net/http/RestServletBuilder.java
rename to src/org/redkale/net/http/Rest.java
index 4935bfe74..02a0a0dd6 100644
--- a/src/org/redkale/net/http/RestServletBuilder.java
+++ b/src/org/redkale/net/http/Rest.java
@@ -25,7 +25,7 @@ import org.redkale.source.Flipper;
*
* @author zhangjx
*/
-public final class RestServletBuilder {
+public final class Rest {
private static final Set EXCLUDERMETHODS = new HashSet<>();
@@ -35,7 +35,7 @@ public final class RestServletBuilder {
}
}
- private RestServletBuilder() {
+ private Rest() {
}
public static String getWebModuleName(Class extends Service> serviceType) {
@@ -45,8 +45,7 @@ public final class RestServletBuilder {
return (!controller.value().isEmpty()) ? controller.value() : serviceType.getSimpleName().replaceAll("Service.*$", "").toLowerCase();
}
- //待实现
- public static T createRestServlet(final Class baseServletClass, final String serviceName, final Class extends Service> serviceType, final boolean sncp) {
+ public static T createRestServlet(final Class baseServletClass, final String serviceName, final Class extends Service> serviceType) {
if (baseServletClass == null || serviceType == null) return null;
if (!RestHttpServlet.class.isAssignableFrom(baseServletClass)) return null;
int mod = baseServletClass.getModifiers();
diff --git a/src/org/redkale/net/http/RestHttpServlet.java b/src/org/redkale/net/http/RestHttpServlet.java
index e92e86c5e..2c9489940 100644
--- a/src/org/redkale/net/http/RestHttpServlet.java
+++ b/src/org/redkale/net/http/RestHttpServlet.java
@@ -6,6 +6,7 @@
package org.redkale.net.http;
import java.io.IOException;
+import org.redkale.util.Attribute;
/**
*
@@ -16,6 +17,17 @@ import java.io.IOException;
*/
public abstract class RestHttpServlet extends HttpBaseServlet {
+ Attribute[] _paramAttrs; // 为null表示无DynCall处理,index=0固定为null, 其他为参数标记的DynCall回调方法
+
protected abstract T currentUser(HttpRequest req) throws IOException;
+ protected void _callParameter(final HttpResponse response, final Object... params) {
+ if (_paramAttrs == null) return;
+ for (int i = 1; i < _paramAttrs.length; i++) {
+ org.redkale.util.Attribute attr = _paramAttrs[i];
+ if (attr == null) continue;
+
+ //convert.convertTo(out, attr.type(), attr.get(params[i - 1]));
+ }
+ }
}
diff --git a/src/org/redkale/net/sncp/SncpDynServlet.java b/src/org/redkale/net/sncp/SncpDynServlet.java
index fb79cf9a7..6841ef1bc 100644
--- a/src/org/redkale/net/sncp/SncpDynServlet.java
+++ b/src/org/redkale/net/sncp/SncpDynServlet.java
@@ -146,7 +146,7 @@ public final class SncpDynServlet extends SncpServlet {
public abstract void action(final BsonReader in, final BsonWriter out) throws Throwable;
- public final void callParameter(final BsonWriter out, final Object... params) {
+ public final void _callParameter(final BsonWriter out, final Object... params) {
if (paramAttrs != null) {
for (int i = 1; i < paramAttrs.length; i++) {
org.redkale.util.Attribute attr = paramAttrs[i];
@@ -176,7 +176,7 @@ public final class SncpDynServlet extends SncpServlet {
* String arg2 = convert.convertFrom(paramTypes[2], in);
* int arg3 = convert.convertFrom(paramTypes[3], in);
* Object rs = service.change(arg1, arg2, arg3);
- * callParameter(out, arg1, arg2, arg3);
+ * _callParameter(out, arg1, arg2, arg3);
* convert.convertTo(out, paramTypes[0], rs);
* }
* }
@@ -317,7 +317,7 @@ public final class SncpDynServlet extends SncpServlet {
}
mv.visitVarInsn(ASTORE, store); //11
}
- //------------------------- callParameter 方法 --------------------------------
+ //------------------------- _callParameter 方法 --------------------------------
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 2);
if (paramClasses.length <= 5) { //参数总数量
@@ -353,7 +353,7 @@ public final class SncpDynServlet extends SncpServlet {
}
mv.visitInsn(AASTORE);
}
- mv.visitMethodInsn(INVOKEVIRTUAL, newDynName, "callParameter", "(" + convertWriterDesc + "[Ljava/lang/Object;)V", false);
+ mv.visitMethodInsn(INVOKEVIRTUAL, newDynName, "_callParameter", "(" + convertWriterDesc + "[Ljava/lang/Object;)V", false);
//-------------------------直接返回 或者 调用convertTo方法 --------------------------------
int maxStack = codes.length > 0 ? codes[codes.length - 1][1] : 1;