Skip to content

Commit b1f71ee

Browse files
committed
fix param parse for avobject in lean engine
1 parent 7c77edf commit b1f71ee

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

leanengine/src/main/java/cn/leancloud/EngineFunctionParamInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public Class getType() {
2828

2929
public Object parseParams(String content) {
3030
if (AVObject.class.isAssignableFrom(type)) {
31-
return Utils.getParsedObject(JSON.parseObject(content));
31+
return Utils.getObjectFrom(JSON.parseObject(content));
3232
} else {
3333
if (Map.class.isAssignableFrom(type)) {
3434
return parseParams((Map) JSON.parseObject(content, type));
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package cn.leancloud;
2+
3+
public class DummyEngineFunction {
4+
@EngineFunction("averageStars")
5+
public static float getAverageStars(@EngineFunctionParam("movie") String movie)
6+
throws AVException {
7+
System.out.println("want to get average stars for movie: " + movie);
8+
return 3.0f;
9+
}
10+
11+
@EngineFunction("dumpObject")
12+
public static int dumpObject(@EngineFunctionParam("object") AVObject data)
13+
throws AVException {
14+
if (null == data) {
15+
return -1;
16+
}
17+
System.out.println(data.toJSONString());
18+
return 0;
19+
}
20+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package cn.leancloud;
2+
3+
import cn.leancloud.core.AVOSCloud;
4+
import cn.leancloud.core.AppConfiguration;
5+
import cn.leancloud.logging.Log4jAdapter;
6+
import junit.framework.TestCase;
7+
8+
public class LeanEngineTest extends TestCase {
9+
public LeanEngineTest(String name) {
10+
super(name);
11+
AppConfiguration.setLogAdapter(new Log4jAdapter());
12+
AVOSCloud.setRegion(AVOSCloud.REGION.NorthChina);
13+
AVOSCloud.setLogLevel(AVLogger.Level.VERBOSE);
14+
AVOSCloud.initialize(Configure.TEST_APP_ID, Configure.TEST_APP_KEY);
15+
}
16+
17+
public void testRegisterAndParseEngineFunction() throws Exception {
18+
LeanEngine.register(DummyEngineFunction.class);
19+
String commonJsonParams = "{\"movie\":\"12 Monkeys\"}";
20+
String objectParams = "{\"object\":{\"__type\": \"Object\",\n" +
21+
" \"className\": \"Post\",\n" +
22+
" \"objectId\": \"55a39634e4b0ed48f0c1845c\",\n" +
23+
" \"movie\": \"夏洛特烦恼\",\n" +
24+
" \"stars\": 5,\n" +
25+
" \"comment\": \"夏洛一梦,笑成麻花\"\n" +
26+
"}}";
27+
28+
EngineHandlerInfo commonJsonParamsHandler = LeanEngine.getHandler("averageStars");
29+
assertTrue(null != commonJsonParamsHandler);
30+
Object paramObject = commonJsonParamsHandler.parseParams(commonJsonParams);
31+
assertTrue(paramObject != null);
32+
33+
EngineHandlerInfo objectParamsHandler = LeanEngine.getHandler("dumpObject");
34+
assertTrue(null != objectParamsHandler);
35+
paramObject = objectParamsHandler.parseParams(objectParams);
36+
assertTrue(((Object[])paramObject)[0] instanceof AVObject);
37+
}
38+
}

0 commit comments

Comments
 (0)