[ https://issues.apache.org/jira/browse/JSPWIKI-155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13839435#comment-13839435 ]
Juan Pablo Santos Rodríguez commented on JSPWIKI-155: ----------------------------------------------------- All managers are currently injected via ClassUtil.getMappedObject. As a last step before marking as resolved this issue, interfaces should be extracted from managers; this will be done following some rules of thumb: - interfaces should be part of o.a.w.api.engine package - initially, they should publish all public operations from the given manager (later on, at JSPWIKI-303 timeframe, we'll most probably refactor these operations) - the interface will be named as the Manager and the Manager will be prefixed with Default (i.e. -> o.a.w.plugin.PluginManager will get splitted into o.a.w.api.engine.PluginManager (interface) and o.a.w.plugin.DefaultPluginManager (class)). - use of the new interface over the concrete manager throughout the code - concrete Managers should not be final, to allow inheritance thoughts/alternatives? > Allow customisation of core classes via ClassUtil.getMappedObject > ----------------------------------------------------------------- > > Key: JSPWIKI-155 > URL: https://issues.apache.org/jira/browse/JSPWIKI-155 > Project: JSPWiki > Issue Type: Improvement > Components: Core & storage > Affects Versions: 2.6.0 > Reporter: Simon Kitching > Priority: Minor > Fix For: 2.10 > > > The WikiEngine class uses the ClassUtils.getMappedObject method to locate its > critical helper objects, rather than just call "new". > The intentention of this existing code is for people to be able to override > the core implementations with custom ones - with the warning that these core > objects do not have stable public apis, and may change in any release. > Unfortunately because (a) the returned object is cast to a concrete type, and > (b) many of these concrete types are declared "final" this facility is > actually almost useless. > It would be nice for the "final" to be removed from these classes, and from > their member methods so that getMappedObject becomes useful. Alternately, > interfaces could be created for the concrete classes that WikiEngine > currently uses, and all code modified to use the interface instead; the > existing implementations could then remain final. That approach is much more > intrusive though. > Note that in discussions on the email lists it has been suggested that the > "final" qualifier on these classes helps make jspwiki more secure. Personally > I'm not at all convinced that is true though. -- This message was sent by Atlassian JIRA (v6.1#6144)