You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2020/02/24 16:53:06 UTC

[jspwiki] 24/38: JSPWIKI-120: propagate WikiContext#getEngine() now returns Engine instead of WikiEngine (1)

This is an automated email from the ASF dual-hosted git repository.

juanpablo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git

commit bbac3d4a375963a6184e1c40d17aa09ec3619bd7
Author: juanpablo <ju...@apache.org>
AuthorDate: Mon Feb 24 17:11:02 2020 +0100

    JSPWIKI-120: propagate WikiContext#getEngine() now returns Engine instead of WikiEngine (1)
---
 .../apache/wiki/plugin/AbstractReferralPlugin.java |  91 +++++++--------
 .../org/apache/wiki/plugin/BugReportHandler.java   |  11 +-
 .../main/java/org/apache/wiki/plugin/Groups.java   |  12 +-
 .../main/java/org/apache/wiki/plugin/IfPlugin.java |  18 +--
 .../main/java/org/apache/wiki/plugin/Image.java    |  44 +++----
 .../java/org/apache/wiki/plugin/IndexPlugin.java   |  64 ++++++-----
 .../java/org/apache/wiki/plugin/InsertPage.java    |  46 ++++----
 .../org/apache/wiki/plugin/ListLocksPlugin.java    |  48 +++-----
 .../src/main/java/org/apache/wiki/plugin/Note.java |  25 ++--
 .../org/apache/wiki/plugin/PageViewPlugin.java     | 109 +++++++++---------
 .../apache/wiki/plugin/RecentChangesPlugin.java    |  14 ++-
 .../apache/wiki/plugin/ReferredPagesPlugin.java    |  15 +--
 .../apache/wiki/plugin/ReferringPagesPlugin.java   |  13 ++-
 .../wiki/plugin/ReferringUndefinedPagesPlugin.java |  24 ++--
 .../main/java/org/apache/wiki/plugin/Search.java   |  38 +++---
 .../org/apache/wiki/plugin/SessionsPlugin.java     |  34 +++---
 .../org/apache/wiki/plugin/TableOfContents.java    |  36 +++---
 .../apache/wiki/plugin/UndefinedPagesPlugin.java   |   4 +-
 .../org/apache/wiki/plugin/UnusedPagesPlugin.java  |  55 +++------
 .../apache/wiki/plugin/WeblogArchivePlugin.java    | 127 +++++++--------------
 .../org/apache/wiki/plugin/WeblogEntryPlugin.java  |  20 ++--
 .../java/org/apache/wiki/plugin/WeblogPlugin.java  |  36 +++---
 22 files changed, 408 insertions(+), 476 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/AbstractReferralPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/AbstractReferralPlugin.java
index 3260cb8..69d5ca3 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/AbstractReferralPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/AbstractReferralPlugin.java
@@ -28,10 +28,11 @@ import org.apache.oro.text.regex.PatternMatcher;
 import org.apache.oro.text.regex.Perl5Matcher;
 import org.apache.wiki.StringTransmutator;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.pages.PageSorter;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.parser.WikiDocument;
@@ -134,7 +135,7 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
     protected           Date m_dateLastModified = new Date(0);
     protected           SimpleDateFormat m_dateFormat;
 
-    protected           WikiEngine m_engine;
+    protected           Engine m_engine;
 
     /**
      * @param context the wiki context
@@ -142,7 +143,7 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
      * @throws PluginException if any of the plugin parameters are malformed
      */
     // FIXME: The compiled pattern strings should really be cached somehow.
-    public void initialize( WikiContext context, Map<String, String> params )
+    public void initialize( final WikiContext context, final Map<String, String> params )
         throws PluginException
     {
         m_dateFormat = Preferences.getDateFormat( context, TimeFormat.DATETIME );
@@ -181,9 +182,9 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
         {
             try
             {
-                PatternCompiler pc = new GlobCompiler();
+                final PatternCompiler pc = new GlobCompiler();
 
-                String[] ptrns = StringUtils.split( s, "," );
+                final String[] ptrns = StringUtils.split( s, "," );
 
                 m_exclude = new Pattern[ptrns.length];
 
@@ -192,7 +193,7 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
                     m_exclude[i] = pc.compile( ptrns[i] );
                 }
             }
-            catch( MalformedPatternException e )
+            catch( final MalformedPatternException e )
             {
                 throw new PluginException("Exclude-parameter has a malformed pattern: "+e.getMessage());
             }
@@ -205,9 +206,9 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
         {
             try
             {
-                PatternCompiler pc = new GlobCompiler();
+                final PatternCompiler pc = new GlobCompiler();
 
-                String[] ptrns = StringUtils.split( s, "," );
+                final String[] ptrns = StringUtils.split( s, "," );
 
                 m_include = new Pattern[ptrns.length];
 
@@ -216,7 +217,7 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
                     m_include[i] = pc.compile( ptrns[i] );
                 }
             }
-            catch( MalformedPatternException e )
+            catch( final MalformedPatternException e )
             {
                 throw new PluginException("Include-parameter has a malformed pattern: "+e.getMessage());
             }
@@ -253,8 +254,8 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
         initSorter( context, params );
     }
 
