package org.nutz.mvc.testapp.classes.action.adaptor;
import java.io.InputStream;
import java.io.Reader;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.nutz.ioc.annotation.InjectName;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.Streams;
import org.nutz.mvc.adaptor.JsonAdaptor;
import org.nutz.mvc.adaptor.PairAdaptor;
import org.nutz.mvc.adaptor.meta.Pet;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Fail;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.POST;
import org.nutz.mvc.annotation.Param;
import org.nutz.mvc.impl.AdaptorErrorContext;
import org.nutz.mvc.testapp.BaseWebappTest;
import org.nutz.mvc.testapp.classes.bean.Issue1069;
import org.nutz.mvc.testapp.classes.bean.Issue1109;
import junit.framework.TestCase;
@InjectName
@IocBean
@At("/adaptor")
@Ok("raw")
@Fail("http:500")
public class AdaptorTestModule extends BaseWebappTest {
@At("/github/issue/543")
public long issue_543(@Param(value = "d", dfmt = "yyyyMMdd") Date d,
@Param("..") Issue543 o) {
if (d.getTime() != o.d.getTime())
throw Lang.impossible();
// new Throwable().printStackTrace();
System.out.println("Hi, hotcode replace");
return d.getTime();
}
/*
* Githut : #352
*/
@At("/reader")
public String getInputStream(Reader reader) {
return Streams.readAndClose(reader);
}
/*
* Githut : #352
*/
@At("/ins")
public String getInputStream(InputStream ins) {
return new String(Streams.readBytesAndClose(ins));
}
@At("/json/pet/array")
@AdaptBy(type = JsonAdaptor.class)
public String getJsonPetArray(@Param("pets") Pet[] pets) {
return String.format("pets(%d) %s", pets.length, "array");
}
@At("/json/pet/list")
@AdaptBy(type = JsonAdaptor.class)
public String getJsonPetList(@Param("pets") List<Pet> lst) {
StringBuilder sb = new StringBuilder();
for (Pet pet : lst)
sb.append(',').append(pet.getName());
return String.format("pets(%d) %s", lst.size(), "list");
}
// 传入的id,会是一个非法的字符串!!
@At({"/err/param", "/err/param/?"})
public void errParam(@Param("id") long id, AdaptorErrorContext errCtx) {
TestCase.assertNotNull(errCtx);
TestCase.assertNotNull(errCtx.getErrors()[0]);
}
@At("/json/type")
@AdaptBy(type = JsonAdaptor.class)
public void jsonMapType(Map<String, Double> map) {
TestCase.assertNotNull(map);
TestCase.assertEquals(1, map.size());
TestCase.assertEquals(123456.0, map.get("abc").doubleValue());
System.out.println(map.get("abc"));
}
@At("/default_value")
@Ok("raw")
public int default_value(@Param(value="abc", df="123456")int value) {
return value;
}
@POST
@AdaptBy(type = JsonAdaptor.class)
@At("/err_ctx")
@Ok("raw")
public boolean err_ctx(@Param("..")Object obj, AdaptorErrorContext ctx) {
return ctx == null;
}
//@GET
@At("/sqldate")
public String test_sql_date(@Param("checkDate")java.sql.Date checkDate){
return checkDate.toString();
}
@At("/param_without_param")
@Ok("json:compact")
public Object test_param_without_param(String uid, String[] uids, HttpServletRequest req) {
return uids;
}
@At("/issue1069")
@Ok("raw")
public Object test_issue1069(@Param("..")Issue1069 issue1069) {
return issue1069.getShowAdd();
}
@At("/issue1109")
@Ok("json")
@AdaptBy(type=PairAdaptor.class)
public Object issue1109(@Param("::issue")List<Issue1109> pojos) {
return pojos;
}
}