Hi Juan Pablo, Since I've kinda already done most of this would you like me to send you what I've got? It might be a good starting point and I wouldn't feel like I've wasted that effort...
Ichiro On Thu, Dec 5, 2013 at 11:49 AM, Juan Pablo Santos Rodríguez (JIRA) < j...@apache.org> wrote: > > [ > 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) >