[ 
https://issues.apache.org/jira/browse/JSPWIKI-120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17000298#comment-17000298
 ] 

Juan Pablo Santos Rodríguez commented on JSPWIKI-120:
-----------------------------------------------------

changes proposed on ML:

{quote}
Move from WikiEngine to PageManager:
* void deletePage( final String pageName )
* void deleteVersion( final WikiPage page )
* String getCurrentProvider()
* String getCurrentProviderInfo()
* WikiPage getPage( String pagereq )
* WikiPage getPage( String pagereq, int version )
* int getPageCount() (already there as getTotalPageCount(), so it can get 
deleted)
* String getPureText( String page, int version )
* String getPureText( WikiPage page )
* Set< WikiPage > getRecentChanges()
* String getText( String page )
* String getText( String page, int version )
* String getText( WikiContext context, WikiPage page )
* List< ? extends WikiPage > getVersionHistory( String page )
* boolean pageExists( String page )
* boolean pageExists( String page, int version )
* boolean pageExists( WikiPage page )
* void saveText( WikiContext context, String text )

Move from WikiEngine to PageRenamer:
* String renamePage( WikiContext context, String renameFrom, String renameTo, 
boolean changeReferrers )

Move from WikiEngine to ReferenceManager:
* Collection< String > scanWikiLinks( WikiPage page, String pagedata )
* void updateReferences( WikiPage page )

Move from WikiEngine to RenderingManager:
* String beautifyTitle( String title )
* String beautifyTitleNoBreak( String title )
* String decodeName( final String pagerequest )
* String encodeName( String pagename )
* String getHTML( String page )
* String getHTML( String pagename, int version )
* String getHTML( WikiContext context, WikiPage page )
* String textToHTML( WikiContext context, String pagedata, StringTransmutator 
localLinkHook, StringTransmutator extLinkHook )
* String textToHTML( WikiContext context, String pagedata, StringTransmutator 
localLinkHook, StringTransmutator extLinkHook, StringTransmutator attLinkHook )
* String textToHTML( WikiContext context, String pagedata, StringTransmutator 
localLinkHook, StringTransmutator extLinkHook, StringTransmutator attLinkHook, 
boolean parseAccessRules, boolean justParse )

Move from WikiEngine to HttpUtil:
* String safeGetQueryString( final HttpServletRequest request )

Move from WikiEngine to DifferenceManager:
* String getDiff( WikiContext context, int version1, int version2 )

Move from WikiEngine to VariableManager:
* String getVariable( WikiContext context, String name )

Extract new WikiEngineProperties enum with WikiEngine's public static final 
String PROP_* and public static final String DEFAULT_ constants

WikiEngine would retain all the remaining methods. The following public API / 
Interface could be extracted from there, which would focus mainly on static 
stuff:

Configuration
* Collection< String > getAllInlinedImagePatterns()
* Collection< String > getAllInterWikiLinks()
* String getApplicationName()
* String getBaseURL()
* Charset getContentEncoding()
* String getFrontPage()
* String getGlobalRSSURL()
* String getRequiredProperty( Properties props, String key ) throws 
NoRequiredPropertyException (maybe throw another kind of exception and move it 
back to TextUtils, where it initially was?)
* String getRootPath()
* ServletContext getServletContext()
* Date getStartTime()
* String getTemplateDir()
* Properties getWikiProperties()
* String getWorkDir()

DI methods [1]
* all XYZ getXYZManager methods

Context creation
* WikiContext createContext( final HttpServletRequest request, final String 
requestContext )

WikiEngine attributes
* Object getAttribute( String key )
* Object removeAttribute( String key )
* void setAttribute( String key, Object value )

URL creation [2]
* CommandResolver getCommandResolver()
* getURL( final String context, String pageName, final String params, final 
boolean absolute )
* String getInterWikiURL( String wikiName )
* String getViewURL( String pageName )
* String getRedirectURL( final WikiContext context ) (seems unused?)
* String getFinalPageName( String page )
* String getSpecialPageReference( String original ) (unused?)

Event Listeners / WatchDog related operations:
* void addWikiEventListener( WikiEventListener listener )
* void removeWikiEventListener( WikiEventListener listener )
* WatchDog getCurrentWatchDog()

[1]: Instead of exposing each getWhateverManager(), I was more thinking of 
having one getManager( Class managerClass ) method at the public API level, 
whereas the concrete class would retain all the getXYZManager, in order to not 
make an even more breaking change
[2]: perhaps these should be moved into WikiContext ?
{quote}

> Separate rendering engine from core
> -----------------------------------
>
>                 Key: JSPWIKI-120
>                 URL: https://issues.apache.org/jira/browse/JSPWIKI-120
>             Project: JSPWiki
>          Issue Type: New Feature
>          Components: Core &amp; storage
>            Reporter: Janne Jalkanen
>            Priority: Major
>             Fix For: 3.0
>
>
> Quite a few people have shown up recently on the mailing list and have 
> expressed a wish to separate the rendering engine from the core itself, so 
> that they wouldn't need so much baggage with the engine.
> Unfortunately, this is quite difficult, as the rendering engine does rely on 
> quite a few bits from the WikiEngine instance, for example URL generation and 
> checking whether a page/attachment exists or not, as well as settings.
> However, these things could be enumerated and isolated to a RenderingContext 
> interface.  Then, anyone who would like to get their own engine would need to 
> implement this interface.
> It may mean that WikiEngine and WikiContext might need to become interfaces 
> as well.  However, that might not be such a bad thing, as it would give a 
> more stable developer API.  Then we would have a three-layered architecture, 
> where one layer (WikiEngine) takes care of static stuff, WikiContext contains 
> per-request data, and RenderingContext provides the bits and pieces which are 
> part of HTML generation.
> At any rate, this requires more thinking.  Probably not going to happen 
> before 3.0 anyway.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to