| Design |
| |
| Action with no annotations (all the default handlings) |
| -------------------------- |
| |
| Action name is class name. |
| Action package is based on the either any Namespace annotations on the class or Java package the |
| action class is defined in or the Java package name and the root Java package, which is determined |
| based on the package locators or the action package list. In either case, a root package is |
| identified and the namespace is the packages below the root up to and including the package that |
| contains the action class. |
| Action method is execute in all cases. |
| Results are built first from the Result annotations at the class level. Next, they are built from |
| the resources available in the web application and in the classpath based on the result location, |
| namespace of the action and action name (not anything to do with the code element names). Results |
| are found for common result codes including, success, error, input, failure, etc. If a specific |
| result doesn't exist using the result code then just the action namespace and action name are used to |
| locate results. If there are still no results found, than a redirect is added back to the index |
| action for the namespace, if one exists. |
| |
| Action with Action(s) annotations |
| --------------------------------- |
| |
| If the annotation is located on any method other than execute, than the action configuration built |
| from the annotation is in addition to the action configuration built using the default. Unless there |
| is an annotation that contains no value, in which case, the method that annotation is defined for |
| becomes the default action method. If the annotation is defined on the execute method, regardless of |
| the value of the annotation, no default configuration is built for the class. |
| If multiple annotations have no value, an error should occur. |
| If multiple annotations have the same value, an error should occur. |
| |
| Action name is taken from the annotation value. If the value is empty, the default action name |
| is used. |
| Action package is taken from the annotation value. If the annotation value doesn't start with a slash |
| character, the default action namespace is used. |
| Action method is always the method that the annotation is defined on. |
| Results are built first from the array of Results on the Action annotation. Next, they are built |
| from the class level Result annotations. Lastly, all default results are created. All Results already |
| created during this process should not be overridden later in the process. |