I think everyone agrees that this is a great thing to do. A few pieces of feedback:
o It would be great to get a basic wiki page/article built around this functionality. You have most of the content already between this thread and the implementation in your workspace. It's just easier to get a sense of the scope of the feature when it's all in one place. We will need this anyway to document the feature for users.
o Looks like this is the current list of supported annotations. Did I miss any?
- @OnExceptionMethod
- @OnSuccessMethod
- @ProcessMethod
- @ConfigProperty
- @Destroy
- @Initialize
- @BodyParam
- @PropertyParam
o Recommend dropping "Method" from the above annotion names.
o We could take this one step further and add an @Action annotation at the class level. This would eliminate the need to extend AbstractActionPipelineProcessor or implement the Lifecycle and PipelineProcessor interfaces; you have already defined annotations for all the methods on these interfaces. All we need to do is add a basic delegate implementation that would wrap the annotated action and dispatch to annotated methods as appropriate.
o I did not see @BodyParam and @PropertyParam in the fisheye changeset you published. In fact, they are not in your workspace either AFAICT. Do I have to pay extra for those? ;-) I checked out the processing in BeanContainerAction and it looks like you support both a "name" property in the annotation as well as search based on the annotated parameter's type. For examples, I would use the former syntax as it's much clearer where the body and property are coming from.