// Path: commons/src/main/java/org/nesty/commons/constant/http/RequestMethod.java
// public enum RequestMethod {
//     GET, POST, PUT, DELETE, UNKOWN
// }
// 
// Path: core/src/main/java/org/nesty/core/server/rest/HttpSession.java
// public abstract class HttpSession {
// 
//     // client request with unique id, fetch it from http header(Request-Id)
//     // if exsit. or generate by UUID
//     private long creationTime = System.currentTimeMillis();
// 
//     public HttpSession() {
// 
//     }
// 
//     public String getId() {
//         return getRequestId();
//     }
// 
//     public long getCreationTime() {
//         return creationTime;
//     }
// 
//     public long getLastAccessedTime() {
//         // TODO : this time will updated by long connection
//         //
//         return creationTime;
//     }
// 
//     public int getMaxInactiveInterval() {
//         throw new NotImplementedException();
//     }
// 
//     public void setMaxInactiveInterval(int interval) {
//         throw new NotImplementedException();
//     }
// 
//     public Object getAttribute(String name) {
//         Object value;
//         if ((value = getHttpParams().get(name)) != null)
//             return value;
//         if ((value = getHttpAttributes().get(name)) != null)
//             return value;
//         return null;
//     }
// 
//     public Object getValue(String name) {
//         return getAttribute(name);
//     }
// 
//     public Enumeration<String> getAttributeNames() {
//         return new Enumeration<String>() {
//             Iterator<String> firest = getHttpParams().keySet().iterator();
//             Iterator<String> second = getHttpAttributes().keySet().iterator();
// 
//             @Override
//             public boolean hasMoreElements() {
//                 return firest.hasNext() || second.hasNext();
//             }
// 
//             @Override
//             public String nextElement() {
//                 try {
//                     return firest.next();
//                 } catch (NoSuchElementException e) {
//                     return second.next();
//                 }
//             }
//         };
//     }
// 
//     public String[] getValueNames() {
//         String[] arr = new String[getHttpParams().keySet().size() + getHttpAttributes().keySet().size()];
//         Enumeration<String> names = getAttributeNames();
//         int index = 0;
//         while (names.hasMoreElements())
//             arr[index++] = names.nextElement();
//         return arr;
//     }
// 
//     public void setAttribute(String name, Object value) {
//         getHttpAttributes().put(name, value);
//     }
// 
//     public void putValue(String name, Object value) {
//         setAttribute(name, value);
//     }
// 
//     public void removeAttribute(String name) {
//         getHttpAttributes().remove(name);
//         getHttpParams().remove(name);
//     }
// 
//     public void removeValue(String name) {
//         removeAttribute(name);
//     }
// 
//     public void invalidate() {
//         getHttpAttributes().clear();
//     }
// 
//     public boolean isNew() {
//         return true;
//     }
// 
//     public abstract String getRequestId();
// 
//     public abstract Map<String, Object> getHttpAttributes();
// 
//     public abstract Map<String, String> getHttpParams();
// }
// 
// Path: example/src/main/java/org/nesty/example/httpserver/handler/model/ProjectModel.java
// @Controller
// public class ProjectModel {
// 
//     private Integer projectId;
//     private String projectName;
//     private String projectOwener;
// 
//     public Integer getProjectId() {
//         return projectId;
//     }
// 
//     public String getProjectName() {
//         return projectName;
//     }
// 
//     public String getProjectOwener() {
//         return projectOwener;
//     }
// }


