// Path: redant-core/src/main/java/com/redant/core/common/enums/RequestMethod.java
// public enum RequestMethod {
//     /**
//      * GET
//      */
//     GET(HttpMethod.GET),
//     /**
//      * HEAD
//      */
//     HEAD(HttpMethod.HEAD),
//     /**
//      * POST
//      */
//     POST(HttpMethod.POST),
//     /**
//      * PUT
//      */
//     PUT(HttpMethod.PUT),
//     /**
//      * PATCH
//      */
//     PATCH(HttpMethod.PATCH),
//     /**
//      * DELETE
//      */
//     DELETE(HttpMethod.DELETE),
//     /**
//      * OPTIONS
//      */
//     OPTIONS(HttpMethod.OPTIONS),
//     /**
//      * TRACE
//      */
//     TRACE(HttpMethod.TRACE);
// 
//     HttpMethod httpMethod;
// 
//     RequestMethod(HttpMethod httpMethod) {
//         this.httpMethod = httpMethod;
//     }
// 
//     public static HttpMethod getHttpMethod(RequestMethod requestMethod){
//         for(RequestMethod method : values()){
//             if(requestMethod==method){
//                 return method.httpMethod;
//             }
//         }
//         return null;
//     }
// 
// }
// 
// Path: redant-core/src/main/java/com/redant/core/render/RenderType.java
// public enum RenderType {
// 
// 	/**
// 	 * JSON
// 	 */
// 	JSON("application/json;charset=UTF-8"),
// 	/**
// 	 * XML
// 	 */
// 	XML("text/xml;charset=UTF-8"),
// 	/**
// 	 * TEXT
// 	 */
// 	TEXT("text/plain;charset=UTF-8"),
// 	/**
// 	 * HTML
// 	 */
// 	HTML("text/html;charset=UTF-8");
// 
// 	private String contentType;
// 
// 	RenderType(String contentType){
// 		this.contentType = contentType;
// 	}
// 
// 	public String getContentType() {
// 		return contentType;
// 	}
// }
// 
// Path: redant-example/src/main/java/com/redant/example/service/UserBean.java
// public class UserBean implements Serializable {
// 
//     private Integer id;
// 
//     private String userName;
// 
//     private String password;
// 
//     public Integer getId() {
//         return id;
//     }
// 
//     public void setId(Integer id) {
//         this.id = id;
//     }
// 
//     public String getUserName() {
//         return userName;
//     }
// 
//     public void setUserName(String userName) {
//         this.userName = userName;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     @Override
//     public String toString() {
//         return JSON.toJSONString(this);
//     }
// }
// 
// Path: redant-example/src/main/java/com/redant/example/service/UserService.java
// public interface UserService {
// 
//     /**
//      * 获取用户信息
//      * @param id 用户id
//      * @return 用户信息
//      */
//     UserBean selectUserInfo(Integer id);
// 
//     /**
//      * 获取用户个数
//      * @return 用户个数
//      */
//     int selectCount();
// }


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.redant.core.bean.annotation.Autowired;
import com.redant.core.bean.annotation.Bean;
import com.redant.core.common.enums.RequestMethod;
import com.redant.core.controller.annotation.Controller;
import com.redant.core.controller.annotation.Mapping;
import com.redant.core.controller.annotation.Param;
import com.redant.core.render.RenderType;
import com.redant.example.service.UserBean;
import com.redant.example.service.UserService;
import java.util.concurrent.TimeUnit;
package com.redant.example.controller;




/**
 * @author houyi.wh
 * @date 2017/12/1
 **/
@Bean
@Controller(path = "/user")
public class UserController {

    /**
     * 如果需要使用Autowired，则该类自身需要使用Bean注解标注
     */
    @Autowired(name = "userService")
    private UserService userService;

