Narrative
One of Zaphod's heads is allergic to XML. Rather than embed metadata in a configuration file, Zaphod annotates his POJO actions instead. The framework scans the designated packages for objects that implement Action or have names that end with "Action". An action mappings is automatically created and registered for each matching class, based on the annotations.
Goal
Goal |
|
Level |
|
(User Goal, Summary, Subfunction) |
Trigger |
|
Primary Actor |
|
Main Success Scenario (MSS)
Step |
Action |
1 |
System loads FilterDispatcher through web.xml, which includes actionPackages parameter |
2 |
FilterDispatcher initializes a Dispatcher, passing along the actionPackages parameter |
3 |
Dispatcher initializes ClasspathConfigurationProvider to hold one or more Configuration Providers |
4 |
Dispatcher adds to the ConfigurationManager object a ClasspathConfigurationProvider to process the actionPackages. |
5 |
(someone) calls loadpackages on ClasspathConfigurationProvider |
6 |
loadpackages utilizes the XWork ResolverUtil to find classes that implement Action or have names suffixed with "Action" in the listed packages. Each found class is added to a set (if not already present), and each class in the set is passed to the processActionClass helper method. |
7 |
processActionClass ascertains the namespace, captures any ParentPackage or Results annotations, and creates an ActionConfig, setting the action name, package name, and results. |
Extensions
Step |
Branching Action |
|
|
7a |
Action suffix |
.1 |
The action name is truncated before any Action suffix. |
|
|
7b |
Embedded / |
.1 |
If action name contains a / character, then the first character after the last / is forced to lowercase. |
|
|
7c |
On the fly results |
.1 |
Results are wrapped in a ResultMap class that processes the Action class annotations on initialization, creating any new result configuration objects as needed. |
Preconditions and Guarantees
Preconditions |
|
Minimal Guarantees |
|
Success Guarantees |
|
Stakeholders and Interests
Variations