@MadvocAction("/my-{:package}/{:class}") public class JimAction { @Action("my-{:name}") public void hello() {} }
/** * Reads action path from class. If the class is annotated with {@link MadvocAction} annotation, * class action path will be read from annotation value. Otherwise, action class path will be built from the * class name. This is done by removing the package name and the last contained word * (if there is more then one) from the class name. Such name is finally uncapitalized. */ protected String[] readClassActionPath(final Class actionClass) { // read class annotation MadvocAction madvocActionAnnotation = ((Class<?>)actionClass).getAnnotation(MadvocAction.class); String classActionPath = madvocActionAnnotation != null ? madvocActionAnnotation.value().trim() : null; if (StringUtil.isEmpty(classActionPath)) { classActionPath = null; } String actionClassName = actionClass.getSimpleName(); actionClassName = StringUtil.uncapitalize(actionClassName); actionClassName = MadvocUtil.stripLastCamelWord(actionClassName); // removes 'Action' from the class name if (classActionPath == null) { classActionPath = actionClassName; } return ArraysUtil.array(actionClassName, classActionPath); }
MadvocAction madvocActionAnnotation = actionPackage.getAnnotation(MadvocAction.class); packageActionPathFromAnnotation = madvocActionAnnotation != null ? madvocActionAnnotation.value().trim() : null;
@MadvocAction public class JohnAction { @Action public void hello() {} }
/** * Reads action path from class. If the class is annotated with {@link MadvocAction} annotation, * class action path will be read from annotation value. Otherwise, action class path will be built from the * class name. This is done by removing the package name and the last contained word * (if there is more then one) from the class name. Such name is finally uncapitalized. * <p> * If this method returns <code>null</code> class will be ignored. */ protected String readClassActionPath(Class actionClass) { // read annotation MadvocAction madvocActionAnnotation = ((Class<?>)actionClass).getAnnotation(MadvocAction.class); String classActionPath = madvocActionAnnotation != null ? madvocActionAnnotation.value().trim() : null; if (StringUtil.isEmpty(classActionPath)) { classActionPath = null; } String name = actionClass.getSimpleName(); name = StringUtil.uncapitalize(name); name = MadvocUtil.stripLastCamelWord(name); // decide if (classActionPath == null) { classActionPath = name; } else { classActionPath = StringUtil.replace(classActionPath, REPL_CLASS, name); } return classActionPath; }
@MadvocAction public class EmaAction { @Action public void hello(){} }
String packageActionPath = madvocActionAnnotation != null ? madvocActionAnnotation.value().trim() : null; if (StringUtil.isEmpty(packageActionPath)) { packageActionPath = null;
@MadvocAction public class SuperAction { public static class Foo { public String value; } @Action public void add(@In String name, @In Foo foo) { System.out.println(name); System.out.println(foo.value); } }
@MadvocAction public class DidyAction { @Action public void hello() {} }
@MadvocAction public class Boo1Action extends BooAction { }
@MadvocAction(value = "bbb") public class Boo2Action extends BooAction { }
@MadvocAction("gig") public class MadvocRootPackage { }
@MadvocAction("/bbb") public class Boo3Action extends BooAction { }
@MadvocAction(value = "www") public class Boo4Action extends BooAction { }
@MadvocAction(value = "/www") public class Boo5Action extends BooAction { }
@MadvocAction("/re/") public class ReAction {
/** * Default action used for all non-registered requests. */ @MadvocAction public final class DefaultActionSupplement { public void view() { } }