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 junit.framework.TestCase; 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.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.Param; import org.nutz.mvc.impl.AdaptorErrorContext; import org.nutz.mvc.testapp.BaseWebappTest; @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(); 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")); } }