import org.nesty.commons.annotations.*;
import org.nesty.commons.constant.http.RequestMethod;
import org.nesty.core.server.rest.HttpSession;
import org.nesty.example.httpserver.handler.model.ProjectModel;
import java.util.List;
        return new ApiResult<Void>();
    }

    @RequestMapping(value = "/model/clone.json", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public
    @ResponseBody
    ApiResult<Long> clone(
            @RequestParam(value = "projectId", required = false) Long projectId,
            @RequestBody ProjectModel cloneModelVo) {
        System.out.println(String.format("getModelFeatureAnalysist %d ", projectId));
        return new ApiResult<Long>();
    }

    @RequestMapping(value = "/model/rename.json", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public
    @ResponseBody
    ApiResult<Boolean> rename(
            @RequestParam(value = "projectId", required = false) Long projectId,
            @RequestParam(value = "modelId", required = false) Long modelId,
            @RequestParam(value = "modelName", required = false) String modelName,
            HttpSession httpSession) {
        System.out.println(String.format("getModelFeatureAnalysist %d requestId %s", projectId, httpSession.getId()));
        return new ApiResult<Boolean>();
    }

    @RequestMapping(value = "/model/renameFolder.json", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public
    @ResponseBody
    ApiResult<Boolean> renameFolder(
            @RequestParam(value = "projectId", required = false) Long projectId,
// Path: commons/src/main/java/org/nesty/commons/constant/http/RequestMethod.java
// public enum RequestMethod {
//     GET, POST, PUT, DELETE, UNKOWN
// }
// 
// Path: core/src/main/java/org/nesty/core/server/rest/HttpSession.java
// public abstract class HttpSession {
// 
//     // client request with unique id, fetch it from http header(Request-Id)
//     // if exsit. or generate by UUID
//     private long creationTime = System.currentTimeMillis();
// 
//     public HttpSession() {
// 
//     }
// 
//     public String getId() {
//         return getRequestId();
//     }
// 
//     public long getCreationTime() {
//         return creationTime;
//     }
// 
//     public long getLastAccessedTime() {
//         // TODO : this time will updated by long connection
//         //
//         return creationTime;
//     }
// 
//     public int getMaxInactiveInterval() {
//         throw new NotImplementedException();
//     }
// 
//     public void setMaxInactiveInterval(int interval) {
//         throw new NotImplementedException();
//     }
// 
//     public Object getAttribute(String name) {
//         Object value;
//         if ((value = getHttpParams().get(name)) != null)
//             return value;
//         if ((value = getHttpAttributes().get(name)) != null)
//             return value;
//         return null;
//     }
// 
//     public Object getValue(String name) {
//         return getAttribute(name);
//     }
// 
//     public Enumeration<String> getAttributeNames() {
//         return new Enumeration<String>() {
//             Iterator<String> firest = getHttpParams().keySet().iterator();
//             Iterator<String> second = getHttpAttributes().keySet().iterator();
// 
//             @Override
//             public boolean hasMoreElements() {
//                 return firest.hasNext() || second.hasNext();
//             }
// 
//             @Override
//             public String nextElement() {
//                 try {
//                     return firest.next();
//                 } catch (NoSuchElementException e) {
//                     return second.next();
//                 }
//             }
//         };
//     }
// 
//     public String[] getValueNames() {
//         String[] arr = new String[getHttpParams().keySet().size() + getHttpAttributes().keySet().size()];
//         Enumeration<String> names = getAttributeNames();
//         int index = 0;
//         while (names.hasMoreElements())
//             arr[index++] = names.nextElement();
//         return arr;
//     }
// 
//     public void setAttribute(String name, Object value) {
//         getHttpAttributes().put(name, value);
//     }
// 
//     public void putValue(String name, Object value) {
//         setAttribute(name, value);
//     }
// 
//     public void removeAttribute(String name) {
//         getHttpAttributes().remove(name);
//         getHttpParams().remove(name);
//     }
// 
//     public void removeValue(String name) {
//         removeAttribute(name);
//     }
// 
//     public void invalidate() {
//         getHttpAttributes().clear();
//     }
// 
//     public boolean isNew() {
//         return true;
//     }
// 
//     public abstract String getRequestId();
// 
//     public abstract Map<String, Object> getHttpAttributes();
// 
//     public abstract Map<String, String> getHttpParams();
// }
// 
// Path: example/src/main/java/org/nesty/example/httpserver/handler/model/ProjectModel.java
// @Controller
// public class ProjectModel {
// 
//     private Integer projectId;
//     private String projectName;
//     private String projectOwener;
// 
//     public Integer getProjectId() {
//         return projectId;
//     }
// 
//     public String getProjectName() {
//         return projectName;
//     }
// 
//     public String getProjectOwener() {
//         return projectOwener;
//     }
// }


// Path: example/src/main/java/com/com/nesty/test/neptune/ModelController.java
import org.nesty.commons.annotations.*;
import org.nesty.commons.constant.http.RequestMethod;
import org.nesty.core.server.rest.HttpSession;
import org.nesty.example.httpserver.handler.model.ProjectModel;
import java.util.List;

        return new ApiResult<Void>();
    }

    @RequestMapping(value = "/model/clone.json", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public
    @ResponseBody
    ApiResult<Long> clone(
            @RequestParam(value = "projectId", required = false) Long projectId,
            @RequestBody ProjectModel cloneModelVo) {
        System.out.println(String.format("getModelFeatureAnalysist %d ", projectId));
        return new ApiResult<Long>();
    }

    @RequestMapping(value = "/model/rename.json", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public
    @ResponseBody
    ApiResult<Boolean> rename(
            @RequestParam(value = "projectId", required = false) Long projectId,
            @RequestParam(value = "modelId", required = false) Long modelId,
            @RequestParam(value = "modelName", required = false) String modelName,
            HttpSession httpSession) {
        System.out.println(String.format("getModelFeatureAnalysist %d requestId %s", projectId, httpSession.getId()));
        return new ApiResult<Boolean>();
    }

    @RequestMapping(value = "/model/renameFolder.json", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public
    @ResponseBody
    ApiResult<Boolean> renameFolder(
            @RequestParam(value = "projectId", required = false) Long projectId,
            @RequestBody ProjectModel folderRenameVo, HttpSession httpSession) {