Description
Right now, some params are logged when myfaces is started or shutdown. Such log is done on MyfacesConfig class. It has the following problems:
- Logging about application startup should be done on AbstractFacesInitializer.
- That log should only be done on Production and Development project stage. For UnitTest and SystemTest, it should be silently ignored.
- A web config param should be used to enable/disable.
- All web config params not configured should be logged, not only the ones defined on MyfacesConfig.
- Deprecated params should not be logged.
- Params with expected values should be checked, and if it fails, log a warning message.
To solve all that problems, the idea is add the following fields to @JSFWebConfigParam:
/**
- The group which the param belongs.
- <p>These are the groups used in myfaces core:</p>
- <ul>
- <li>state</li>
- <li>resources</li>
- <li>viewhandler</li>
- <li>validation</li>
- <li>render</li>
- <li>EL</li>
- </ul>
- @return
*/
String group() default "";
/**
- The tag(s) or clasification(s), separated by commas
- that this web config param can be clasified.
- <p>These are the tags used in myfaces core:</p>
- <ul>
- <li>tomahawk</li>
- <li>performance</li>
- </ul>
- @return
*/
String tags() default "";
/**
- Indicate if the param was deprecated or not.
- @return
*/
boolean deprecated() default false;
/**
- Indicate an alias or alternate name for this param.
- @return
*/
String alias() default "";
/**
- Indicate if this param ignore upper or lower case when read params
- @return
*/
boolean ignoreUpperLowerCase() default false;
/**
- The java type or class which this param is converted
- @return
*/
String classType() default "";
And create a class that generate this automatically using myfaces builder plugin make-config goal. In that way, each time we add a @JSFWebConfigParam annotation, the code will be synchronized automatically. Definitively this strategy is easier than create a class that hold all web config params, because it is more "flexible" and simple. Just create a constant, and the annotation and that's it.