struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brad Cupit (JIRA)" <j...@apache.org>
Subject [jira] Created: (WW-2577) @Result annotation could use the compiler to enforce strong restriction
Date Fri, 04 Apr 2008 14:57:59 GMT
@Result annotation could use the compiler to enforce strong restriction
-----------------------------------------------------------------------

                 Key: WW-2577
                 URL: https://issues.apache.org/struts/browse/WW-2577
             Project: Struts 2
          Issue Type: Improvement
          Components: Core Actions
            Reporter: Brad Cupit
            Priority: Trivial


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 annotation on methods, as it only works on classes.
This update makes it a compile error if the action is put on anything other than a class

2) make type() a Class<? extends Result>
the type() field is of type Class, but by making it of type Class<? extends Result>
it enforces that the type implement the Result interface. The advantage here is much weaker
than in the first option, 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.


Mime
View raw message