package org.sothis.mvc; import java.lang.annotation.Annotation; import java.util.Map; /** * controller的简单封装 * * @author velna * */ public interface Controller extends ActionBase { public final static String CONTROLLER_SUFFIX = "Controller"; /** * 得到这个controller中name为actionName的Action * * @param actionName * @return */ Action getAction(String actionName); /** * 得到这个controller中所有的action * * @return 所有Action的Map,Map的key为action名称 */ Map<String, Action> getActions(); /** * 得到实际controller的类 * * @return */ Class<?> getControllerClass(); /** * 得到controller名称 * * @return */ String getName(); /** * 得到controller所在的包,这个包是相对于sothis.controller.packages配置的包名<br> * 比如sothis.controller.packages=com.my.app.controller,那么:<br> * com.my.app.controller.MyController,返回空字符串<br> * com.my.app.controller.user.LoginController,返回user<br> * com.my.app.controller.user.task.TaskController,返回user/task * * @return 相对的package名称 */ String getPackageName(); /** * 得到controller的完整名称,包括package路径 * 比如sothis.controller.packages=com.my.app.controller,那么:<br> * com.my.app.controller.MyController,返回/my/<br> * com.my.app.controller.user.LoginController,返回/user/my/<br> * com.my.app.controller.user.Controller,返回/user/<br> * com.my.app.controller.user.task.TaskController,返回/user/task/my/ * * @return */ String getFullName(); /** * 指定的注解是否在controller class或controller package中出现<br> * {@inheritDoc} */ boolean isAnnotationPresent(Class<? extends Annotation> annotationClass); /** * 得到在controller class或controller package中出现的注解<br> * {@inheritDoc} */ <T extends Annotation> T[] getAnnotation(Class<T> annotationClass); /** * 得到所有在controller class和controller package中声明的注解<br> * {@inheritDoc} */ Annotation[][] getAnnotations(); }