[
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)