-    protected List< WikiPage > filterWikiPageCollection( Collection< WikiPage > pages ) {
-        List< String > pageNames = filterCollection( pages.stream()
+    protected List< WikiPage > filterWikiPageCollection( final Collection< WikiPage > pages ) {
+        final List< String > pageNames = filterCollection( pages.stream()
                                                           .map( page -> page.getName() )
                                                           .collect( Collectors.toList() ) );
         return pages.stream()
@@ -268,15 +269,15 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
      *  @param c The collection to filter.
      *  @return A filtered collection.
      */
-    protected List< String > filterCollection( Collection< String > c )
+    protected List< String > filterCollection( final Collection< String > c )
     {
-        ArrayList< String > result = new ArrayList<>();
+        final ArrayList< String > result = new ArrayList<>();
 
-        PatternMatcher pm = new Perl5Matcher();
+        final PatternMatcher pm = new Perl5Matcher();
 
-        for( Iterator< String > i = c.iterator(); i.hasNext(); )
+        for( final Iterator< String > i = c.iterator(); i.hasNext(); )
         {
-            String pageName = i.next();
+            final String pageName = i.next();
 
             //
             //  If include parameter exists, then by default we include only those
@@ -318,10 +319,10 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
                 WikiPage page = null;
                 if( m_lastModified )
                 {
-                    page = m_engine.getPageManager().getPage( pageName );
+                    page = m_engine.getManager( PageManager.class ).getPage( pageName );
                     if( page != null )
                     {
-                        Date lastModPage = page.getLastModified();
+                        final Date lastModPage = page.getLastModified();
                         if( log.isDebugEnabled() )
                         {
                             log.debug( "lastModified Date of page " + pageName + " : " + m_dateLastModified );
@@ -345,8 +346,8 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
      *  @param c The collection to filter.
      *  @return A filtered and sorted collection.
      */
-    protected List< String > filterAndSortCollection( Collection< String > c ) {
-        List< String > result = filterCollection( c );
+    protected List< String > filterAndSortCollection( final Collection< String > c ) {
+        final List< String > result = filterCollection( c );
         result.sort( m_sorter );
         return result;
     }
@@ -359,14 +360,14 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
      *  @param numItems How many items to show.
      *  @return The WikiText
      */
-    protected String wikitizeCollection( Collection< String > links, String separator, int numItems )
+    protected String wikitizeCollection( final Collection< String > links, final String separator, final int numItems )
     {
         if( links == null || links.isEmpty() )
             return "";
 
-        StringBuilder output = new StringBuilder();
+        final StringBuilder output = new StringBuilder();
 
-        Iterator< String > it = links.iterator();
+        final Iterator< String > it = links.iterator();
         int count = 0;
 
         //
@@ -374,7 +375,7 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
         //
         while( it.hasNext() && ( (count < numItems) || ( numItems == ALL_ITEMS ) ) )
         {
-            String value = it.next();
+            final String value = it.next();
 
             if( count > 0 )
             {
@@ -385,7 +386,7 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
             output.append( m_before );
 
             // Make a Wiki markup link. See TranslatorReader.
-            output.append( "[" + m_engine.getRenderingManager().beautifyTitle(value) + "|" + value + "]" );
+            output.append( "[" + m_engine.getManager( RenderingManager.class ).beautifyTitle(value) + "|" + value + "]" );
             count++;
         }
 
@@ -405,24 +406,24 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
      *  @return HTML
      *  @since 1.6.4
      */
-    protected String makeHTML( WikiContext context, String wikitext )
+    protected String makeHTML( final WikiContext context, final String wikitext )
     {
         String result = "";
 
-        RenderingManager mgr = m_engine.getRenderingManager();
+        final RenderingManager mgr = m_engine.getManager( RenderingManager.class );
 
         try
         {
-            MarkupParser parser = mgr.getParser(context, wikitext);
+            final MarkupParser parser = mgr.getParser(context, wikitext);
 
             parser.addLinkTransmutator( new CutMutator(m_maxwidth) );
             parser.enableImageInlining( false );
 
-            WikiDocument doc = parser.parse();
+            final WikiDocument doc = parser.parse();
 
             result = mgr.getHTML( context, doc );
         }
-        catch( IOException e )
+        catch( final IOException e )
         {
             log.error("Failed to convert page data to HTML", e);
         }
@@ -434,19 +435,16 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
      *  A simple class that just cuts a String to a maximum
      *  length, adding three dots after the cutpoint.
      */
-    private static class CutMutator implements StringTransmutator
-    {
+    private static class CutMutator implements StringTransmutator {
+
         private int m_length;
 
-        public CutMutator( int length )
-        {
+        public CutMutator( final int length ) {
             m_length = length;
         }
 
-        public String mutate( WikiContext context, String text )
-        {
-            if( text.length() > m_length )
-            {
+        @Override public String mutate( final WikiContext context, final String text ) {
+            if( text.length() > m_length ) {
                 return text.substring( 0, m_length ) + "...";
             }
 
@@ -457,11 +455,11 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
     /**
      * Helper method to initialize the comparator for this page.
      */
-    private void initSorter( WikiContext context, Map< String, String > params ) {
-        String order = params.get( PARAM_SORTORDER );
+    private void initSorter( final WikiContext context, final Map< String, String > params ) {
+        final String order = params.get( PARAM_SORTORDER );
         if( order == null || order.length() == 0 ) {
             // Use the configured comparator
-            m_sorter = context.getEngine().getPageManager().getPageSorter();
+            m_sorter = context.getEngine().getManager( PageManager.class ).getPageSorter();
         } else if( order.equalsIgnoreCase( PARAM_SORTORDER_JAVA ) ) {
             // use Java "natural" ordering
             m_sorter = new PageSorter( JavaNaturalComparator.DEFAULT_JAVA_COMPARATOR );
@@ -472,16 +470,13 @@ public abstract class AbstractReferralPlugin implements WikiPlugin
             // use human ordering
             m_sorter = new PageSorter( HumanComparator.DEFAULT_HUMAN_COMPARATOR );
         } else {
-            try
-            {
-                Collator collator = new RuleBasedCollator( order );
+            try {
+                final Collator collator = new RuleBasedCollator( order );
                 collator.setStrength( Collator.PRIMARY );
                 m_sorter = new PageSorter( new CollatorComparator( collator ) );
-            }
-            catch( ParseException pe )
-            {
+            } catch( final ParseException pe ) {
                 log.info( "Failed to parse requested collator - using default ordering", pe );
-                m_sorter = context.getEngine().getPageManager().getPageSorter();
+                m_sorter = context.getEngine().getManager( PageManager.class ).getPageSorter();
             }
         }
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/BugReportHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/BugReportHandler.java
index b725f7d..37eeda2 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/BugReportHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/BugReportHandler.java
@@ -20,12 +20,13 @@ package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.RedirectException;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.preferences.Preferences;
 
@@ -72,7 +73,7 @@ public class BugReportHandler implements WikiPlugin {
     /**
      *  {@inheritDoc}
      */
-    public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
+    @Override public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
         final String title = params.get( PARAM_TITLE );
         String description = params.get( PARAM_DESCRIPTION );
         String version = params.get( PARAM_VERSION );
@@ -141,7 +142,7 @@ public class BugReportHandler implements WikiPlugin {
             final WikiPage newPage = new WikiPage( context.getEngine(), pageName );
             final WikiContext newContext = (WikiContext)context.clone();
             newContext.setPage( newPage );
-            context.getEngine().getPageManager().saveText( newContext, str.toString() );
+            context.getEngine().getManager( PageManager.class ).saveText( newContext, str.toString() );
 
             final MessageFormat formatter = new MessageFormat("");
             formatter.applyPattern( rb.getString("bugreporthandler.new") );
@@ -163,11 +164,11 @@ public class BugReportHandler implements WikiPlugin {
      */
     private synchronized String findNextPage( final WikiContext context, final String title, final String baseName ) {
         final String basicPageName = ( ( baseName != null ) ? baseName : "Bug" ) + MarkupParser.cleanLink( title );
-        final WikiEngine engine = context.getEngine();
+        final Engine engine = context.getEngine();
 
         String pageName = basicPageName;
         long   lastbug  = 2;
-        while( engine.getPageManager().wikiPageExists( pageName ) ) {
+        while( engine.getManager( PageManager.class ).wikiPageExists( pageName ) ) {
             pageName = basicPageName + lastbug++;
         }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Groups.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Groups.java
index 5a77dfc..6447a49 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Groups.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Groups.java
@@ -19,11 +19,12 @@
 package org.apache.wiki.plugin;
 
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
 import org.apache.wiki.auth.PrincipalComparator;
 import org.apache.wiki.auth.authorize.GroupManager;
+import org.apache.wiki.url.URLConstructor;
 
 import java.security.Principal;
 import java.util.Arrays;
@@ -46,10 +47,10 @@ public class Groups implements WikiPlugin {
     /**
      *  {@inheritDoc}
      */
-    public String execute( final WikiContext context, final Map<String, String> params ) throws PluginException {
+    @Override public String execute( final WikiContext context, final Map<String, String> params ) throws PluginException {
         // Retrieve groups, and sort by name
-        final WikiEngine engine = context.getEngine();
-        final GroupManager groupMgr = engine.getGroupManager();
+        final Engine engine = context.getEngine();
+        final GroupManager groupMgr = engine.getManager( GroupManager.class );
         final Principal[] groups = groupMgr.getRoles();
         Arrays.sort( groups, COMPARATOR );
 
@@ -59,7 +60,7 @@ public class Groups implements WikiPlugin {
             final String name = groups[ i ].getName();
             
             // Make URL
-            final String url = engine.getURLConstructor().makeURL( WikiContext.VIEW_GROUP, name,  null );
+            final String url = engine.getManager( URLConstructor.class ).makeURL( WikiContext.VIEW_GROUP, name,  null );
             
             // Create hyperlink
             s.append( "<a href=\"" );
@@ -76,4 +77,5 @@ public class Groups implements WikiPlugin {
         }
         return s.toString();
     }
+
 }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java
index a6cb392..4461a77 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java
@@ -30,8 +30,12 @@ import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiProvider;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.auth.AuthorizationManager;
+import org.apache.wiki.pages.PageManager;
+import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.util.HttpUtil;
 import org.apache.wiki.util.TextUtil;
+import org.apache.wiki.variables.VariableManager;
 
 import java.security.Principal;
 import java.util.Map;
@@ -139,9 +143,9 @@ public class IfPlugin implements WikiPlugin
     /**
      *  {@inheritDoc}
      */
-    public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
+    @Override public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
         return ifInclude( context,params )
-                ? context.getEngine().getRenderingManager().textToHTML( context, params.get( DefaultPluginManager.PARAM_BODY ) )
+                ? context.getEngine().getManager( RenderingManager.class ).textToHTML( context, params.get( DefaultPluginManager.PARAM_BODY ) )
                 : "" ;
     }
 
@@ -172,14 +176,14 @@ public class IfPlugin implements WikiPlugin
         include |= checkIP(context, ip);
 
         if( page != null ) {
-            final String content = context.getEngine().getPageManager().getPureText(page, WikiProvider.LATEST_VERSION).trim();
+            final String content = context.getEngine().getManager( PageManager.class ).getPureText(page, WikiProvider.LATEST_VERSION).trim();
             include |= checkContains(content,contains);
             include |= checkIs(content,is);
             include |= checkExists(context,page,exists);
         }
 
         if( var != null ) {
-            final String content = context.getEngine().getVariableManager().getVariable(context, var);
+            final String content = context.getEngine().getManager( VariableManager.class ).getVariable(context, var);
             include |= checkContains(content,contains);
             include |= checkIs(content,is);
             include |= checkVarExists(content,exists);
@@ -192,7 +196,7 @@ public class IfPlugin implements WikiPlugin
         if( exists == null ) {
             return false;
         }
-        return !context.getEngine().getPageManager().wikiPageExists( page ) ^ TextUtil.isPositive(exists);
+        return !context.getEngine().getManager( PageManager.class ).wikiPageExists( page ) ^ TextUtil.isPositive(exists);
     }
 
     private static boolean checkVarExists( final String varContent, final String exists ) {
@@ -219,9 +223,9 @@ public class IfPlugin implements WikiPlugin
                 invert = true;
             }
 
-            final Principal g = context.getEngine().getAuthorizationManager().resolvePrincipal( gname );
+            final Principal g = context.getEngine().getManager( AuthorizationManager.class ).resolvePrincipal( gname );
 
-            include |= context.getEngine().getAuthorizationManager().isUserInRole( context.getWikiSession(), g ) ^ invert;
+            include |= context.getEngine().getManager( AuthorizationManager.class ).isUserInRole( context.getWikiSession(), g ) ^ invert;
         }
         return include;
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Image.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Image.java
index 26142c9..16f7811 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Image.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Image.java
@@ -18,10 +18,8 @@
  */
 package org.apache.wiki.plugin;
 
-import java.util.Map;
-
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.plugin.WikiPlugin;
@@ -29,6 +27,8 @@ import org.apache.wiki.attachment.Attachment;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.util.TextUtil;
 
+import java.util.Map;
+
 /**
  *  Provides an image plugin for better control than is possible with a simple image inclusion.
  *  <br> Most parameters are equivalents of the html image attributes.
@@ -87,7 +87,7 @@ public class Image
      *  This method is used to clean away things like quotation marks which
      *  a malicious user could use to stop processing and insert javascript.
      */
-    private static String getCleanParameter( Map<String, String> params, String paramId )
+    private static String getCleanParameter( final Map<String, String> params, final String paramId )
     {
         return TextUtil.replaceEntities( params.get( paramId ) );
     }
@@ -95,23 +95,23 @@ public class Image
     /**
      *  {@inheritDoc}
      */
-    public String execute( WikiContext context, Map<String, String> params )
+    @Override public String execute( final WikiContext context, final Map<String, String> params )
         throws PluginException
     {
-        WikiEngine engine = context.getEngine();
+        final Engine engine = context.getEngine();
         String src     = getCleanParameter( params, PARAM_SRC );
-        String align   = getCleanParameter( params, PARAM_ALIGN );
-        String ht      = getCleanParameter( params, PARAM_HEIGHT );
-        String wt      = getCleanParameter( params, PARAM_WIDTH );
-        String alt     = getCleanParameter( params, PARAM_ALT );
-        String caption = getCleanParameter( params, PARAM_CAPTION );
-        String link    = getCleanParameter( params, PARAM_LINK );
+        final String align   = getCleanParameter( params, PARAM_ALIGN );
+        final String ht      = getCleanParameter( params, PARAM_HEIGHT );
+        final String wt      = getCleanParameter( params, PARAM_WIDTH );
+        final String alt     = getCleanParameter( params, PARAM_ALT );
+        final String caption = getCleanParameter( params, PARAM_CAPTION );
+        final String link    = getCleanParameter( params, PARAM_LINK );
         String target  = getCleanParameter( params, PARAM_TARGET );
-        String style   = getCleanParameter( params, PARAM_STYLE );
-        String cssclass= getCleanParameter( params, PARAM_CLASS );
+        final String style   = getCleanParameter( params, PARAM_STYLE );
+        final String cssclass= getCleanParameter( params, PARAM_CLASS );
         // String map     = getCleanParameter( params, PARAM_MAP );
-        String border  = getCleanParameter( params, PARAM_BORDER );
-        String title   = getCleanParameter( params, PARAM_TITLE );
+        final String border  = getCleanParameter( params, PARAM_BORDER );
+        final String title   = getCleanParameter( params, PARAM_TITLE );
 
         if( src == null )
         {
@@ -127,20 +127,20 @@ public class Image
 
         try
         {
-            AttachmentManager mgr = engine.getAttachmentManager();
-            Attachment        att = mgr.getAttachmentInfo( context, src );
+            final AttachmentManager mgr = engine.getManager( AttachmentManager.class );
+            final Attachment        att = mgr.getAttachmentInfo( context, src );
 
             if( att != null )
             {
                 src = context.getURL( WikiContext.ATTACH, att.getName() );
             }
         }
-        catch( ProviderException e )
+        catch( final ProviderException e )
         {
             throw new PluginException( "Attachment info failed: "+e.getMessage() );
         }
 
-        StringBuilder result = new StringBuilder();
+        final StringBuilder result = new StringBuilder();
 
         result.append( "<table border=\"0\" class=\"imageplugin\"" );
 
@@ -216,7 +216,7 @@ public class Image
         return result.toString();
     }
 
-    private boolean validTargetValue( String s )
+    private boolean validTargetValue( final String s )
     {
         if( s.equals("_blank")
                 || s.equals("_self")
@@ -227,7 +227,7 @@ public class Image
         }
         else if( s.length() > 0 ) // check [a-zA-z]
         {
-            char c = s.charAt(0);
+            final char c = s.charAt(0);
             return Character.isLowerCase(c) || Character.isUpperCase(c);
         }
         return false;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IndexPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IndexPlugin.java
index 79c0431..3147d49 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IndexPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IndexPlugin.java
@@ -19,23 +19,25 @@
 
 package org.apache.wiki.plugin;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.pages.PageManager;
+import org.apache.wiki.references.ReferenceManager;
 import org.jdom2.Element;
 import org.jdom2.Namespace;
 import org.jdom2.output.Format;
 import org.jdom2.output.XMLOutputter;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+
 /**
  *  A WikiPlugin that creates an index of pages according to a certain pattern.
  *  <br />
@@ -62,20 +64,20 @@ public class IndexPlugin extends AbstractReferralPlugin implements WikiPlugin
     /**
      * {@inheritDoc}
      */
-    public String execute( WikiContext context, Map<String,String> params ) throws PluginException
+    @Override public String execute( final WikiContext context, final Map<String,String> params ) throws PluginException
     {
-        String include = params.get(PARAM_INCLUDE);
-        String exclude = params.get(PARAM_EXCLUDE);
+        final String include = params.get(PARAM_INCLUDE);
+        final String exclude = params.get(PARAM_EXCLUDE);
         
-        Element masterDiv = getElement("div","index");     
-        Element indexDiv = getElement("div","header");
+        final Element masterDiv = getElement("div","index");
+        final Element indexDiv = getElement("div","header");
         masterDiv.addContent(indexDiv);
         try {
-            List<String> pages = listPages(context,include,exclude);
-            context.getEngine().getPageManager().getPageSorter().sort(pages);
+            final List<String> pages = listPages(context,include,exclude);
+            context.getEngine().getManager( PageManager.class ).getPageSorter().sort(pages);
             char initialChar = ' ';
             Element currentDiv = new Element("div",xmlns_XHTML);            
-            for ( String name : pages ) {
+            for ( final String name : pages ) {
                 if ( name.charAt(0) != initialChar ) {
                     if ( initialChar != ' ' ) {
                         indexDiv.addContent(" - ");
@@ -91,29 +93,29 @@ public class IndexPlugin extends AbstractReferralPlugin implements WikiPlugin
                 currentDiv.addContent(getLink(context.getURL(WikiContext.VIEW,name),name));
             }
             
-        } catch( ProviderException e ) {
+        } catch( final ProviderException e ) {
             log.warn("could not load page index",e);
             throw new PluginException( e.getMessage() );
         }
         // serialize to raw format string (no changes to whitespace)
-        XMLOutputter out = new XMLOutputter(Format.getRawFormat()); 
+        final XMLOutputter out = new XMLOutputter(Format.getRawFormat());
         return out.outputString(masterDiv);
     }
 
 
-    private Element getLink( String href, String content )
+    private Element getLink( final String href, final String content )
     {
-        Element a = new Element("a",xmlns_XHTML);
+        final Element a = new Element("a",xmlns_XHTML);
         a.setAttribute("href",href);
         a.addContent(content);
         return a;
     }
 
     
-    private Element makeHeader( String initialChar )
+    private Element makeHeader( final String initialChar )
     {
-        Element span = getElement("span","section");
-        Element a = new Element("a",xmlns_XHTML);
+        final Element span = getElement("span","section");
+        final Element a = new Element("a",xmlns_XHTML);
         a.setAttribute("id",initialChar);
         a.addContent(initialChar);
         span.addContent(a);
@@ -121,9 +123,9 @@ public class IndexPlugin extends AbstractReferralPlugin implements WikiPlugin
     }
 
     
-    private Element getElement( String gi, String classValue )
+    private Element getElement( final String gi, final String classValue )
     {
-        Element elt = new Element(gi,xmlns_XHTML);
+        final Element elt = new Element(gi,xmlns_XHTML);
         elt.setAttribute("class",classValue);
         return elt;
     }
@@ -138,13 +140,13 @@ public class IndexPlugin extends AbstractReferralPlugin implements WikiPlugin
      * @return A list containing page names which matched the filters.
      * @throws ProviderException
      */
-    private List<String> listPages( WikiContext context, String include, String exclude ) throws ProviderException {
-        Pattern includePtrn = include != null ? Pattern.compile( include ) : Pattern.compile(".*");
-        Pattern excludePtrn = exclude != null ? Pattern.compile( exclude ) : Pattern.compile("\\p{Cntrl}"); // there are no control characters in page names
-        List< String > result = new ArrayList<>();
-        Set< String > pages = context.getEngine().getReferenceManager().findCreated();
-        for ( Iterator<String> i = pages.iterator(); i.hasNext(); ) {
-            String pageName = i.next();
+    private List<String> listPages( final WikiContext context, final String include, final String exclude ) throws ProviderException {
+        final Pattern includePtrn = include != null ? Pattern.compile( include ) : Pattern.compile(".*");
+        final Pattern excludePtrn = exclude != null ? Pattern.compile( exclude ) : Pattern.compile("\\p{Cntrl}"); // there are no control characters in page names
+        final List< String > result = new ArrayList<>();
+        final Set< String > pages = context.getEngine().getManager( ReferenceManager.class ).findCreated();
+        for ( final Iterator<String> i = pages.iterator(); i.hasNext(); ) {
+            final String pageName = i.next();
             if ( excludePtrn.matcher( pageName ).matches() ) continue;
             if ( includePtrn.matcher( pageName ).matches() ) {
                 result.add( pageName );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
index d2b9449..e341041 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
@@ -19,14 +19,16 @@
 package org.apache.wiki.plugin;
 
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.plugin.WikiPlugin;
 import org.apache.wiki.auth.AuthorizationManager;
 import org.apache.wiki.auth.permissions.PermissionFactory;
+import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.preferences.Preferences;
+import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.util.HttpUtil;
 import org.apache.wiki.util.TextUtil;
 
@@ -81,23 +83,21 @@ public class InsertPage
     /**
      *  {@inheritDoc}
      */
-    @SuppressWarnings("unchecked")
-    public String execute( WikiContext context, Map<String, String> params )
-        throws PluginException
-    {
-        WikiEngine engine = context.getEngine();
+    @Override @SuppressWarnings("unchecked")
+    public String execute( final WikiContext context, final Map<String, String> params ) throws PluginException {
+        final Engine engine = context.getEngine();
 
-        StringBuilder res = new StringBuilder();
+        final StringBuilder res = new StringBuilder();
 
-        String clazz        = params.get( PARAM_CLASS );
-        String includedPage = params.get( PARAM_PAGENAME );
+        final String clazz        = params.get( PARAM_CLASS );
+        final String includedPage = params.get( PARAM_PAGENAME );
         String style        = params.get( PARAM_STYLE );
-        Boolean showOnce    = "once".equals( params.get( PARAM_SHOW ) );
-        String defaultstr   = params.get( PARAM_DEFAULT );
-        int    section      = TextUtil.parseIntParameter(params.get( PARAM_SECTION ), -1 );
+        final Boolean showOnce    = "once".equals( params.get( PARAM_SHOW ) );
+        final String defaultstr   = params.get( PARAM_DEFAULT );
+        final int    section      = TextUtil.parseIntParameter(params.get( PARAM_SECTION ), -1 );
         int    maxlen       = TextUtil.parseIntParameter(params.get( PARAM_MAXLENGTH ), -1 );
 
-        ResourceBundle rb = Preferences.getBundle( context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
+        final ResourceBundle rb = Preferences.getBundle( context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
 
 
         if( style == null ) style = DEFAULT_STYLE;
@@ -106,13 +106,13 @@ public class InsertPage
 
         if( includedPage != null )
         {
-            WikiPage page;
+            final WikiPage page;
             try {
                 final String pageName = engine.getFinalPageName( includedPage );
                 if( pageName != null ) {
-                    page = engine.getPageManager().getPage( pageName );
+                    page = engine.getManager( PageManager.class ).getPage( pageName );
                 } else {
-                    page = engine.getPageManager().getPage( includedPage );
+                    page = engine.getManager( PageManager.class ).getPage( includedPage );
                 }
             } catch( final ProviderException e ) {
                 res.append( "<span class=\"error\">Page could not be found by the page provider.</span>" );
@@ -136,17 +136,15 @@ public class InsertPage
                 }
                 else
                 {
-                    previousIncludes = new ArrayList<String>();
+                    previousIncludes = new ArrayList<>();
                 }
 
                 //
                 // Check for permissions
                 //
-                AuthorizationManager mgr = engine.getAuthorizationManager();
+                final AuthorizationManager mgr = engine.getManager( AuthorizationManager.class );
 
-                if( !mgr.checkPermission( context.getWikiSession(),
-                                          PermissionFactory.getPagePermission( page, "view") ) )
-                {
+                if( !mgr.checkPermission( context.getWikiSession(), PermissionFactory.getPagePermission( page, "view") ) ) {
                     res.append("<span class=\"error\">You do not have permission to view this included page.</span>");
                     return res.toString();
                 }
@@ -180,10 +178,10 @@ public class InsertPage
                  *  its own page, because we need the links to be correct.
                  */
 
-                WikiContext includedContext = (WikiContext) context.clone();
+                final WikiContext includedContext = (WikiContext) context.clone();
                 includedContext.setPage( page );
 
-                String pageData = engine.getPageManager().getPureText( page );
+                String pageData = engine.getManager( PageManager.class ).getPureText( page );
                 String moreLink = "";
 
                 if( section != -1 ) {
@@ -206,7 +204,7 @@ public class InsertPage
                 if( showOnce ) res.append("\" data-once=\""+cookieName );
                 res.append("\" >");
 
-                res.append( engine.getRenderingManager().textToHTML( includedContext, pageData ) );
+                res.append( engine.getManager( RenderingManager.class ).textToHTML( includedContext, pageData ) );
                 res.append( moreLink );
 
                 res.append("</div>");
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ListLocksPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ListLocksPlugin.java
index 5e1dd2b..d88b00e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ListLocksPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ListLocksPlugin.java
@@ -18,11 +18,6 @@
  */
 package org.apache.wiki.plugin;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.ResourceBundle;
-
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
@@ -30,29 +25,27 @@ import org.apache.wiki.pages.PageLock;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.preferences.Preferences;
 
+import java.util.List;
+import java.util.Map;
+import java.util.ResourceBundle;
+
 /**
- *  This is a plugin for the administrator: It allows him to see in a single
- *  glance who is editing what.
+ *  This is a plugin for the administrator: It allows him to see in a single glance who is editing what.
  *
  *  <p>Parameters : </p>
  *   NONE
  *  @since 2.0.22.
  */
-public class ListLocksPlugin
-    implements WikiPlugin
-{
+public class ListLocksPlugin implements WikiPlugin {
+
     /**
      *  {@inheritDoc}
      */
-    public String execute( WikiContext context, Map<String, String> params )
-        throws PluginException
-    {
-    	StringBuilder result = new StringBuilder();
-
-        PageManager mgr = context.getEngine().getPageManager();
-        List<PageLock> locks = mgr.getActiveLocks();
-        ResourceBundle rb = Preferences.getBundle( context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
-
+    @Override public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
+    	final StringBuilder result = new StringBuilder();
+        final PageManager mgr = context.getEngine().getManager( PageManager.class );
+        final List< PageLock > locks = mgr.getActiveLocks();
+        final ResourceBundle rb = Preferences.getBundle( context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
         result.append("<table class=\"wikitable\">\n");
         result.append("<tr>\n");
         result.append( "<th>" + rb.getString( "plugin.listlocks.page" ) + "</th><th>" + rb.getString( "plugin.listlocks.locked.by" )
@@ -60,18 +53,11 @@ public class ListLocksPlugin
                        + rb.getString( "plugin.listlocks.expires" ) + "</th>\n" );
         result.append("</tr>");
 
-        if( locks.size() == 0 )
-        {
-            result.append( "<tr><td colspan=\"4\" class=\"odd\">" + rb.getString( "plugin.listlocks.no.locks.exist" )
-                           + "</td></tr>\n" );
-        }
-        else
-        {
+        if( locks.size() == 0 ) {
+            result.append( "<tr><td colspan=\"4\" class=\"odd\">" + rb.getString( "plugin.listlocks.no.locks.exist" ) + "</td></tr>\n" );
+        } else {
             int rowNum = 1;
-            for( Iterator<PageLock> i = locks.iterator(); i.hasNext(); )
-            {
-                PageLock lock = i.next();
-
+            for( final PageLock lock : locks ) {
                 result.append( rowNum % 2 != 0 ? "<tr class=\"odd\">" : "<tr>" );
                 result.append( "<td>" + lock.getPage() + "</td>" );
                 result.append( "<td>" + lock.getLocker() + "</td>" );
@@ -81,9 +67,7 @@ public class ListLocksPlugin
                 rowNum++;
             }
         }
-
         result.append("</table>");
-
         return result.toString();
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Note.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Note.java
index c3c02b3..4f9147d 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Note.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Note.java
@@ -20,14 +20,15 @@
  */
 package org.apache.wiki.plugin;
 
-import java.util.Map;
-
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.ui.TemplateManager;
 import org.apache.wiki.util.TextUtil;
 
+import java.util.Map;
+
 /**
  * Outputs an image with the supplied text as the <tt>title</tt> which is shown as a tooltip by
  * most browsers. This is intended for short one line comments.
@@ -60,33 +61,31 @@ public class Note implements WikiPlugin
     /**
      *  {@inheritDoc}
      */
-    public String execute(WikiContext context, Map<String, String> params) throws PluginException
+    @Override public String execute( final WikiContext context, final Map<String, String> params) throws PluginException
     {
-        String commandline = params.get(DefaultPluginManager.PARAM_CMDLINE);
+        final String commandline = params.get(DefaultPluginManager.PARAM_CMDLINE);
         if (commandline == null || commandline.length() == 0)
         {
             return "Unable to obtain plugin command line from parameter'" + DefaultPluginManager.PARAM_CMDLINE + "'"; // I18N
         }
 
-        String commentImage = imageUrl(context);
+        final String commentImage = imageUrl(context);
 
-        String commentText = clean(commandline);
+        final String commentText = clean(commandline);
 
         return "<img src='" + commentImage + "' alt=\"Comment: " + 
                commentText + "\" title=\"" + commentText + "\"/>";
     }
 
-    private String imageUrl( WikiContext ctx )
+    private String imageUrl( final WikiContext ctx )
     {
-        WikiEngine engine = ctx.getEngine();
+        final Engine engine = ctx.getEngine();
         String commentImage = engine.getWikiProperties().getProperty(PROP_NOTE_IMAGE,
                                                                      DEFAULT_NOTE_IMAGE);
 
         commentImage = "images/"+commentImage;
         
-        String resource = engine.getTemplateManager().findResource( ctx, 
-                                                                    engine.getTemplateDir(), 
-                                                                    commentImage );
+        String resource = engine.getManager( TemplateManager.class ).findResource( ctx, engine.getTemplateDir(), commentImage );
         
         // JSPWIKI-876 Fixed error with Note Plugin. Only one preceding "/" is needed.
         if (resource != null && resource.startsWith("/")) {
@@ -101,7 +100,7 @@ public class Note implements WikiPlugin
      * 
      * @param commandline
      */
-    private String clean(String commandline)
+    private String clean( final String commandline)
     {
         return TextUtil.replaceEntities( commandline );
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/PageViewPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/PageViewPlugin.java
index 1981a44..58777b4 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/PageViewPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/PageViewPlugin.java
@@ -31,6 +31,7 @@ import org.apache.wiki.WikiBackgroundThread;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.InitializablePlugin;
 import org.apache.wiki.api.plugin.WikiPlugin;
@@ -40,6 +41,7 @@ import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.event.WikiPageEvent;
 import org.apache.wiki.event.WikiPageRenameEvent;
 import org.apache.wiki.references.ReferenceManager;
+import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.util.TextUtil;
 
 import java.io.File;
@@ -132,7 +134,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
      * 
      * @param engine The wiki engine.
      */
-    public void initialize( WikiEngine engine )
+    @Override public void initialize( final WikiEngine engine )
     {
 
         log.info( "initializing PageViewPlugin" );
@@ -160,9 +162,9 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
     /**
      *  {@inheritDoc}
      */
-    public String execute( WikiContext context, Map<String, String> params ) throws PluginException
+    @Override public String execute( final WikiContext context, final Map<String, String> params ) throws PluginException
     {
-        PageViewManager manager = c_singleton;
+        final PageViewManager manager = c_singleton;
         String result = STR_EMPTY;
 
         if( manager != null )
@@ -198,7 +200,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
 
         /** Comparator for descending sort on page count. */
         private final Comparator<Object> m_compareCountDescending = new Comparator<Object>() {
-            public int compare( Object o1, Object o2 )
+            @Override public int compare( final Object o1, final Object o2 )
             {
                 final int v1 = getCount( o1 );
                 final int v2 = getCount( o2 );
@@ -211,7 +213,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          * 
          * @param engine The wiki engine.
          */
-        public synchronized void initialize( WikiEngine engine )
+        public synchronized void initialize( final WikiEngine engine )
         {
             log.info( "initializing PageView Manager" );
 
@@ -223,7 +225,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
             {
                 // Load the counters into a collection
                 m_storage = new Properties();
-                m_counters = new TreeMap<String, Counter>();
+                m_counters = new TreeMap<>();
 
                 loadCounters();
             }
@@ -271,7 +273,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          * 
          * @param event The wiki event to inspect.
          */
-        public void actionPerformed( WikiEvent event )
+        @Override public void actionPerformed( final WikiEvent event )
         {
             if( event instanceof WikiEngineEvent )
             {
@@ -283,9 +285,9 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
             } 
             else if( (event instanceof WikiPageRenameEvent) && (event.getType() == WikiPageRenameEvent.PAGE_RENAMED) )
             {
-                String oldPageName = ((WikiPageRenameEvent) event).getOldPageName();
-                String newPageName = ((WikiPageRenameEvent) event).getNewPageName();
-                Counter oldCounter = m_counters.get(oldPageName);
+                final String oldPageName = ((WikiPageRenameEvent) event).getOldPageName();
+                final String newPageName = ((WikiPageRenameEvent) event).getNewPageName();
+                final Counter oldCounter = m_counters.get(oldPageName);
                 if ( oldCounter != null )
                 {
                     m_storage.remove(oldPageName);
@@ -297,7 +299,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
             }
             else if( (event instanceof WikiPageEvent) && (event.getType() == WikiPageEvent.PAGE_DELETED) )
             {
-                 String pageName = ((WikiPageEvent) event).getPageName();
+                 final String pageName = ((WikiPageEvent) event).getPageName();
                  m_storage.remove(pageName);
                  m_counters.remove(pageName);
             }
@@ -311,27 +313,26 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          * @return String Wiki page snippet
          * @throws PluginException Malformed pattern parameter.
          */
-        public String execute( WikiContext context, Map<String, String> params ) throws PluginException
-        {
-            WikiEngine engine = context.getEngine();
-            WikiPage page = context.getPage();
+        public String execute( final WikiContext context, final Map<String, String> params ) throws PluginException {
+            final Engine engine = context.getEngine();
+            final WikiPage page = context.getPage();
             String result = STR_EMPTY;
 
             if( page != null )
             {
                 // get parameters
-                String pagename = page.getName();
+                final String pagename = page.getName();
                 String count = params.get( PARAM_COUNT );
-                String show = params.get( PARAM_SHOW );
+                final String show = params.get( PARAM_SHOW );
                 int entries = TextUtil.parseIntParameter( params.get( PARAM_MAX_ENTRIES ), Integer.MAX_VALUE );
                 final int max = TextUtil.parseIntParameter( params.get( PARAM_MAX_COUNT ), Integer.MAX_VALUE );
                 final int min = TextUtil.parseIntParameter( params.get( PARAM_MIN_COUNT ), Integer.MIN_VALUE );
-                String sort = params.get( PARAM_SORT );
-                String body = params.get( DefaultPluginManager.PARAM_BODY );
-                Pattern[] exclude = compileGlobs( PARAM_EXCLUDE, params.get( PARAM_EXCLUDE ) );
-                Pattern[] include = compileGlobs( PARAM_INCLUDE, params.get( PARAM_INCLUDE ) );
-                Pattern[] refer = compileGlobs( PARAM_REFER, params.get( PARAM_REFER ) );
-                PatternMatcher matcher = (null != exclude || null != include || null != refer) ? new Perl5Matcher() : null;
+                final String sort = params.get( PARAM_SORT );
+                final String body = params.get( DefaultPluginManager.PARAM_BODY );
+                final Pattern[] exclude = compileGlobs( PARAM_EXCLUDE, params.get( PARAM_EXCLUDE ) );
+                final Pattern[] include = compileGlobs( PARAM_INCLUDE, params.get( PARAM_INCLUDE ) );
+                final Pattern[] refer = compileGlobs( PARAM_REFER, params.get( PARAM_REFER ) );
+                final PatternMatcher matcher = (null != exclude || null != include || null != refer) ? new Perl5Matcher() : null;
                 boolean increment = false;
 
                 // increment counter?
@@ -355,13 +356,13 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
 
                 if( refer != null )
                 {
-                    ReferenceManager refManager = engine.getReferenceManager();
+                    final ReferenceManager refManager = engine.getManager( ReferenceManager.class );
 
-                    Iterator< String > iter = refManager.findCreated().iterator();
+                    final Iterator< String > iter = refManager.findCreated().iterator();
 
                     while ( iter != null && iter.hasNext() )
                     {
-                        String name = iter.next();
+                        final String name = iter.next();
                         boolean use = false;
 
                         for( int n = 0; !use && n < refer.length; n++ )
@@ -371,13 +372,13 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
 
                         if( use )
                         {
-                            Collection< String > refs = engine.getReferenceManager().findReferrers( name );
+                            final Collection< String > refs = engine.getManager( ReferenceManager.class ).findReferrers( name );
 
                             if( refs != null && !refs.isEmpty() )
                             {
                                 if( referrers == null )
                                 {
-                                    referrers = new HashSet<String>();
+                                    referrers = new HashSet<>();
                                 }
                                 referrers.addAll( refs );
                             }
@@ -458,21 +459,21 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
 
                         if( sort != null && PARAM_COUNT.equals( sort ) )
                         {
-                            sorted = new TreeMap<String, Counter>( m_compareCountDescending );
+                            sorted = new TreeMap<>( m_compareCountDescending );
 
                             sorted.putAll( m_counters );
                         }
 
                         // build a messagebuffer with the list in wiki markup
-                        StringBuffer buf = new StringBuffer( header );
-                        MessageFormat fmt = new MessageFormat( line );
-                        Object[] args = new Object[] { pagename, STR_EMPTY, STR_EMPTY };
-                        Iterator< Entry< String, Counter > > iter = sorted.entrySet().iterator();
+                        final StringBuffer buf = new StringBuffer( header );
+                        final MessageFormat fmt = new MessageFormat( line );
+                        final Object[] args = new Object[] { pagename, STR_EMPTY, STR_EMPTY };
+                        final Iterator< Entry< String, Counter > > iter = sorted.entrySet().iterator();
 
                         while ( iter != null && 0 < entries && iter.hasNext() )
                         {
-                            Entry< String, Counter > entry = iter.next();
-                            String name = entry.getKey();
+                            final Entry< String, Counter > entry = iter.next();
+                            final String name = entry.getKey();
 
                             // check minimum/maximum count
                             final int value = entry.getValue().getValue();
@@ -506,7 +507,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
 
                             if( use )
                             {
-                                args[1] = engine.getRenderingManager().beautifyTitle( name );
+                                args[1] = engine.getManager( RenderingManager.class ).beautifyTitle( name );
                                 args[2] = entry.getValue();
 
                                 fmt.format( args, buf, null );
@@ -517,7 +518,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
                         buf.append( footer );
 
                         // let the engine render the list
-                        result = engine.getRenderingManager().textToHTML( context, buf.toString() );
+                        result = engine.getManager( RenderingManager.class ).textToHTML( context, buf.toString() );
                     }
                 }
             }
@@ -532,7 +533,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          * @return Pattern[] The compiled patterns, or <code>null</code>.
          * @throws PluginException On malformed patterns.
          */
-        private Pattern[] compileGlobs( String name, String value ) throws PluginException
+        private Pattern[] compileGlobs( final String name, final String value ) throws PluginException
         {
             Pattern[] result = null;
 
@@ -540,9 +541,9 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
             {
                 try
                 {
-                    PatternCompiler pc = new GlobCompiler();
+                    final PatternCompiler pc = new GlobCompiler();
 
-                    String[] ptrns = StringUtils.split( value, STR_COMMA );
+                    final String[] ptrns = StringUtils.split( value, STR_COMMA );
 
                     result = new Pattern[ptrns.length];
 
@@ -551,7 +552,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
                         result[n] = pc.compile( ptrns[n] );
                     }
                 }
-                catch( MalformedPatternException e )
+                catch( final MalformedPatternException e )
                 {
                     throw new PluginException( "Parameter " + name + " has a malformed pattern: " + e.getMessage() );
                 }
@@ -567,7 +568,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          * @param value String in which offset points.
          * @return int Adjusted offset into value.
          */
-        private int skipWhitespace( int offset, String value )
+        private int skipWhitespace( int offset, final String value )
         {
             while ( Character.isWhitespace( value.charAt( offset ) ) )
             {
@@ -582,7 +583,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          * @return int The page count for the given key.
          * @param key the key for the Counter
          */
-        protected int getCount( Object key )
+        protected int getCount( final Object key )
         {
             return m_counters.get( key ).getValue();
         }
@@ -594,17 +595,17 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
             if( m_counters != null && m_storage != null ) {
                 log.info( "Loading counters." );
                 synchronized( this ) {
-                    try( InputStream fis = new FileInputStream( new File( m_workDir, COUNTER_PAGE ) ) ) {
+                    try( final InputStream fis = new FileInputStream( new File( m_workDir, COUNTER_PAGE ) ) ) {
                         m_storage.load( fis );
-                    } catch( IOException ioe ) {
+                    } catch( final IOException ioe ) {
                         log.error( "Can't load page counter store: " + ioe.getMessage() + " , will create a new one!" );
                     }
 
                     // Copy the collection into a sorted map
-                    Iterator< Entry< Object, Object > > iter = m_storage.entrySet().iterator();
+                    final Iterator< Entry< Object, Object > > iter = m_storage.entrySet().iterator();
 
                     while ( iter != null && iter.hasNext() ) {
-                        Entry< ?, ? > entry = iter.next();
+                        final Entry< ?, ? > entry = iter.next();
                         m_counters.put( (String) entry.getKey(), new Counter( (String) entry.getValue() ) );
                     }
                     
@@ -626,7 +627,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
                         fos.flush();
 
                         m_dirty = false;
-                    } catch( IOException ioe ) {
+                    } catch( final IOException ioe ) {
                         log.error( "Couldn't store counters values: " + ioe.getMessage() );
                     }
                 }
@@ -640,7 +641,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          *         background thread.
          * @param thrd
          */
-        private synchronized boolean isRunning( Thread thrd )
+        private synchronized boolean isRunning( final Thread thrd )
         {
             return m_initialized && thrd == m_pageCountSaveThread;
         }
@@ -669,7 +670,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          * 
          * @param value Count value.
          */
-        public Counter( String value )
+        public Counter( final String value )
         {
             setValue( value );
         }
@@ -697,7 +698,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          * 
          * @param value String representation of the count.
          */
-        public void setValue( String value )
+        public void setValue( final String value )
         {
             m_count = NumberUtils.toInt( value );
         }
@@ -705,7 +706,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
         /**
          * @return String String representation of the count.
          */
-        public String toString()
+        @Override public String toString()
         {
             return String.valueOf( m_count );
         }
@@ -727,7 +728,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
          * @param interval Delay in seconds between saves.
          * @param pageViewManager
          */
-        public CounterSaveThread( WikiEngine engine, int interval, PageViewManager pageViewManager )
+        public CounterSaveThread( final WikiEngine engine, final int interval, final PageViewManager pageViewManager )
         {
 
             super( engine, interval );
@@ -743,7 +744,7 @@ public class PageViewPlugin extends AbstractReferralPlugin implements WikiPlugin
         /**
          * Save the page counters to file.
          */
-        public void backgroundTask()
+        @Override public void backgroundTask()
         {
 
             if( m_manager.isRunning( this ) )
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/RecentChangesPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/RecentChangesPlugin.java
index d68b0db..4351603 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/RecentChangesPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/RecentChangesPlugin.java
@@ -21,14 +21,16 @@ package org.apache.wiki.plugin;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
 import org.apache.wiki.attachment.Attachment;
 import org.apache.wiki.i18n.InternationalizationManager;
+import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.preferences.Preferences.TimeFormat;
+import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.util.TextUtil;
 import org.apache.wiki.util.XHTML;
 import org.apache.wiki.util.XhtmlUtil;
@@ -74,14 +76,14 @@ public class RecentChangesPlugin extends AbstractReferralPlugin implements WikiP
     /**
      * {@inheritDoc}
      */
-    public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
+    @Override public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
         final int since = TextUtil.parseIntParameter( params.get( "since" ), DEFAULT_DAYS );
         String spacing  = "4";
         boolean showAuthor = true;
         boolean showChangenote = true;
         String tablewidth = "4";
         
-        final WikiEngine engine = context.getEngine();
+        final Engine engine = context.getEngine();
 
         //
         //  Which format we want to see?
@@ -99,7 +101,7 @@ public class RecentChangesPlugin extends AbstractReferralPlugin implements WikiP
         log.debug("Calculating recent changes from "+sincedate.getTime());
 
         // FIXME: Should really have a since date on the getRecentChanges method.
-        Collection< WikiPage > changes = engine.getPageManager().getRecentChanges();
+        Collection< WikiPage > changes = engine.getManager( PageManager.class ).getRecentChanges();
         super.initialize( context, params );
         changes = filterWikiPageCollection( changes );
         
@@ -133,7 +135,7 @@ public class RecentChangesPlugin extends AbstractReferralPlugin implements WikiP
                 }
 
                 final String href = context.getURL( pageref instanceof Attachment ? WikiContext.ATTACH : WikiContext.VIEW, pageref.getName() );
-                Element link = XhtmlUtil.link( href, engine.getRenderingManager().beautifyTitle( pageref.getName() ) );
+                Element link = XhtmlUtil.link( href, engine.getManager( RenderingManager.class ).beautifyTitle( pageref.getName() ) );
                 final Element row = XhtmlUtil.element( XHTML.tr );
                 final Element col = XhtmlUtil.element( XHTML.td );
                 col.setAttribute( XHTML.ATTR_width, "30%" );
@@ -177,7 +179,7 @@ public class RecentChangesPlugin extends AbstractReferralPlugin implements WikiP
                     authorinfo.setAttribute( XHTML.ATTR_class, "author" );
 
                     if( author != null ) {
-                        if( engine.getPageManager().wikiPageExists( author ) ) {
+                        if( engine.getManager( PageManager.class ).wikiPageExists( author ) ) {
                             authorinfo.addContent( XhtmlUtil.link( context.getURL( WikiContext.VIEW, author ), author ) );
                         } else {
                             authorinfo.addContent( author );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferredPagesPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferredPagesPlugin.java
index a284660..ab4b122 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferredPagesPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferredPagesPlugin.java
@@ -26,10 +26,11 @@ import org.apache.oro.text.regex.PatternMatcher;
 import org.apache.oro.text.regex.Perl5Compiler;
 import org.apache.oro.text.regex.Perl5Matcher;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.references.ReferenceManager;
 import org.apache.wiki.util.TextUtil;
 
@@ -56,7 +57,7 @@ import java.util.Map;
 public class ReferredPagesPlugin implements WikiPlugin {
 
     private static final Logger log = Logger.getLogger( ReferredPagesPlugin.class );
-    private WikiEngine     m_engine;
+    private Engine         m_engine;
     private int            m_depth;
     private HashSet<String> m_exists  = new HashSet<>();
     private StringBuffer   m_result  = new StringBuffer(1024);
@@ -93,7 +94,7 @@ public class ReferredPagesPlugin implements WikiPlugin {
     /**
      *  {@inheritDoc}
      */
-    public String execute( final WikiContext context, final Map<String, String> params ) throws PluginException {
+    @Override public String execute( final WikiContext context, final Map<String, String> params ) throws PluginException {
         m_engine = context.getEngine();
         final WikiPage page = context.getPage();
         if( page == null ) {
@@ -185,11 +186,11 @@ public class ReferredPagesPlugin implements WikiPlugin {
         if( pagename == null ) {
             return;
         }
-        if( !m_engine.getPageManager().wikiPageExists(pagename) ) {
+        if( !m_engine.getManager( PageManager.class ).wikiPageExists(pagename) ) {
             return;
         }
 
-        final ReferenceManager mgr = m_engine.getReferenceManager();
+        final ReferenceManager mgr = m_engine.getManager( ReferenceManager.class );
         final Collection< String > allPages = mgr.findRefersTo( pagename );
         handleLinks( context, allPages, ++depth, pagename );
     }
@@ -205,7 +206,7 @@ public class ReferredPagesPlugin implements WikiPlugin {
         if( links != null )
             allLinks.addAll( links );
 
-        if( m_formatSort ) context.getEngine().getPageManager().getPageSorter().sort( allLinks );
+        if( m_formatSort ) context.getEngine().getManager( PageManager.class ).getPageSorter().sort( allLinks );
 
         for( final String link : allLinks ) {
             if( localLinkSet.contains( link ) ) {
@@ -213,7 +214,7 @@ public class ReferredPagesPlugin implements WikiPlugin {
             }
             localLinkSet.add( link );
 
-            if( !m_engine.getPageManager().wikiPageExists( link ) ) {
+            if( !m_engine.getManager( PageManager.class ).wikiPageExists( link ) ) {
                 continue; // hide links to non existing pages
             }
             if(  m_matcher.matches( link , m_excludePattern ) ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringPagesPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringPagesPlugin.java
index 51596ff..c889e92 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringPagesPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringPagesPlugin.java
@@ -23,6 +23,7 @@ import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.references.ReferenceManager;
 import org.apache.wiki.util.TextUtil;
@@ -69,12 +70,12 @@ public class ReferringPagesPlugin
     /**
      *  {@inheritDoc}
      */
-    public String execute( WikiContext context, Map<String, String> params )
+    @Override public String execute( final WikiContext context, final Map<String, String> params )
         throws PluginException
     {
-        ReferenceManager refmgr = context.getEngine().getReferenceManager();
+        final ReferenceManager refmgr = context.getEngine().getManager( ReferenceManager.class );
         String pageName = params.get( PARAM_PAGE );
-        ResourceBundle rb = Preferences.getBundle( context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
+        final ResourceBundle rb = Preferences.getBundle( context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
 
         StringBuilder result = new StringBuilder( 256 );
 
@@ -83,7 +84,7 @@ public class ReferringPagesPlugin
             pageName = context.getPage().getName();
         }
 
-        WikiPage page = context.getEngine().getPageManager().getPage( pageName );
+        final WikiPage page = context.getEngine().getManager( PageManager.class ).getPage( pageName );
 
         if( page != null )
         {
@@ -92,7 +93,7 @@ public class ReferringPagesPlugin
 
             super.initialize( context, params );
 
-            int items = TextUtil.parseIntParameter( params.get( PARAM_MAX ), ALL_ITEMS );
+            final int items = TextUtil.parseIntParameter( params.get( PARAM_MAX ), ALL_ITEMS );
 
             String extras = TextUtil.replaceEntities( params.get( PARAM_EXTRAS ) );
             if( extras == null )
@@ -113,7 +114,7 @@ public class ReferringPagesPlugin
 
                 if( items < links.size() && items > 0 )
                 {
-                    Object[] args = { "" + ( links.size() - items) };
+                    final Object[] args = { "" + ( links.size() - items) };
                     extras = MessageFormat.format(extras, args);
 
                     result.append( "<br />" );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringUndefinedPagesPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringUndefinedPagesPlugin.java
index 93a7916..af03f85 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringUndefinedPagesPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/ReferringUndefinedPagesPlugin.java
@@ -45,31 +45,31 @@ public class ReferringUndefinedPagesPlugin extends AbstractReferralPlugin {
     /** Parameter name for setting the text to show when the maximum items is overruled. Value is <tt>{@value}</tt>. */
     public static final String PARAM_EXTRAS = "extras";
 
-    public String execute(WikiContext context, Map<String, String> params) throws PluginException {
-        ResourceBundle rb = Preferences.getBundle(context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE);
+    @Override public String execute( final WikiContext context, final Map<String, String> params) throws PluginException {
+        final ResourceBundle rb = Preferences.getBundle(context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE);
 
-        ReferenceManager referenceManager = context.getEngine().getReferenceManager();
+        final ReferenceManager referenceManager = context.getEngine().getManager( ReferenceManager.class );
 
-        int items = TextUtil.parseIntParameter(params.get(PARAM_MAX), ALL_ITEMS);
+        final int items = TextUtil.parseIntParameter(params.get(PARAM_MAX), ALL_ITEMS);
         String extras = params.get(PARAM_EXTRAS);
         if (extras == null) {
             extras = rb.getString("referringundefinedpagesplugin.more");
         }
 
-        StringBuilder resultHTML = new StringBuilder();
+        final StringBuilder resultHTML = new StringBuilder();
 
-        Collection<String> uncreatedPages = referenceManager.findUncreated();
+        final Collection<String> uncreatedPages = referenceManager.findUncreated();
 
         super.initialize(context, params);
 
         Collection<String> result = null;
 
-        TreeMap< String, String > sortedMap = new TreeMap<>();
+        final TreeMap< String, String > sortedMap = new TreeMap<>();
         if (uncreatedPages != null) {
-            for (String uncreatedPageName : uncreatedPages) {
-                Collection<String> referrers = referenceManager.findReferrers(uncreatedPageName);
+            for ( final String uncreatedPageName : uncreatedPages) {
+                final Collection<String> referrers = referenceManager.findReferrers(uncreatedPageName);
                 if (referrers != null) {
-                    for (String referringPage : referrers) {
+                    for ( final String referringPage : referrers) {
                         sortedMap.put(referringPage, "");
                     }
                 }
@@ -79,13 +79,13 @@ public class ReferringUndefinedPagesPlugin extends AbstractReferralPlugin {
 
         result = super.filterAndSortCollection(result);
 
-        String wikitext = wikitizeCollection(result, m_separator, items);
+        final String wikitext = wikitizeCollection(result, m_separator, items);
 
         resultHTML.append(makeHTML(context, wikitext));
 
         // add the more.... text
         if (items < result.size() && items > 0) {
-            Object[] args = {"" + (result.size() - items)};
+            final Object[] args = {"" + (result.size() - items)};
             extras = MessageFormat.format(extras, args);
 
             resultHTML.append("<br/>" + extras + "<br/>");
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Search.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Search.java
index 571189d..0006a51 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/Search.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/Search.java
@@ -20,10 +20,12 @@ package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.render.RenderingManager;
+import org.apache.wiki.search.SearchManager;
 import org.apache.wiki.search.SearchResult;
 import org.apache.wiki.util.XHTML;
 import org.apache.wiki.util.XhtmlUtil;
@@ -67,13 +69,13 @@ public class Search implements WikiPlugin {
      */
     @SuppressWarnings("unchecked")
     @Override
-    public String execute( WikiContext context, Map<String, String> params ) throws PluginException {
+    public String execute( final WikiContext context, final Map<String, String> params ) throws PluginException {
         int maxItems = Integer.MAX_VALUE;
         Collection<SearchResult> results = null;
 
-        String queryString = params.get( PARAM_QUERY );
+        final String queryString = params.get( PARAM_QUERY );
         String set         = params.get( PARAM_SET );
-        String max         = params.get( PARAM_MAX );
+        final String max         = params.get( PARAM_MAX );
 
         if ( set == null ) set = DEFAULT_SETNAME;
         if ( max != null ) maxItems = Integer.parseInt( max );
@@ -89,7 +91,7 @@ public class Search implements WikiPlugin {
                 results = doBasicQuery( context, queryString );
                 context.setVariable( set, results );
             }
-            catch( Exception e )
+            catch( final Exception e )
             {
                 return "<div class='error'>"+e.getMessage()+"</div>\n";
             }
@@ -105,21 +107,21 @@ public class Search implements WikiPlugin {
         return res;
     }
 
-    private Collection<SearchResult> doBasicQuery( WikiContext context, String query )
+    private Collection<SearchResult> doBasicQuery( final WikiContext context, final String query )
         throws ProviderException, IOException
     {
         log.debug("Searching for string "+query);
 
-        Collection<SearchResult> list = context.getEngine().getSearchManager().findPages( query, context );
+        final Collection<SearchResult> list = context.getEngine().getManager( SearchManager.class ).findPages( query, context );
 
         return list;
     }
 
-    private String renderResults( Collection<SearchResult> results, WikiContext context, int maxItems )
+    private String renderResults( final Collection<SearchResult> results, final WikiContext context, final int maxItems )
     {
-        WikiEngine engine = context.getEngine();
+        final Engine engine = context.getEngine();
 
-        Element table = XhtmlUtil.element(XHTML.table);
+        final Element table = XhtmlUtil.element(XHTML.table);
         //table.setAttribute(XHTML.ATTR_border,"0");
         //table.setAttribute(XHTML.ATTR_cellpadding,"4");
         table.setAttribute(XHTML.ATTR_class,"wikitable search-result");
@@ -127,26 +129,26 @@ public class Search implements WikiPlugin {
         Element row = XhtmlUtil.element(XHTML.tr);
         table.addContent(row);
 
-        Element th1 = XhtmlUtil.element(XHTML.th,"Page");
+        final Element th1 = XhtmlUtil.element(XHTML.th,"Page");
         th1.setAttribute(XHTML.ATTR_width,"30%");
         th1.setAttribute(XHTML.ATTR_align,"left");
         row.addContent(th1);
 
-        Element th2 = XhtmlUtil.element(XHTML.th,"Score");
+        final Element th2 = XhtmlUtil.element(XHTML.th,"Score");
         th2.setAttribute(XHTML.ATTR_align,"left");
         row.addContent(th2);
 
         int idx = 0;
-        for ( Iterator<SearchResult> i = results.iterator(); i.hasNext() && idx++ <= maxItems; )
+        for ( final Iterator<SearchResult> i = results.iterator(); i.hasNext() && idx++ <= maxItems; )
         {
-            SearchResult sr = i.next();
+            final SearchResult sr = i.next();
             row = XhtmlUtil.element(XHTML.tr);
 
-            Element name = XhtmlUtil.element(XHTML.td);
+            final Element name = XhtmlUtil.element(XHTML.td);
             name.setAttribute(XHTML.ATTR_width,"30%");
 
             name.addContent( XhtmlUtil.link(context.getURL( WikiContext.VIEW, sr.getPage().getName()),
-                    engine.getRenderingManager().beautifyTitle(sr.getPage().getName())) );
+                    engine.getManager( RenderingManager.class ).beautifyTitle(sr.getPage().getName())) );
 
             row.addContent(name);
 
@@ -159,9 +161,9 @@ public class Search implements WikiPlugin {
         {
             row = XhtmlUtil.element(XHTML.tr);
 
-            Element td = XhtmlUtil.element(XHTML.td);
+            final Element td = XhtmlUtil.element(XHTML.td);
             td.setAttribute(XHTML.ATTR_colspan,"2");
-            Element b = XhtmlUtil.element(XHTML.b,"No results");
+            final Element b = XhtmlUtil.element(XHTML.b,"No results");
             td.addContent(b);
 
             row.addContent(td);
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/SessionsPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/SessionsPlugin.java
index 141a69e..aba5a0b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/SessionsPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/SessionsPlugin.java
@@ -18,18 +18,18 @@
  */
 package org.apache.wiki.plugin;
 
-import java.security.Principal;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiSession;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
 import org.apache.wiki.util.TextUtil;
 
+import java.security.Principal;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
 /**
  *  <p>Displays information about active wiki sessions. The parameter
  *  <code>property</code> specifies what information is displayed.
@@ -56,16 +56,16 @@ public class SessionsPlugin
     /**
      *  {@inheritDoc}
      */
-    public String execute( WikiContext context, Map<String, String> params )
+    @Override public String execute( final WikiContext context, final Map<String, String> params )
         throws PluginException
     {
-        WikiEngine engine = context.getEngine();
-        String prop = params.get( PARAM_PROP );
+        final Engine engine = context.getEngine();
+        final String prop = params.get( PARAM_PROP );
 
         if ( "users".equals( prop ) )
         {
-            Principal[] principals = WikiSession.userPrincipals( engine );
-            StringBuilder s = new StringBuilder();
+            final Principal[] principals = WikiSession.userPrincipals( engine );
+            final StringBuilder s = new StringBuilder();
             for ( int i = 0; i < principals.length; i++ )
             {
                 s.append(principals[i].getName() + ", ");
@@ -79,13 +79,13 @@ public class SessionsPlugin
         // number of sessions for each user)
         if ("distinctUsers".equals(prop))
         {
-            Principal[] principals = WikiSession.userPrincipals(engine);
+            final Principal[] principals = WikiSession.userPrincipals(engine);
             // we do not assume that the principals are sorted, so first count
             // them :
-            HashMap<String,Integer> distinctPrincipals = new HashMap<String,Integer>();
+            final HashMap<String,Integer> distinctPrincipals = new HashMap<>();
             for (int i = 0; i < principals.length; i++)
             {
-                String principalName = principals[i].getName();
+                final String principalName = principals[i].getName();
 
                 if (distinctPrincipals.containsKey(principalName))
                 {
@@ -102,11 +102,11 @@ public class SessionsPlugin
             }
             //
             //
-            StringBuilder s = new StringBuilder();
-            Iterator<Map.Entry<String, Integer>> entries = distinctPrincipals.entrySet().iterator();
+            final StringBuilder s = new StringBuilder();
+            final Iterator<Map.Entry<String, Integer>> entries = distinctPrincipals.entrySet().iterator();
             while (entries.hasNext())
             {
-                Map.Entry<String, Integer> entry = entries.next();
+                final Map.Entry<String, Integer> entry = entries.next();
                 s.append( entry.getKey() + "(" + entry.getValue().toString() + "), " );
             }
             // remove the last comma and blank :
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/TableOfContents.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/TableOfContents.java
index 79bc6c2..4b082d4 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/TableOfContents.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/TableOfContents.java
@@ -21,15 +21,17 @@ package org.apache.wiki.plugin;
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.engine.FilterManager;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.parser.Heading;
 import org.apache.wiki.parser.HeadingListener;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.preferences.Preferences;
+import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.util.TextUtil;
 import org.apache.wiki.variables.VariableManager;
 
@@ -80,7 +82,7 @@ public class TableOfContents
     /**
      *  {@inheritDoc}
      */
-    public void headingAdded( WikiContext context, Heading hd )
+    @Override public void headingAdded( final WikiContext context, final Heading hd )
     {
         log.debug("HD: "+hd.m_level+", "+hd.m_titleText+", "+hd.m_titleAnchor);
 
@@ -118,10 +120,10 @@ public class TableOfContents
             m_level2Index = 0;
         }
 
-        String titleSection = hd.m_titleSection.replace( '%', '_' );
-        String pageName = context.getEngine().encodeName(context.getPage().getName()).replace( '%', '_' );
+        final String titleSection = hd.m_titleSection.replace( '%', '_' );
+        final String pageName = context.getEngine().encodeName(context.getPage().getName()).replace( '%', '_' );
 
-        String sectref = "#section-"+pageName+"-"+titleSection;
+        final String sectref = "#section-"+pageName+"-"+titleSection;
 
         m_buf.append( "<a class=\"wikipage\" href=\"" + sectref + "\">" );
         if (m_usingNumberedList)
@@ -149,12 +151,12 @@ public class TableOfContents
     /**
      *  {@inheritDoc}
      */
-    public String execute( WikiContext context, Map<String, String> params )
+    @Override public String execute( final WikiContext context, final Map<String, String> params )
         throws PluginException
     {
-        WikiEngine engine = context.getEngine();
-        WikiPage   page   = context.getPage();
-        ResourceBundle rb = Preferences.getBundle( context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
+        final Engine engine = context.getEngine();
+        final WikiPage page = context.getPage();
+        final ResourceBundle rb = Preferences.getBundle( context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
 
         if( context.getVariable( VAR_ALREADY_PROCESSING ) != null )
         {
@@ -162,12 +164,12 @@ public class TableOfContents
             return "<a href=\"#section-TOC\" class=\"toc\">"+rb.getString("tableofcontents.title")+"</a>";
         }
 
-        StringBuilder sb = new StringBuilder();
+        final StringBuilder sb = new StringBuilder();
 
         sb.append("<div class=\"toc\">\n");
         sb.append("<div class=\"collapsebox\">\n");
 
-        String title = params.get(PARAM_TITLE);
+        final String title = params.get(PARAM_TITLE);
         sb.append("<h4 id=\"section-TOC\">");
         if( title != null )
         {
@@ -183,7 +185,7 @@ public class TableOfContents
         m_usingNumberedList = false;
         if (params.containsKey(PARAM_NUMBERED))
         {
-            String numbered = params.get(PARAM_NUMBERED);
+            final String numbered = params.get(PARAM_NUMBERED);
             if (numbered.equalsIgnoreCase("true"))
             {
                 m_usingNumberedList = true;
@@ -198,7 +200,7 @@ public class TableOfContents
         if (m_usingNumberedList)
         {
             int start = 0;
-            String startStr = params.get(PARAM_START);
+            final String startStr = params.get(PARAM_START);
             if ((startStr != null) && (startStr.matches("^\\d+$")))
             {
                 start = Integer.parseInt(startStr);
@@ -216,12 +218,12 @@ public class TableOfContents
         }
 
         try {
-            String wikiText = engine.getPageManager().getPureText( page );
-            final boolean runFilters = "true".equals( engine.getVariableManager().getValue( context, VariableManager.VAR_RUNFILTERS, "true" ) );
+            String wikiText = engine.getManager( PageManager.class ).getPureText( page );
+            final boolean runFilters = "true".equals( engine.getManager( VariableManager.class ).getValue( context, VariableManager.VAR_RUNFILTERS, "true" ) );
 
             if( runFilters ) {
 				try {
-					final FilterManager fm = engine.getFilterManager();
+					final FilterManager fm = engine.getManager( FilterManager.class );
 					wikiText = fm.doPreTranslateFiltering(context, wikiText);
 
 				} catch( final Exception e ) {
@@ -232,7 +234,7 @@ public class TableOfContents
 
             context.setVariable( VAR_ALREADY_PROCESSING, "x" );
 
-            final MarkupParser parser = engine.getRenderingManager().getParser( context, wikiText );
+            final MarkupParser parser = engine.getManager( RenderingManager.class ).getParser( context, wikiText );
             parser.addHeadingListener( this );
             parser.parse();
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/UndefinedPagesPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/UndefinedPagesPlugin.java
index d760a20..642f637 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/UndefinedPagesPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/UndefinedPagesPlugin.java
@@ -40,8 +40,8 @@ public class UndefinedPagesPlugin extends AbstractReferralPlugin {
     /**
      *  {@inheritDoc}
      */
-    public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
-        final ReferenceManager refmgr = context.getEngine().getReferenceManager();
+    @Override public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
+        final ReferenceManager refmgr = context.getEngine().getManager( ReferenceManager.class );
         super.initialize( context, params );
 
         Collection< String > links = refmgr.findUncreated();
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/UnusedPagesPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/UnusedPagesPlugin.java
index a979d8d..46e9332 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/UnusedPagesPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/UnusedPagesPlugin.java
@@ -24,7 +24,6 @@ import org.apache.wiki.references.ReferenceManager;
 import org.apache.wiki.util.TextUtil;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 /**
@@ -36,58 +35,36 @@ import java.util.Map;
  *  <li><b>separator</b> - how to separate generated links; default is a wikitext line break,  producing a vertical list</li>
  * <li><b> maxwidth</b> - maximum width, in chars, of generated links.</li>
  * </ul>
- *
  */
-public class UnusedPagesPlugin
-    extends AbstractReferralPlugin
-{
-    /**
-     *  If set to "true", attachments are excluded from display.  Value is {@value}.
-     */
+public class UnusedPagesPlugin extends AbstractReferralPlugin {
+
+    /** If set to "true", attachments are excluded from display.  Value is {@value}. */
     public static final String PARAM_EXCLUDEATTS = "excludeattachments";
 
     /**
      *  {@inheritDoc}
      */
-    public String execute( WikiContext context, Map<String, String> params )
-        throws PluginException
-    {
-        ReferenceManager refmgr = context.getEngine().getReferenceManager();
-        Collection<String> links = refmgr.findUnreferenced();
-        //
+    @Override public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
+        final ReferenceManager refmgr = context.getEngine().getManager( ReferenceManager.class );
+        Collection< String > links = refmgr.findUnreferenced();
+
         // filter out attachments if "excludeattachments" was requested:
-        //
-        String prop = params.get( PARAM_EXCLUDEATTS );
-        if( TextUtil.isPositive(prop) )
-        {
-            //  remove links to attachments (recognizable by a slash in it)
-            Iterator< String > iterator = links.iterator();
-            while( iterator.hasNext() )
-            {
-                String link = iterator.next();
-                if (link.indexOf("/")!=-1)
-                {
-                    iterator.remove();
-                }
-            }
+        final String prop = params.get( PARAM_EXCLUDEATTS );
+        if( TextUtil.isPositive( prop ) ) {
+            // remove links to attachments (recognizable by a slash in it)
+            links.removeIf( link -> link.contains( "/" ) );
         }
 
         super.initialize( context, params );
-
         links = filterAndSortCollection( links );
 
-        String wikitext = null;
-
-        if (m_show.equals(PARAM_SHOW_VALUE_COUNT))
-        {
+        String wikitext;
+        if( m_show.equals( PARAM_SHOW_VALUE_COUNT ) ) {
             wikitext = "" + links.size();
-            if (m_lastModified && links.size()!=0)
-            {
-                wikitext = links.size() + " (" + m_dateFormat.format(m_dateLastModified) + ")";
+            if( m_lastModified && links.size() != 0 ) {
+                wikitext = links.size() + " (" + m_dateFormat.format( m_dateLastModified ) + ")";
             }
-        }
-        else
-        {
+        } else {
             wikitext = wikitizeCollection( links, m_separator, ALL_ITEMS );
         }
         return makeHTML( context, wikitext );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogArchivePlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogArchivePlugin.java
index 1e3ae87..857bb9e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogArchivePlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogArchivePlugin.java
@@ -18,26 +18,23 @@
  */
 package org.apache.wiki.plugin;
 
+import org.apache.wiki.WikiContext;
+import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.exceptions.PluginException;
+import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.util.TextUtil;
+
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
-import org.apache.log4j.Logger;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
-import org.apache.wiki.WikiPage;
-import org.apache.wiki.api.exceptions.PluginException;
-import org.apache.wiki.api.exceptions.ProviderException;
-import org.apache.wiki.api.plugin.WikiPlugin;
-import org.apache.wiki.util.TextUtil;
-
 /**
  *  Creates a list of all weblog entries on a monthly basis.
  *
@@ -48,9 +45,7 @@ import org.apache.wiki.util.TextUtil;
  *
  *  @since 1.9.21
  */
-public class WeblogArchivePlugin implements WikiPlugin
-{
-    private static Logger     log = Logger.getLogger(WeblogArchivePlugin.class);
+public class WeblogArchivePlugin implements WikiPlugin {
 
     /** Parameter name for setting the page.  Value is <tt>{@value}</tt>. */
     public static final String PARAM_PAGE = "page";
@@ -60,14 +55,10 @@ public class WeblogArchivePlugin implements WikiPlugin
     /**
      *  {@inheritDoc}
      */
-    public String execute( WikiContext context, Map<String, String> params )
-        throws PluginException
-    {
-        WikiEngine engine = context.getEngine();
+    @Override public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
+        final Engine engine = context.getEngine();
 
-        //
         //  Parameters
-        //
         String weblogName = params.get( PARAM_PAGE );
 
         if( weblogName == null ) weblogName = context.getPage().getName();
@@ -77,82 +68,48 @@ public class WeblogArchivePlugin implements WikiPlugin
                                                 context.getURL( WikiContext.VIEW, weblogName,
                                                                 "weblog.startDate='ddMMyy'&amp;weblog.days=%d")+"'");
 
-        StringBuilder sb = new StringBuilder();
-
+        final StringBuilder sb = new StringBuilder();
         sb.append( "<div class=\"weblogarchive\">\n" );
 
-
-        //
         //  Collect months that have blog entries
-        //
-
-        try
-        {
-            Collection< Calendar > months = collectMonths( engine, weblogName );
-            int year = 0;
-
-            //
-            //  Output proper HTML.
-            //
+        final Collection< Calendar > months = collectMonths( engine, weblogName );
+        int year = 0;
 
-            sb.append( "<ul>\n" );
+        //  Output proper HTML.
+        sb.append( "<ul>\n" );
 
-            if( months.size() > 0 )
-            {
-                year = (months.iterator().next()).get( Calendar.YEAR );
-
-                sb.append( "<li class=\"archiveyear\">"+year+"</li>\n" );
-            }
-
-            for( Iterator< Calendar > i = months.iterator(); i.hasNext(); )
-            {
-                Calendar cal = i.next();
-
-                if( cal.get( Calendar.YEAR ) != year )
-                {
-                    year = cal.get( Calendar.YEAR );
-
-                    sb.append( "<li class=\"archiveyear\">"+year+"</li>\n" );
-                }
-
-                sb.append( "  <li>" );
-
-                sb.append( getMonthLink( cal ) );
+        if( months.size() > 0 ) {
+            year = ( months.iterator().next() ).get( Calendar.YEAR );
+            sb.append( "<li class=\"archiveyear\">" + year + "</li>\n" );
+        }
 
-                sb.append( "</li>\n" );
+        for( final Calendar cal : months ) {
+            if( cal.get( Calendar.YEAR ) != year ) {
+                year = cal.get( Calendar.YEAR );
+                sb.append( "<li class=\"archiveyear\">" + year + "</li>\n" );
             }
-
-            sb.append( "</ul>\n" );
-        }
-        catch( ProviderException ex )
-        {
-            log.info( "Cannot get archive", ex );
-            sb.append("Cannot get archive: "+ex.getMessage());
+            sb.append( "  <li>" );
+            sb.append( getMonthLink( cal ) );
+            sb.append( "</li>\n" );
         }
 
+        sb.append( "</ul>\n" );
         sb.append( "</div>\n" );
-
         return sb.toString();
     }
 
-    private SortedSet< Calendar > collectMonths( WikiEngine engine, String page )
-        throws ProviderException
-    {
-        Comparator< Calendar > comp = new ArchiveComparator();
-        TreeSet<Calendar> res = new TreeSet<Calendar>( comp );
-
-        WeblogPlugin pl = new WeblogPlugin();
+    private SortedSet< Calendar > collectMonths( final Engine engine, final String page ) {
+        final Comparator< Calendar > comp = new ArchiveComparator();
+        final TreeSet<Calendar> res = new TreeSet<>( comp );
 
-        List< WikiPage > blogEntries = pl.findBlogEntries( engine, page, new Date(0L), new Date() );
+        final WeblogPlugin pl = new WeblogPlugin();
 
-        for( Iterator< WikiPage > i = blogEntries.iterator(); i.hasNext(); )
-        {
-            WikiPage p = i.next();
+        final List< WikiPage > blogEntries = pl.findBlogEntries( engine, page, new Date(0L), new Date() );
 
+        for( final WikiPage p : blogEntries ) {
             // FIXME: Not correct, should parse page creation time.
-
-            Date d = p.getLastModified();
-            Calendar cal = Calendar.getInstance();
+            final Date d = p.getLastModified();
+            final Calendar cal = Calendar.getInstance();
             cal.setTime( d );
             res.add( cal );
         }
@@ -160,10 +117,10 @@ public class WeblogArchivePlugin implements WikiPlugin
         return res;
     }
 
-    private String getMonthLink( Calendar day )
+    private String getMonthLink( final Calendar day )
     {
-        SimpleDateFormat monthfmt = new SimpleDateFormat( "MMMM" );
-        String result;
+        final SimpleDateFormat monthfmt = new SimpleDateFormat( "MMMM" );
+        final String result;
 
         if( m_monthUrlFormat == null )
         {
@@ -171,9 +128,9 @@ public class WeblogArchivePlugin implements WikiPlugin
         }
         else
         {
-            Calendar cal = (Calendar)day.clone();
-            int firstDay = cal.getActualMinimum( Calendar.DATE );
-            int lastDay  = cal.getActualMaximum( Calendar.DATE );
+            final Calendar cal = (Calendar)day.clone();
+            final int firstDay = cal.getActualMinimum( Calendar.DATE );
+            final int lastDay  = cal.getActualMaximum( Calendar.DATE );
 
             cal.set( Calendar.DATE, lastDay );
             String url = m_monthUrlFormat.format( cal.getTime() );
@@ -194,7 +151,7 @@ public class WeblogArchivePlugin implements WikiPlugin
      */
     private static class ArchiveComparator implements Comparator< Calendar > {
 
-        public int compare( Calendar a, Calendar b )
+        @Override public int compare( final Calendar a, final Calendar b )
         {
             if( a == null || b == null )
             {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java
index 7e71e6e..706b53f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogEntryPlugin.java
@@ -20,12 +20,13 @@ package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.plugin.WikiPlugin;
 import org.apache.wiki.pages.PageLock;
+import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.util.TextUtil;
 
@@ -49,17 +50,19 @@ import java.util.ResourceBundle;
 public class WeblogEntryPlugin implements WikiPlugin {
 
     private static final Logger log = Logger.getLogger(WeblogEntryPlugin.class);
-    private static final int MAX_BLOG_ENTRIES = 10000; // Just a precaution.
+    private static final int MAX_BLOG_ENTRIES = 10_000; // Just a precaution.
 
     /**
      * Parameter name for setting the entrytext  Value is <tt>{@value}</tt>.
      */
     public static final String PARAM_ENTRYTEXT = "entrytext";
-    /**
+
+    /*
      * Optional parameter: page that actually contains the blog. This lets us provide a "new entry" link for a blog page
      * somewhere else than on the page itself.
      */
     // "page" for uniform naming with WeblogPlugin...
+    
     /**
      * Parameter name for setting the page Value is <tt>{@value}</tt>.
      */
@@ -73,7 +76,7 @@ public class WeblogEntryPlugin implements WikiPlugin {
      * @return A new name.
      * @throws ProviderException If something goes wrong.
      */
-    public String getNewEntryPage( final WikiEngine engine, final String blogName ) throws ProviderException {
+    public String getNewEntryPage( final Engine engine, final String blogName ) throws ProviderException {
         final SimpleDateFormat fmt = new SimpleDateFormat(WeblogPlugin.DEFAULT_DATEFORMAT);
         final String today = fmt.format(new Date());
         final int entryNum = findFreeEntry( engine, blogName, today );
@@ -84,9 +87,10 @@ public class WeblogEntryPlugin implements WikiPlugin {
     /**
      * {@inheritDoc}
      */
+    @Override
     public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
         final ResourceBundle rb = Preferences.getBundle(context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE);
-        final WikiEngine engine = context.getEngine();
+        final Engine engine = context.getEngine();
 
         String weblogName = params.get(PARAM_BLOGNAME);
         if (weblogName == null) {
@@ -102,8 +106,8 @@ public class WeblogEntryPlugin implements WikiPlugin {
         return "<a href=\"" + url + "\">" + entryText + "</a>";
     }
 
-    private int findFreeEntry( final WikiEngine engine, final String baseName, final String date ) throws ProviderException {
-        final Collection< WikiPage > everyone = engine.getPageManager().getAllPages();
+    private int findFreeEntry( final Engine engine, final String baseName, final String date ) throws ProviderException {
+        final Collection< WikiPage > everyone = engine.getManager( PageManager.class ).getAllPages();
         final String startString = WeblogPlugin.makeEntryPage(baseName, date, "");
         int max = 0;
 
@@ -125,7 +129,7 @@ public class WeblogEntryPlugin implements WikiPlugin {
         int idx = max + 1;
         while( idx < MAX_BLOG_ENTRIES ) {
             final WikiPage page = new WikiPage( engine, WeblogPlugin.makeEntryPage( baseName, date, Integer.toString( idx ) ) );
-            final PageLock lock = engine.getPageManager().getCurrentLock(page);
+            final PageLock lock = engine.getManager( PageManager.class ).getCurrentLock(page);
             if (lock == null) {
                 break;
             }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
index 5247c4f..8c377de 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
@@ -20,9 +20,9 @@ package org.apache.wiki.plugin;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.WikiProvider;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.plugin.ParserStagePlugin;
@@ -33,6 +33,8 @@ import org.apache.wiki.auth.permissions.PagePermission;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.preferences.Preferences.TimeFormat;
+import org.apache.wiki.references.ReferenceManager;
+import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.util.TextUtil;
 
 import java.text.DateFormat;
@@ -83,7 +85,7 @@ import java.util.regex.Pattern;
 
 public class WeblogPlugin implements WikiPlugin, ParserStagePlugin {
 
-    private static final Logger     log = Logger.getLogger(WeblogPlugin.class);
+    private static final Logger log = Logger.getLogger(WeblogPlugin.class);
     private static final Pattern HEADINGPATTERN;
 
     /** How many days are considered by default.  Default value is {@value} */
@@ -155,12 +157,12 @@ public class WeblogPlugin implements WikiPlugin, ParserStagePlugin {
     /**
      *  {@inheritDoc}
      */
-    public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
+    @Override public String execute( final WikiContext context, final Map< String, String > params ) throws PluginException {
         final Calendar   startTime;
         final Calendar   stopTime;
         int        numDays = DEFAULT_DAYS;
-        final WikiEngine engine = context.getEngine();
-        final AuthorizationManager mgr = engine.getAuthorizationManager();
+        final Engine engine = context.getEngine();
+        final AuthorizationManager mgr = engine.getManager( AuthorizationManager.class );
 
         //
         //  Parse parameters.
@@ -268,7 +270,7 @@ public class WeblogPlugin implements WikiPlugin, ParserStagePlugin {
      */
     private void addEntryHTML( final WikiContext context, final DateFormat entryFormat, final boolean hasComments,
                                final StringBuilder buffer, final WikiPage entry, final Map< String, String > params) {
-        final WikiEngine engine = context.getEngine();
+        final Engine engine = context.getEngine();
         final ResourceBundle rb = Preferences.getBundle(context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE);
 
         buffer.append("<div class=\"weblogentry\">\n");
@@ -288,7 +290,7 @@ public class WeblogPlugin implements WikiPlugin, ParserStagePlugin {
         final WikiContext entryCtx = (WikiContext) context.clone();
         entryCtx.setPage( entry );
 
-        String html = engine.getRenderingManager().getHTML( entryCtx, engine.getPageManager().getPage( entry.getName() ) );
+        String html = engine.getManager( RenderingManager.class ).getHTML( entryCtx, engine.getManager( PageManager.class ).getPage( entry.getName() ) );
 
         // Extract the first h1/h2/h3 as title, and replace with null
         buffer.append("<div class=\"weblogentrytitle\">\n");
@@ -342,8 +344,8 @@ public class WeblogPlugin implements WikiPlugin, ParserStagePlugin {
         String author = entry.getAuthor();
 
         if( author != null ) {
-            if( engine.getPageManager().wikiPageExists(author) ) {
-                author = "<a href=\""+entryCtx.getURL( WikiContext.VIEW, author )+"\">"+engine.getRenderingManager().beautifyTitle(author)+"</a>";
+            if( engine.getManager( PageManager.class ).wikiPageExists(author) ) {
+                author = "<a href=\""+entryCtx.getURL( WikiContext.VIEW, author )+"\">"+engine.getManager( RenderingManager.class ).beautifyTitle(author)+"</a>";
             }
         } else {
             author = "AnonymousCoward";
@@ -354,7 +356,7 @@ public class WeblogPlugin implements WikiPlugin, ParserStagePlugin {
         final String commentPageName = TextUtil.replaceString( entry.getName(), "blogentry", "comments" );
 
         if( hasComments ) {
-            int numComments = guessNumberOfComments( engine, commentPageName );
+            final int numComments = guessNumberOfComments( engine, commentPageName );
 
             //
             //  We add the number of comments to the URL so that the user's browsers would realize that the page has changed.
@@ -371,14 +373,12 @@ public class WeblogPlugin implements WikiPlugin, ParserStagePlugin {
 
         buffer.append("</div>\n");
 
-        //
         //  Done, close
-        //
         buffer.append("</div>\n");
     }
 
-    private int guessNumberOfComments( final WikiEngine engine, final String commentpage ) {
-        final String pagedata = engine.getPageManager().getPureText( commentpage, WikiProvider.LATEST_VERSION );
+    private int guessNumberOfComments( final Engine engine, final String commentpage ) {
+        final String pagedata = engine.getManager( PageManager.class ).getPureText( commentpage, WikiProvider.LATEST_VERSION );
         if( pagedata == null || pagedata.trim().length() == 0 ) {
             return 0;
         }
@@ -396,9 +396,9 @@ public class WeblogPlugin implements WikiPlugin, ParserStagePlugin {
      *  @param end   The end date which is the last to be considered
      *  @return a list of pages with their FIRST revisions.
      */
-    public List< WikiPage > findBlogEntries( final WikiEngine engine, String baseName, final Date start, final Date end ) {
-        final PageManager mgr = engine.getPageManager();
-        final Set< String > allPages = engine.getReferenceManager().findCreated();
+    public List< WikiPage > findBlogEntries( final Engine engine, String baseName, final Date start, final Date end ) {
+        final PageManager mgr = engine.getManager( PageManager.class );
+        final Set< String > allPages = engine.getManager( ReferenceManager.class ).findCreated();
         final ArrayList<WikiPage> result = new ArrayList<>();
 
         baseName = makeEntryPage( baseName );
@@ -442,7 +442,7 @@ public class WeblogPlugin implements WikiPlugin, ParserStagePlugin {
      *
      *  {@inheritDoc}
      */
-    public void executeParser( final PluginElement element, final WikiContext context, final Map< String, String > params ) {
+    @Override public void executeParser( final PluginElement element, final WikiContext context, final Map< String, String > params ) {
         context.getPage().setAttribute( ATTR_ISWEBLOG, "true" );
     }