    @Mapping(path = "/info", requestMethod = RequestMethod.GET, renderType = RenderType.JSON)
    public UserBean info(@Param(key = "id", notNull = true) Integer id) {
        try {
            TimeUnit.MILLISECONDS.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return userService.selectUserInfo(id);
    }

    @Mapping(path = "/list", requestMethod = RequestMethod.GET, renderType = RenderType.JSON)
    public JSONArray list() {
        JSONArray array = new JSONArray();
        JSONObject object = new JSONObject();
        UserBean user = new UserBean();
        user.setId(23);
        user.setUserName("逅弈逐码");
        object.put("user", user);
        array.add(object);
        return array;
    }

// Path: redant-core/src/main/java/com/redant/core/common/enums/RequestMethod.java
// public enum RequestMethod {
//     /**
//      * GET
//      */
//     GET(HttpMethod.GET),
//     /**
//      * HEAD
//      */
//     HEAD(HttpMethod.HEAD),
//     /**
//      * POST
//      */
//     POST(HttpMethod.POST),
//     /**
//      * PUT
//      */
//     PUT(HttpMethod.PUT),
//     /**
//      * PATCH
//      */
//     PATCH(HttpMethod.PATCH),
//     /**
//      * DELETE
//      */
//     DELETE(HttpMethod.DELETE),
//     /**
//      * OPTIONS
//      */
//     OPTIONS(HttpMethod.OPTIONS),
//     /**
//      * TRACE
//      */
//     TRACE(HttpMethod.TRACE);
// 
//     HttpMethod httpMethod;
// 
//     RequestMethod(HttpMethod httpMethod) {
//         this.httpMethod = httpMethod;
//     }
// 
//     public static HttpMethod getHttpMethod(RequestMethod requestMethod){
//         for(RequestMethod method : values()){
//             if(requestMethod==method){
//                 return method.httpMethod;
//             }
//         }
//         return null;
//     }
// 
// }
// 
// Path: redant-core/src/main/java/com/redant/core/render/RenderType.java
// public enum RenderType {
// 
// 	/**
// 	 * JSON
// 	 */
// 	JSON("application/json;charset=UTF-8"),
// 	/**
// 	 * XML
// 	 */
// 	XML("text/xml;charset=UTF-8"),
// 	/**
// 	 * TEXT
// 	 */
// 	TEXT("text/plain;charset=UTF-8"),
// 	/**
// 	 * HTML
// 	 */
// 	HTML("text/html;charset=UTF-8");
// 
// 	private String contentType;
// 
// 	RenderType(String contentType){
// 		this.contentType = contentType;
// 	}
// 
// 	public String getContentType() {
// 		return contentType;
// 	}
// }
// 
// Path: redant-example/src/main/java/com/redant/example/service/UserBean.java
// public class UserBean implements Serializable {
// 
//     private Integer id;
// 
//     private String userName;
// 
//     private String password;
// 
//     public Integer getId() {
//         return id;
//     }
// 
//     public void setId(Integer id) {
//         this.id = id;
//     }
// 
//     public String getUserName() {
//         return userName;
//     }
// 
//     public void setUserName(String userName) {
//         this.userName = userName;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     @Override
//     public String toString() {
//         return JSON.toJSONString(this);
//     }
// }
// 
// Path: redant-example/src/main/java/com/redant/example/service/UserService.java
// public interface UserService {
// 
//     /**
//      * 获取用户信息
//      * @param id 用户id
//      * @return 用户信息
//      */
//     UserBean selectUserInfo(Integer id);
// 
//     /**
//      * 获取用户个数
//      * @return 用户个数
//      */
//     int selectCount();
// }


// Path: redant-example/src/main/java/com/redant/example/controller/UserController.java
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.redant.core.bean.annotation.Autowired;
import com.redant.core.bean.annotation.Bean;
import com.redant.core.common.enums.RequestMethod;
import com.redant.core.controller.annotation.Controller;
import com.redant.core.controller.annotation.Mapping;
import com.redant.core.controller.annotation.Param;
import com.redant.core.render.RenderType;
import com.redant.example.service.UserBean;
import com.redant.example.service.UserService;
import java.util.concurrent.TimeUnit;

package com.redant.example.controller;




/**
 * @author houyi.wh
 * @date 2017/12/1
 **/
@Bean
@Controller(path = "/user")
public class UserController {

    /**
     * 如果需要使用Autowired，则该类自身需要使用Bean注解标注
     */
    @Autowired(name = "userService")
    private UserService userService;

    @Mapping(path = "/info", requestMethod = RequestMethod.GET, renderType = RenderType.JSON)
    public UserBean info(@Param(key = "id", notNull = true) Integer id) {
        try {
            TimeUnit.MILLISECONDS.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return userService.selectUserInfo(id);
    }

    @Mapping(path = "/list", requestMethod = RequestMethod.GET, renderType = RenderType.JSON)
    public JSONArray list() {
        JSONArray array = new JSONArray();
        JSONObject object = new JSONObject();
        UserBean user = new UserBean();
        user.setId(23);
        user.setUserName("逅弈逐码");
        object.put("user", user);
        array.add(object);
        return array;
    }

    @Mapping(path = "/count", requestMethod = RequestMethod.GET, renderType = RenderType.JSON)