删掉HttpResponse.finishJsResult方法
This commit is contained in:
@@ -290,31 +290,6 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
finish(convert.convertTo(context.getBufferSupplier(), ret));
|
finish(convert.convertTo(context.getBufferSupplier(), ret));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 将对象以JavaScript格式输出
|
|
||||||
*
|
|
||||||
* @param var js变量名
|
|
||||||
* @param result 输出对象
|
|
||||||
*/
|
|
||||||
public void finishJsResult(String var, Object result) {
|
|
||||||
this.contentType = "application/javascript; charset=utf-8";
|
|
||||||
if (this.recycleListener != null) this.output = result;
|
|
||||||
finish("var " + var + " = " + request.getJsonConvert().convertTo(result) + ";");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将对象以JavaScript格式输出
|
|
||||||
*
|
|
||||||
* @param jsonConvert 指定的JsonConvert
|
|
||||||
* @param var js变量名
|
|
||||||
* @param result 输出对象
|
|
||||||
*/
|
|
||||||
public void finishJsResult(JsonConvert jsonConvert, String var, Object result) {
|
|
||||||
this.contentType = "application/javascript; charset=utf-8";
|
|
||||||
if (this.recycleListener != null) this.output = result;
|
|
||||||
finish("var " + var + " = " + jsonConvert.convertTo(result) + ";");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将指定字符串以响应结果输出
|
* 将指定字符串以响应结果输出
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -254,7 +254,6 @@ public final class Rest {
|
|||||||
final int maxStack = 3 + params.length;
|
final int maxStack = 3 + params.length;
|
||||||
List<int[]> varInsns = new ArrayList<>();
|
List<int[]> varInsns = new ArrayList<>();
|
||||||
int maxLocals = 4;
|
int maxLocals = 4;
|
||||||
final String jsvar = entry.jsvar.isEmpty() ? null : entry.jsvar;
|
|
||||||
int argIndex = 0;
|
int argIndex = 0;
|
||||||
|
|
||||||
List<Object[]> paramlist = new ArrayList<>();
|
List<Object[]> paramlist = new ArrayList<>();
|
||||||
@@ -731,214 +730,110 @@ public final class Rest {
|
|||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
} else if (returnType == boolean.class) {
|
} else if (returnType == boolean.class) {
|
||||||
mv.visitVarInsn(ISTORE, maxLocals);
|
mv.visitVarInsn(ISTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ILOAD, maxLocals);
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(Z)Ljava/lang/String;", false);
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(Z)Ljava/lang/String;", false);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;", false);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (returnType == byte.class) {
|
} else if (returnType == byte.class) {
|
||||||
mv.visitVarInsn(ISTORE, maxLocals);
|
mv.visitVarInsn(ISTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ILOAD, maxLocals);
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(I)Ljava/lang/String;", false);
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(I)Ljava/lang/String;", false);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;", false);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (returnType == short.class) {
|
} else if (returnType == short.class) {
|
||||||
mv.visitVarInsn(ISTORE, maxLocals);
|
mv.visitVarInsn(ISTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ILOAD, maxLocals);
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(I)Ljava/lang/String;", false);
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(I)Ljava/lang/String;", false);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;", false);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (returnType == char.class) {
|
} else if (returnType == char.class) {
|
||||||
mv.visitVarInsn(ISTORE, maxLocals);
|
mv.visitVarInsn(ISTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ILOAD, maxLocals);
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(C)Ljava/lang/String;", false);
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(C)Ljava/lang/String;", false);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;", false);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (returnType == int.class) {
|
} else if (returnType == int.class) {
|
||||||
mv.visitVarInsn(ISTORE, maxLocals);
|
mv.visitVarInsn(ISTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ILOAD, maxLocals);
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(I)Ljava/lang/String;", false);
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(I)Ljava/lang/String;", false);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ILOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;", false);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (returnType == float.class) {
|
} else if (returnType == float.class) {
|
||||||
mv.visitVarInsn(FSTORE, maxLocals);
|
mv.visitVarInsn(FSTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(FLOAD, maxLocals);
|
||||||
mv.visitVarInsn(FLOAD, maxLocals);
|
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(F)Ljava/lang/String;", false);
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(F)Ljava/lang/String;", false);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(FLOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;", false);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (returnType == long.class) {
|
} else if (returnType == long.class) {
|
||||||
mv.visitVarInsn(LSTORE, maxLocals);
|
mv.visitVarInsn(LSTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(LLOAD, maxLocals);
|
||||||
mv.visitVarInsn(LLOAD, maxLocals);
|
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(J)Ljava/lang/String;", false);
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(J)Ljava/lang/String;", false);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(LLOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;", false);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals += 2;
|
maxLocals += 2;
|
||||||
} else if (returnType == double.class) {
|
} else if (returnType == double.class) {
|
||||||
mv.visitVarInsn(DSTORE, maxLocals);
|
mv.visitVarInsn(DSTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(DLOAD, maxLocals);
|
||||||
mv.visitVarInsn(DLOAD, maxLocals);
|
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(D)Ljava/lang/String;", false);
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(D)Ljava/lang/String;", false);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(DLOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;", false);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals += 2;
|
maxLocals += 2;
|
||||||
} else if (returnType == String.class) {
|
} else if (returnType == String.class) {
|
||||||
mv.visitVarInsn(ASTORE, maxLocals);
|
mv.visitVarInsn(ASTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ALOAD, maxLocals);
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (returnType == File.class) {
|
} else if (returnType == File.class) {
|
||||||
mv.visitVarInsn(ASTORE, maxLocals);
|
mv.visitVarInsn(ASTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ALOAD, maxLocals);
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/io/File;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/io/File;)V", false);
|
|
||||||
} else {
|
|
||||||
throw new RuntimeException(method + " cannot set return Type (java.io.File) to jsvar");
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (RetResult.class.isAssignableFrom(returnType)) {
|
} else if (RetResult.class.isAssignableFrom(returnType)) {
|
||||||
mv.visitVarInsn(ASTORE, maxLocals);
|
mv.visitVarInsn(ASTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ALOAD, maxLocals);
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + retDesc + ")V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(" + retDesc + ")V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (RestOutput.class.isAssignableFrom(returnType)) {
|
} else if (RestOutput.class.isAssignableFrom(returnType)) {
|
||||||
mv.visitVarInsn(ASTORE, maxLocals);
|
mv.visitVarInsn(ASTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 0);
|
||||||
mv.visitVarInsn(ALOAD, 0);
|
mv.visitVarInsn(ALOAD, 2);
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
mv.visitVarInsn(ALOAD, maxLocals);
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
mv.visitMethodInsn(INVOKEVIRTUAL, newDynName, "finishJson", "(" + respDesc + restoutputDesc + ")V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, newDynName, "finishJson", "(" + respDesc + restoutputDesc + ")V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 0);
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, newDynName, "finishJsResult", "(" + respDesc + "Ljava/lang/String;" + restoutputDesc + ")V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else if (Number.class.isAssignableFrom(returnType) || CharSequence.class.isAssignableFrom(returnType)) { //returnType == String.class 必须放在前面
|
} else if (Number.class.isAssignableFrom(returnType) || CharSequence.class.isAssignableFrom(returnType)) { //returnType == String.class 必须放在前面
|
||||||
mv.visitVarInsn(ASTORE, maxLocals);
|
mv.visitVarInsn(ASTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ALOAD, maxLocals);
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(Ljava/lang/Object;)Ljava/lang/String;", false);
|
||||||
mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(Ljava/lang/Object;)Ljava/lang/String;", false);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finish", "(Ljava/lang/String;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
} else {
|
} else {
|
||||||
mv.visitVarInsn(ASTORE, maxLocals);
|
mv.visitVarInsn(ASTORE, maxLocals);
|
||||||
if (jsvar == null) {
|
mv.visitVarInsn(ALOAD, 2); //response
|
||||||
mv.visitVarInsn(ALOAD, 2); //response
|
mv.visitVarInsn(ALOAD, maxLocals);
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(Ljava/lang/Object;)V", false);
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJson", "(Ljava/lang/Object;)V", false);
|
|
||||||
} else {
|
|
||||||
mv.visitVarInsn(ALOAD, 2);
|
|
||||||
mv.visitLdcInsn(jsvar);
|
|
||||||
mv.visitVarInsn(ALOAD, maxLocals);
|
|
||||||
mv.visitMethodInsn(INVOKEVIRTUAL, respInternalName, "finishJsResult", "(Ljava/lang/String;Ljava/lang/Object;)V", false);
|
|
||||||
}
|
|
||||||
mv.visitInsn(RETURN);
|
mv.visitInsn(RETURN);
|
||||||
maxLocals++;
|
maxLocals++;
|
||||||
}
|
}
|
||||||
@@ -1020,7 +915,6 @@ public final class Rest {
|
|||||||
this.actionid = mapping.actionid();
|
this.actionid = mapping.actionid();
|
||||||
this.cacheseconds = mapping.cacheseconds();
|
this.cacheseconds = mapping.cacheseconds();
|
||||||
this.comment = mapping.comment();
|
this.comment = mapping.comment();
|
||||||
this.jsvar = mapping.jsvar();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Method mappingMethod;
|
public final Method mappingMethod;
|
||||||
@@ -1039,8 +933,6 @@ public final class Rest {
|
|||||||
|
|
||||||
public final int cacheseconds;
|
public final int cacheseconds;
|
||||||
|
|
||||||
public final String jsvar;
|
|
||||||
|
|
||||||
@RestMapping()
|
@RestMapping()
|
||||||
void mapping() { //用于获取Mapping 默认值
|
void mapping() { //用于获取Mapping 默认值
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,22 +23,17 @@ public abstract class RestHttpServlet<T> extends HttpBaseServlet {
|
|||||||
response.finishJson(output);
|
response.finishJson(output);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (output.getContentType() != null) response.setContentType(output.getContentType());
|
||||||
response.addHeader(output.getHeaders());
|
response.addHeader(output.getHeaders());
|
||||||
response.addCookie(output.getCookies());
|
response.addCookie(output.getCookies());
|
||||||
|
|
||||||
if (output.getResult() instanceof File) {
|
if (output.getResult() instanceof File) {
|
||||||
response.finish((File) output.getResult());
|
response.finish((File) output.getResult());
|
||||||
|
} else if (output.getResult() instanceof String) {
|
||||||
|
response.finish((String) output.getResult());
|
||||||
} else {
|
} else {
|
||||||
response.finishJson(output.getResult());
|
response.finishJson(output.getResult());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void finishJsResult(final HttpResponse response, final String var, RestOutput output) throws IOException {
|
|
||||||
if (output != null) {
|
|
||||||
response.addHeader(output.getHeaders());
|
|
||||||
response.addCookie(output.getCookies());
|
|
||||||
}
|
|
||||||
response.finishJsResult(var, output == null ? null : output.getResult());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,10 +74,4 @@ public @interface RestMapping {
|
|||||||
*/
|
*/
|
||||||
String[] methods() default {};
|
String[] methods() default {};
|
||||||
|
|
||||||
/**
|
|
||||||
* 以application/javascript输出对象是指明js的对象名,该值存在时则忽略contentType()的值
|
|
||||||
*
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
String jsvar() default "";
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ public class RestOutput<T> {
|
|||||||
|
|
||||||
private List<HttpCookie> cookies;
|
private List<HttpCookie> cookies;
|
||||||
|
|
||||||
|
private String contentType;
|
||||||
|
|
||||||
private T result;
|
private T result;
|
||||||
|
|
||||||
public RestOutput() {
|
public RestOutput() {
|
||||||
@@ -58,6 +60,14 @@ public class RestOutput<T> {
|
|||||||
this.cookies = cookies;
|
this.cookies = cookies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getContentType() {
|
||||||
|
return contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContentType(String contentType) {
|
||||||
|
this.contentType = contentType;
|
||||||
|
}
|
||||||
|
|
||||||
public T getResult() {
|
public T getResult() {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ public class HelloService implements Service {
|
|||||||
|
|
||||||
//查询单个
|
//查询单个
|
||||||
@RestMapping(name = "find")
|
@RestMapping(name = "find")
|
||||||
@RestMapping(name = "jsfind", jsvar = "varhello")
|
|
||||||
public HelloEntity findHello(@RestParam(name = "#") int id) { //通过 /pipes/hello/find/1234、/pipes/hello/jsfind/1234 查询对象
|
public HelloEntity findHello(@RestParam(name = "#") int id) { //通过 /pipes/hello/find/1234、/pipes/hello/jsfind/1234 查询对象
|
||||||
return source.find(HelloEntity.class, id);
|
return source.find(HelloEntity.class, id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,12 +122,4 @@ public class _DynHelloRestServlet1 extends SimpleRestServlet {
|
|||||||
resp.finishJson(bean);
|
resp.finishJson(bean);
|
||||||
}
|
}
|
||||||
|
|
||||||
@AuthIgnore
|
|
||||||
@WebAction(url = "/hello/jsfind/")
|
|
||||||
public void jsfind(HttpRequest req, HttpResponse resp) throws IOException {
|
|
||||||
HelloService service = _servicemap == null ? _service : _servicemap.get(req.getHeader(Rest.REST_HEADER_RESOURCE_NAME, ""));
|
|
||||||
int id = Integer.parseInt(req.getRequstURILastPath());
|
|
||||||
HelloEntity bean = service.findHello(id);
|
|
||||||
resp.finishJsResult("varhello", bean);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user