[
https://issues.apache.org/struts/browse/WW-2577?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Brad Cupit closed WW-2577.
--------------------------
looks correct in the code in trunk
> @Result annotation - use the compiler to enforce stronger restrictions
> ----------------------------------------------------------------------
>
> Key: WW-2577
> URL: https://issues.apache.org/struts/browse/WW-2577
> Project: Struts 2
> Issue Type: Improvement
> Components: Core Actions
> Reporter: Brad Cupit
> Assignee: Don Brown
> Priority: Trivial
> Fix For: 2.1.2
>
>
> Note: this would be extremely easy to fix
> The @Result annotation could have more restrictions that use the compiler to
> enforce certain behaviors.
> 1) Add @Target(ElementType.TYPE)
> the documentation says not to put the Result annotation on methods, since it
> only works on classes. Adding the Target annotation to the Result annotation
> would make it a compiler error if the Result annotation is put on anything
> other than a class
> 2) make type() a Class<? extends Result>
> the type() field is a Class, but by making it a Class<? extends Result> it
> enforces that the type implement the Result interface. The advantage here is
> much weaker than in 1), however it would self-document the code so anyone
> writing a custom 'type' would know to implement the Result interface.
> The final code would look like this:
> @Target(ElementType.TYPE)
> @Retention(RetentionPolicy.RUNTIME)
> public @interface Result {
> String name() default Action.SUCCESS;
> Class<? extends Result> type() default NullResult.class;
> String value();
> String[] params() default {};
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.